From 7083653661a6efbdccc5195a4ddc36bbb869e74b Mon Sep 17 00:00:00 2001 From: iamboss Date: Tue, 30 Dec 2025 15:43:10 +0800 Subject: [PATCH] tune --- App/Hi.WpfPlus.dll | Bin 68096 -> 68096 bytes App/HiCbtr.dll | Bin 113152 -> 113152 bytes App/HiDisp.dll | Bin 11440128 -> 11440128 bytes App/HiGeom.dll | Bin 411648 -> 411648 bytes App/HiLicense.dll | Bin 81408 -> 0 bytes App/HiMech.dll | Bin 728576 -> 728576 bytes App/HiNC-2025-win-desktop.deps.json | 151 ++-- App/HiNC-2025-win-desktop.dll | Bin 861184 -> 861184 bytes App/HiNC-2025-win-desktop.pdb | Bin 326828 -> 326792 bytes App/HiNc-Resource.dll | Bin 56320 -> 56320 bytes App/HiNc.dll | Bin 355840 -> 356352 bytes App/HiUniNc.dll | Bin 180224 -> 180224 bytes App/en/HiGeom.resources.dll | Bin 4608 -> 4608 bytes App/en/HiMech.resources.dll | Bin 4608 -> 4608 bytes .../api/Hi.Common.Collections.ListUtil.html | 18 +- .../Hi.Common.Collections.SortedListUtil.html | 52 +- .../api/Hi.Common.Collections.SubList-1.html | 20 +- .../api/Hi.Common.Collections.html | 3 +- .../Hi.CutterLocations.ClStrips.ClStrip.html | 6 +- .../HiAPI-docsite/api/Hi.Geom.MathUtil.html | 30 +- ...Hi.MachiningProcs.ProxyProjectService.html | 31 - .../api/Hi.MachiningProcs.RuntimeApi.html | 66 +- .../api/Hi.Mapping.CsvNcStep.html | 128 ---- .../api/Hi.Mapping.MappingUtil.html | 674 ++++++++++++++++++ App/wwwroot/HiAPI-docsite/api/Hi.Mapping.html | 4 + ...Numerical.FilePlayers.CsvRunnerConfig.html | 16 +- ...Parallels.DistributedQueueTaskStarter.html | 3 +- .../api/Hi.WinForm.Disp.RenderingCanvas.html | 4 +- .../api/Hi.WinForm.Disp.RenderingForm.html | 3 +- App/wwwroot/HiAPI-docsite/api/toc.html | 3 + App/wwwroot/HiAPI-docsite/api/toc.json | 2 +- .../custom-implementation.html | 6 +- .../build-hinc/player/player-tool-bar.html | 38 +- .../brief/dev-doc/release-note/index.html | 13 + .../output/simulation-step-output.html | 2 +- .../zh-Hant/script/Mapping/index.html | 105 ++- App/wwwroot/HiAPI-docsite/index.json | 43 +- App/wwwroot/HiAPI-docsite/manifest.json | 16 +- App/wwwroot/HiAPI-docsite/xrefmap.yml | 241 ++++--- App/zh-Hans/HiMech.resources.dll | Bin 13312 -> 13312 bytes App/zh-Hans/HiNc.resources.dll | Bin 4608 -> 4608 bytes App/zh-Hant/HiGeom.resources.dll | Bin 4608 -> 4608 bytes App/zh-Hant/HiMech.resources.dll | Bin 13312 -> 13312 bytes App/zh-Hant/HiNc.resources.dll | Bin 6656 -> 6656 bytes 44 files changed, 1165 insertions(+), 513 deletions(-) delete mode 100644 App/HiLicense.dll create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.Mapping.MappingUtil.html diff --git a/App/Hi.WpfPlus.dll b/App/Hi.WpfPlus.dll index 4ad9e39358e16e145a3cedc0ed9c5254d995fb49..bc187811f73f856109eacbbde1a2cc2aef4497b3 100644 GIT binary patch delta 312 zcmZpe!qPB>WkLswuHch@8+#-q8KWmJm9%7xoqS(1nK5*;vy`o{fEmk*n$KsiyDSQ2 zzx-0=#l_7NblF%f4D}2c7)%%$^o{il^(+mw4Gb*IEX|EA3@r@I64MNgQj$^<&67-% zQ%wy_Qp_xp43i9!Et4!vC!aGiW0{ipblqeQ;{X8xuSI(p*FW)JbxprlY(dZ5$r;8T z3Q)oNS5QHaY6f{(UiV!xZ-v%wcbqKfVz-&kWs?|88Il=NfusS0 j2~f-os4@wtCJD$-2I@}&@=d3QvN4(hE$C)rEM*1&O4wN` delta 312 zcmZpe!qPB>WkLr_Wys8h8+#-q8KWjIm9%7xnS5U|nK5Luvy`o{z}fOeJg;h7eI{LV zOQ=0$sJD57E*qag9#&pzOkO6o~40ynvsclYO;Z`d7@=Xa#EU6ils%eiBW2* zWs0GhnUSGUno)A9QIe6_8#IGiS$<~Z|hf1&M@{+ zfC|om34&BN)|{Io7WV2sgXbBI$$~C+oB2$xoa2mQU}RusU|@*a{+fw#IU}RN_Q@=a z`HaB^4B8B73`Ptl4CV}}49N@z48}lKB7-GE3XqosmP-NhEPy-{pt@8b1j!jPm;s>? ekTwFVNd}4=0o5BZm`x95V>AU?(9OnJ$_xPW$XtT} diff --git a/App/HiCbtr.dll b/App/HiCbtr.dll index b53fa91247cc823be46ae58af7616e401de91e5a..4732c5bd0522d0600e5439cbc4b8c23328b98306 100644 GIT binary patch delta 403 zcma)zKT88a6vW?ZRO|v`l_o+YMYwbK_U?8UMRON&orqwth$8ndX#@)u+f*WwLbyVR zWvY;%h7*EC2xw^|v9Oj1`T^3}xaJdB%#V3*W@_Wv+IaTrB5|Ke54-hq4>jWjKbt_E zc(wXMQ6rwaX(drP>b93rDSB^jq5U}986mS8o*a~R91d%nN5Sb~xDG|kc>&u6#kK`g zbVn~Jf@+$=s9+|w9Lr)>oWI@3WK6qYV8gH#!@;_u3r-cmnXXWcabZ(Z)Hscr!=?Wf zzlZtc;`1Qwoq1OO>vHcY*XYOmt)65=#Q-{j6{-?dkepWGZV6sqZuo?Osb7JU( zFyRpqx&{k8(~W;dcdzqhKrjsejMVVPj* nLiyv;aUfuTE=hoakS!wlw=v`$Ojho7>JhOS0xIC>Y5Qb+pDt19jD-tMAkE+5y42oWI&a=A+aeqfZtWTkw->om9wIF)cL#9-etAxrJ*%UVomS)_rST=1~!lIUC zayzR8l#6@oD>+-j+~SV6zg3(Ml8uE(#8#$d3ez+s71UrfB@N3Wwjl|zGlV75l-T}d zXYzmIXD1o%Ha0H4HmB{Ao40N09lQqer5YAEjsX~g85$>Xg=3TnMg?&g#U<_$>2l>L zUZT`-nTNSk5DGi07<~7xpGWh6U=RTEt>6~52M})Uw$LhC#t;Jv41^x4Hv#95FqD9U rr+*2qCZ%(wZ%JEJv#Tu+uudE(=$_L2YZOl>?vNP55C`nPf7E^e=QnS4 diff --git a/App/HiDisp.dll b/App/HiDisp.dll index 55803677b370cfdf046cdecc9c07055fcf192c7a..a5ea51189b217f05385c567e1e68796dc0e1ab40 100644 GIT binary patch delta 5931 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%0As~tHpYpI z^xz^yyg2Q(PUM*0Sjs&<%B+Cb1(F>mkB|2)^6*`NPUejY06S;yy@-8q9lr(una4;cHeHN>ri+}XQG1K*JoE7o5S(fUXN4r4(3Nr4FEF}s3t~S!LrX4jC zM;LCaDWUDn6eCIIj%-Uc2Fq#Q}IVJz^~rD&Vi zSm@hJHwkTf)ThQd-jEM69q%IF2hzBal!nVR4LR~=4fXOa4fn|f8rDil5NhKpn|;fM zI6BI=o~xL?KXH{UzRK~Ax83(PSJ~z}Zs&T9?Y>cVoY&att7MzyYi8SPzQ@?M%eS3v zulsg8wgE<`ua}LxeL_}bx4mi1kdZlURmN1SI;SmLKV2=%ZTr-1EiP#5iW^o@Ja$ZR zWl{E+0>3}Iur$w~T~SzBnO#}rFAe1T3yX^L#w?vQy3Lw2ddq|58C8}3iZOYC((J0z zl5yFE1^$Zc(m+9Jc40|zaaC!-xPs!bW98?eE$LN1B=S-H@gO2AM2@Ji-=?ZGnZ0@D z_?3}!^Y31BaKAONWy{e(sXr%Ah(bf;7UbmT1pFiO8Vd94ii%1~3T8Jp&T1@ZC@#n= ztqeDUM2J@pnoYg(rXs|7Ld1?{^p5NQ7-}%*GSQRJGzA8>WLMQbr$_CA%BDX QX2sSbDvwxH(l8aW8ex}Sg@;<$(fVaAp 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 WBsB^CrZ3(I>caaghSG)KRsI(hpKV6~ delta 10346 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 SH+`{sU^?%s=t?^OTlqf*A4b&x diff --git a/App/HiLicense.dll b/App/HiLicense.dll deleted file mode 100644 index 4e565398963849d49d5f0f8e61988cec3046af58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81408 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%0Dv;BKoWU69#_~MMJS$Y=K$$2D zZO5>&8opPDGYU8MkyrU1e)tjJqmMo&pM5L+EB<-j4xc9Xyp-*ePe1iNg1N#y=Ty8C z#5uudG4!d*mU#E`zx0xm_~)~S0sRvN-UnQ#_UV*?=LLb68WV$O;~fHZ#za}1mBw=t z&Ii8Z!}lIJe|b)ED*h=O&$4)az~}rt>#D^WGM=mX*FEwrOU54LpVws5eoodu-hUK>2M^}EDeL5UH_n^o*}lQe(k8WuQ$dyHaC8-qrfRHdn%?$UDz`IDg6i zr?7ve|EHdMTJldilku!YK5O9fNnDh{HXZZ#6!s6CV#J6Me1BkF;CYdJe}-d$i|Ig{ z;#iP(RmL$;{F86Wza|1Nxdo-NC zO8<&~((%W$kc0D?S6NxvA@ClDb*csb7*8?cyb*k-8vNru7QD-XXQ2LbR3!_?0q=0h zb2Xkz@56h?dmCk8Jy&%Ou?`nPr&I`(<#==?Y zl<)q~|F_UTaNT#`{W6YXEURL4%E9qKY<38`kHcA63;ol6F1&CQpYyLnj4z-47~`io`wwaov20fISQYf96fqe&N;>d zf&BA13wc#@S@|jT3_;nEnj3hBUB0tU{VV^&=iU!K@F3m`T`$LpF)ibB%D~HxcW5gr zDh@&Sr{q6*R5ITiT!*-s?^u}^?YH0L8Gmd3`F@s~+kB6Za&R1I$AROa z0{0o*U%>7TVJ{U2Khr}0j6cVW8N+w) z*6}&%QeJq5N4vl?1sS)$|K9tOf4--{vwG^E_D}oanKk{Z^ta%dvTzKP{?*)|EXJIu zm1_WTJ+b!*ocpel{+9kp`6}|RE;SZ2XU;sdX6>4|*3TSpUMt3rACLEzH?1?zuZ?%! zpm)l^?_RwB-ocajr~Pw1<=L~rKi53I4{ON4cLS771&#xry~use4cMbmHu9|2Jawlm zyaHvwv${ig77+(Mx6nVI-K3|d^E(9V7_%rDOi3#Mp(;Qs|@j z?tzS<;A{EZBruku4C>EDtY5&~7yijwSWwa$;YF?0cC65{h zB?tGbc&>d2bM#O7S28F$Xdi#XKcC(4qHMG&es6_#$Mr(SQ30`(vM1UZZAbCXJN>M> z)Hopv; z=g9YF)K~<{q2_w)HG|`TXSIjGdmQHJU*ccM!8`4nYb||`TE9-mKgWu7e7}kBk#Oyk za|835^Mmsn-(B;s8EQ_byBd?gdBJhOJ6(ssdmQZiFY!;kD;bnc@mV9^=i#1-wn9Ez z>!18{UNgqvnn!uD$B@s*)ZCzL@%vS3ZYZA{I2N2290$r#U0s8@<2^0^W5xg{UiSHSy`Ahq6 z%|G|Rd}l$$3f#Z&87{}b|K5Z-7OiDawnRB#gZuCdwsY%um~r00=YRt5C$)#2JF!N* z2|j;Uyz@?-t31a+U6hM4Dc3R14PK|>pZe$b47mRV4>BfE@vYpma&BP1s>UHu4%pUr zh>Nej^wJIeaJH-Qyx~+ItV8nL6Si>%Y-t7b`-S2;kbgB6l!4{Eb4<7=;Mou72H#T& zv>(c}^Uj@eEu`MLPvZKsGvDdpzT`5zSGUOA8!nS` zeM5LFeC+KV?6PZ`u#}S9xVuDkkJ!f_o&sL&<#-_8P|!KR48tHy?RmUA2w|0w$!eb%9` zeAb11^=WDSH!I*HMZbRi#BI0T)&p~63Fh*rir+x~ndSu^t`3xzuDlYlr~<|5Y3RyE?)9J9zH-NC?*Q3DEPy zm>a+0`T%3ofVI8L*=L_EKK$^*zl;9=NI&dh1lCjf+m1NTpN{txham3J7-Ri6K0e>^ zMOdmZp5OH}?uYRL6Z3e9iFdqgB=3BgiTUsF5)$uwg$UstOlbgUCh(Okd?yQ^o$@D8y9vt>r>AiFEvjjt%b}IWgzj>URs`B1V0Y|Mj&g z_4P$xG~|7F)vIeSdm^@t-5xYB_Q&t9ir+gUBD7n#YhI46KK|Zs_skM)HdQa{zod7! z_jmt8OenjnedwU8ubTJ8q4!68aqYt&k2rSXlQ+)4@1Xa#M8b-!_xhF32lBaBs;M*B5 zSIwMxQQu{gUcL8+>%S|!?1$GEW_|YMm!W9@c3IOcx>s?AbipC zhWqdDgf(RR*_$eBYlokI!3BL7<$980k1xlRJ5e^+`S1CUee>A5yEjkTAAWem=FdKJ zR9^koefQk+My_gs`0fq-uP*E+{lLSJ`^kOPWx{Dgri?wH12Nr`AeV6yYHcg8h^z;;5n$^!$%)_ z=(e;S6TjROIqmIU%bGs?*8?3#55CGGVpm|SEqbVRDSpaj+T(}bd+*;*Al|QdzHIP& zuf96#g9nPXM6X=xU-$1{y=8pw z!#^H9{PWyx&Z|G!>b$!Bn9;8fy)j8k-7&HMz=7vpIPaHlyOmc|ESghZ{`t6wr@r)U z?0Gb*cl4@n9((idnBx7N_71pW+@*0(eDeLhIS;3rFf3e&7AW z$49+~_v}4;X3bh__A8_bFK}|&ZFX(pQA(;qZ7gMu=)AfL9)XT%3Y?zpAr1~(xV}C< zR#|0jhfj`LI792}@4-?$nzGKigP2Z3x#Wuot=fTAVJ5}73|3L;kD8mEy_#F=k6%0R z9}TDqpd9j0*D*P*E{>eRj0QKfkbWnFm$*)XCY|5LO$3U^@F^6otKr|jpC*v=BOu^m z0Vaf2{+7kw7u@16LNsD9Mbx;XA_O#VOXm~9*D9*6b}g-__;ujz<#n+MUGy(t(Y*7=NxstTTi-?YTV$M38iHRAs~8om80o!2Ly5Odi_azdzZ z=f03;J((6Gk*t~7oEit|zdap}KNIj=AvJY%Hh6@D#luXENWEZrQ5}fj!Y8H+S65dO zP++e@pt>HIT3S}WQe^(GXlq5X-PlvD9fy&DSblmu{N+nbFPQHC1XJC?K|z-?u9PA_x? zGZk%ZSzdH4uK}|}7%5*E52u5^&*pADglKbA0}l=-cPI@rK;JQ;4*?KX+#(_(?Vcb# zIfjHRIZ(db3r}VUPK+FtvDCmQ*l8ZQQ?llm^%B~4V@t~=FUSW+Kv!vJlr>Gw%=j<# zn3JnPKFG57@F20MZeXU44eo(_;R|P|!`apr?X_aJ#UHz;o*_BI!CH%hD$yShSg-y( zZ-YG=v?HO9zXiVnMYH|;xB5%@!X*gKi$oYxn8NRQg-<|Waaxnk#%7PF1o7~_=F_LYhBqCjowxTVUr*25M}D-1hK3?VqakUl)ar!@kG9c;R4V~T zA8+qVA2_k2kO(e+cXz*VKiyy84yLw888TSrPRz}v1OJB~y-e`Me*iE;KGoG7e}>-- z`AHHmp#!9YBbA`aN?ZG1HmeKnBYTv$RkAY+YuurWxicl- z{NDTvs!ry=KhHluOXWq7*zhSA>k0`ATU%LK6_uB7t-)q6?CkI7wLBR*@J~BdO;?48 zSw1~C1MaQe-PiXt0QRj1(gAgtKl*>;-35Uc@~To4i7{M=$@3X=MAg7HdsqZw7nKd6 zV`B39=g)`ZGc)27V`GOwT~>#uMdRE45PqpL4Gmc-WU`6&K0f4{nwojQVstb@qIm=o zV+eA2xzkKnH!L~%_St1{%OU3Y6O>P{gUHAck$cgl2)hgUE4)iOEOdCRy=F9njsn;r z4oH{J;V5@$2mRK65OR8OwLr5)Af>HGKf|o{G-(HD30nw^kZ0cBe=p(jKaD$*LcG4M zsOb9kjQ~*qj(Ce|3W#F}biNU#RCuFJl4oOp4%V9X6)mrH{%BNXC6^h>fG}b{&S;=X zO)NxiLMVGgwZFI(vtudVnCGP;b68o~o$;SP|6`>kxHk3lJc&vgT$j&$Xim);9-5xg z)1v@IB*@>tDHu+x#Luaz4rdTrL%W~T$M@%5G*|Tq;IWcmvnH$gwOPQw{PFWAGkMI+ zLzG)6{4M7duN2G;LRvTpCQsJ`(XZ%@s1=_wi-x{uC=%Ogb}8pS*xP%eqM~w2NJw~a zE4=Fz0-6xo^y}{GtKZdmAzQw|4l~RgMJZ&RY<3O~x8z^_hGw#Qes1nO3LG^(km$o4 zg|g%pQcZ${kQI+D8Hqwiw-kh^KZVJWv=1DoI;pl^P|Nr*EhSSlKV3P$44$imoHwM6 zDUCc*C4OIBZF^H$0C=2&_}+0CNnvrOh6v$_;4tFmOM;(@VdvsPKp)RuQ(Jq~4Z*xL zH$CmQw7L0Mla-`)#N2dO_PN~HH$IB}<>;HefNWB0JiN$>V*bogfMTrtUp6T{@0Fe4 zYenXjr=y-%C*Lfc{foSXn9DhZF#j2B@h282b_Xdj8gw=X!1mipj0uj-`j_ zaMTCwzWd-i$~`J=G+_w5`}N6?K^6~e%b@(9_KRe01U+`4=XP@(Y(5Y<%kaf~@$m2h z_kc~0Cm~#C+!Ork zcNz3gCD#w?G@Z4mMOOBCKLo|WY0uUP#M+lN_b)bgGs^rqF&M)`f%yZ3M@1G^2k*Eb z4Q*Gk)@UZwGyPc8w9zxD^+#gwKZEBvha^qLPXsed9J~CrwMV_QeMf973<0t8&ZB8BfnBes14QHS;K3$nNVE(v(FI zp>_+QXod@52;m=&y%5!Kq-HFTLwkQ+{%!5AU!k0WU}9(AKjq1luCAWk4}0fybaebt zEjiQba5|M>b;ifWmLYKlodPd$%EQas23fg24I!O6SYfJo z!A@Z)%+QUm%9MaS0AP4}4jYUT-*3x(>t9ax#>(e2Sga+J*kt5LI&cVu} z28L~gr%fyYz6_HETm05%D*mYP`8b6bKKl5%Gg*6kHiVduNtM_7bW5Oyo)!9#drX)) z$-g+-YxaBjK0)-eC2Qkx)zthWvx{`{{Urmh6x`JkQUB$pBi9I$#+$ z-uX?fOvU7x!0FmuaGt9mL%mJv}sh1(;r>j;;|R?2er zepFqzwP!&coa!Wd(Z5#9LhE&H7u$G*Z)aatJ{){SZKS$xIv(J%&fYAeSJukqA@GCg zc|bt^4Pa6QK=Rj^$H%mc?A-?M0cuTenXss6$jrsX#VG`B;Nb7ym0E`W(19RipDd;w zXZe*fES9ijY50BFU`V*Uj`ILU#-)w$GG*UbMz)#x@hDu!X^c z!Nv#$y$ICt1^lQU2AoLw>$VRc_Il)BU3-#^?tdOMvp|u2{s&7s|6m^w>`ngcaDaaA z=;DGFv5P&5a{ph80rP=R>pF$XC^iwRmedNmVtK0Ok^HyOx#%Ohe4XcU-%bt&B%=a( zO3k12&9t*e;cHGrl)gytt?jhOe_3YE?dE!KaTyPSSzWx$^a#kv$b7UrRatFR za2<6?rVurzq57UWIB3Uf-=&VLx<4Ln)a30lyVVFNWXj2^xKJ=Ir8v$^jwN)H%^0cP zot&D=hK<(_?^+Jo{q+kO36AP|W1c%eOjkW2U&QnO${C78`foQcwnHOoZ)Ro|5&+`Y z?%A1G!f2dl;-fWY%FsFYc@3NUn0%!D0(j{Hc~m6)tjr!&e4fB8b4lIrS%5dhhQfOCU~1m0W% z{CttWbHeOOg^^I%z9SFcaL0y>W##V#&dj89Jf?EviEQStWeS&lX3V1tcW{T4miE9GM7S)ujbT>$Xl z3Z1}p8VGvIg2L6|re+$6YbPI{0RWrzzpb0RlUX%J1D{0%xF-b)erBI(Xaxs0~ z+}*{CXOQ^`-?LqimY_p|6es8gz7!GJ3<+tv&uuBn*?K_ZtBzd0CG!fr=5atPgwz1+ zpQNFok%Ex$X?#1Du&7B!Rm&bp6sw%5%IZ`Af4@jTlcc8Yf@Y2W@epM?R$06|geI~t zVjj2d3?|4wUS3}Qgim4+gU+KFuF#ARkj!K7UyBuGCS;Iq-T&H7;?GCc`Qr!a%c!WJ z{OgOYCDFTgkI(>8SHl-UT2CYXq zP!A3fL>(>Adr2Ogb$XT}ptlZ`&X*P!M}9Atx%}li3lv8)p!u|u6Hkd8j7~Z8rq@Yd ztJ9X!Z$Dl)MFrpncmae-m z04Hma{f6whp{(kwJFfl>riUQYWkkulK6s&=p#@)@9Z~S{@dbZ{<*}SuT5?ruLiw+! zL`;kmB`?dAqhhNJXY}^6`nR>Cg7$WLDJd!7N&d@lE7A%IlIrX4hcW1|*RQcPw6)ik zmk|KutE@C08f=PTm&9H(zbWKch$~Td{SO%!7a0;5=(O|zpWR{BQBk>NYHB(*Hx~m>H~j6}>iRlsJolJO z4%M%|RD{(D(@pbtdJd!qRib2dsF78)A~S4Wrt7n3JI{OoP8UFDW_x35@CR^xA9CCM z`}eEP)A)HBlu;C!i7(bdF5+vOo1gnSJMTTaX)K<@|A~@1yNM^ZzjmZUj{I`Lz^`Jc zuB7u@?0(@Hbg$5-%lrC@Qq$1fOY+?|6>|-}UV!I=b}gdETGIa*9Zo&uFTT@)Qr|sh z{6}~5!iS^^&fmcSgH;QZW?)Xl0t8Ddd5fNDWikt>LcnFU9UV*Ukfz#LSXh=QaU!o^ zmS}4fhlv@Oqar8^5!#JH9up}IdYfBY0D-eaMMbZ_!(9zBrWO|TQ02xQ8;T$5%g){+ zKu7hNzujb+guO)qjvXee7~yNok{@%H_DMQ3MTKv06z?v2RWnQxjdc-1W15MHqN z`}-~*KYyO}MTzKrLBJ>$__9oEd(7=(q zE`-|L0Nq`ev+eCgM_j9?PjP_CS%g#8(F!Lq406@!`>Lw@PY2PS+{@4wBd{Bc$+9Ru zq_E^^4P_6~N|X2HkQTRRy-(xFmK@;NHO9=ep+dY1_cDSI zJzNfA#^(8RYCxTwCG%(#9|umk45YGqiz|IQL$)wv>c$i7W8y8=aMGr<5j2qhk7NT0x)>)OUfM*_V0xH>ygJrw9Xq3r}P z9m@j;aOwuAP*70pfI9CSIyz$D^{#5|Ka(B-x8PtGhjx^jOF8Mg{`T26*(Y2flZhLB zbtK|RkIc+spmzQ_JuNOQ?0S4MD0!=)raX||T!DM{!XqOwXc-vH zj9-+QDM>GT@y;Lc#!|nn?Qw-xEv0I!^o5-X-KI99*bgUH1@pziCN6_Q zT>ecvH&gHM4}!pQ8>o?*hKAGsAiDC2<%ieEOX!xwFb*rUgKz*QIKzr9)j`L}3*pQH z&8Yw$8h|E|ij6uY_C~m`%pA>w2AX`l!G~8d9h(F04#|dC?}pr9A22a7$A12NOo7LS zQ@uMy;o*GooZ~Y6>9u>{&1M6E@G4J*cAbfFq>866!@fSw(aAs<@6{1ytn!{JQ7rzT zQpK|5r{=mk5_zoM{e7E|kPd%f1kM4McX$AcLUD7&>|Yw!R^pDqkE=Ar2%xA}PLNM; z9E$VM))3zCZqFPX`V}OS%te}wvr@M{dDdrqY~?Dmc>3WRgg!oK9HpnH4;G=0&BF-qDte=G zcVm_eAvI90o&O&%KmYX{R5gA`*40uH5@-qksfkmY4YSfywW2Qjy|p7gyu*;5>NLfh zU7$$&)X`B^TbmG)yN;!$Ye)ai>QQ6}F?Z-eS;>VMZ${sPDQ{rNZUhWx-VYhMxxMrA zv_RrI?}kb5_*7p=rTSNAv0S*u{nURZtQQJN#Yc|xIWKvPIJ1lgoBg`BL*35ZzBTt- zFBMCedjtfer0Av>7q7BFg+I;9&AogKg)l0TsN*%wCb{`e>ctAf6%!n{=g{nQJcYlL zfHI&AKTmjeWc?-Ce@ZPWIjbQ?hK4gEBA$k+?g6<`_(;3dux=+}v}jb=BP&7oBL-exRWk(shDDn?Ee~O<_gAy|i+DTX*npcjVK!wyQQ`RBtrIG zF#$hV@6&JqT^&IA8(I1t^^#P*zt|Y!4ZXY!0;*}Wt4nSIj=bm%cfJPBs5baP_^P-4 z4O-HNc3a*z+BY51WwbDnDktr%4yvmuf8L1HylsAmd;Bh17y`c8T}jC|RaJcb{>a*m z&$b9Y=ZdlJ;w5|aDkt}C3&L)x1;?k(ecx9}pv9+<qv6G)H@qD~!m05`E>&pIp zKRGM%u*Z?b0Ybv@wv;{3Q4>Hcexo11HVX(=9x4lq-; z_VyUSI11>;qOcN)LP&5woHXpd>&z8H&|qTXcENr9 zJvnMzpW!$7Tz}~o&i~D3`P6h=uY#Dd04zxL((K|@)OkQahna?K%kowr8GB}KZsgR? z2Qe|RMo%}lLtjWQH`Mnm^=rl5C=(t`<3c`J>HeY)WcX_A{idc7nFsmRP(r=Eg(2vj zL$&wg9VjuWsi_5E{}L04CElyVM4Hjo8FpQ#$;rcD9TN&Ra#8!Y^PACzvJN7PVVa*l_X8z9Zb<8)zx@IOH0{u^79oY zK2qFh8bOdas{wdT!Xf@e`Yp+JUR2G|NVm5{JSgK7YkePOX#;7u$rnfT@Us=97iAR{ zVw_0YVPz7PkTx1tkH>6}8i2|)Go!gVqO-Hny}e4@P8m->D7&EhK3l(Ah9ts5hrSPg zLdbbhIw(EerMy-t?AgCMr%@;QDmwn5-zP{nKo6ozf%iT_ao+=n!oi%3*hS`I-oB;Z z<>-}H+q)LR4|~o=#~12l2;j>ZBOJw~q=F8hL=k?du3lQ2nQ_l(o4NmekyQ87Owp9T zE#4x1cKYfad%14zeGtGvHnMSY!UIz4ZB-S#0zOdJ{LXtL^_4(uGLaj85|GW0sj1@9 z(#X0UCxg5-lz9wBuiUqb1_dekF{JOz$EQ_Uahs!@)=cr z(!#_9*&+IKssnn>>$4lHGF<5(PDRTn^`UVaXL%z3N(i3w4`3Jm>7}LXMd-__!4UaF z^<<(T=`p%h|Cy_4DZPJ}CtK&Gf&B6YUH*`{K9x&n78X!f(497VZV}v6%js!H28BLc zzgzSK-xh>c9*c#fm2g0zyelU5>hot2C}_6O>Okbg1(e$AA-8=@~cd!HxI0vUw`bH&Ajvdjwb^(j`9>8dm zA$e9MeMAK-Nsx!fv4s%z<-5^5sq;7>HhhLYuPWjhZhzgAGjC`lD_NfUirf)Wt0)!S zGx#A3>C#`I>+Ez}8ITSbm>;N#M*pQU50j z_nNnjjl3D~1mE@-^R96_Rc-_hX(euv2es1C9$#dx)?{8j$qLRNJ-r0Lvef?h^G{74 z9<3ryZ;U*f@K9ue-n!?>L1N~?-{<4=^KYOnoo@?())E$<5zY83=DvI9UK!XHX{So= zH~coXL$Z-z17Bw4>^xGo``zK&=qMeN+@z-t*JJBX)GB%TqYk1*oNt^M-9-}J3H%>T z+hT=**b93kwlpzuGJyz2l|9~b4GHM-6wfB@MKv}z{{mC*OPN_&|5iX@;x9EhHa+n= zX;7=Hoi;f5dKU}@*dUHT;~*J$MsyRv6&3FI<&XY6cS&}8Hn?>Hx^OYTAjpK!^?ljj zuVN{A&NMb*pMygsBl?wpZpSO6XwKn!`3MZgdjrQj0YD5W7<6Xo$2j2SmAZCo5df_zHX-G3J+ z%*g$~h;7KPRuJd#EylbT_6;4g?f}$V`THD96uXXH&WV9!68)%l=5pbs=%7N^OFo!v zuj0T7MeskGa+Zzi7Ngzseb$tMYrwhQXV^ZYxS@W(Evl#ZnmhgHNKeZ%oTX!;57Hu^N`GTrlP;eV zHzZUR8TBI#XNY=52WlOl?$2G)MW@GK$U6rq8uxHQHy!3Kj*?3OQ;1Kxzm$=ks&s?8-|VMw z!>3sS8V)o*;-@9XdZZYgneIX}{&y%6Fh#fTAQ_L(Y9%u$P+UBu5(48CsMD*m(ex3! zSSrx{-=M371^nMion*Q1{mxLEcr35Wutup6U5~nLoo2LgqCx)tZPh4Xh$@NjFv08-16xINmeOO_ zfN{|HcHoT)YBlf+HJ?AfY-$n*#f*jIHA1H)tg6(hmd!>p&&@q-=a(4DJmru+twx}F|V?w zvu%tuw3beEV$Ac{=)9Db2SF9=A_EUv<_B{^N}+=z@p+Api`RA+xl!&_FgDlp!hR%SX6feWisf< zKVi?iVeM`3t@lpKbv_kI$v7GxM=MZf$s(nzOBhu@3ovXcB&U@$idQSJ$7J)DWf{-2 zZasWO>%Khnn%>;fGC#LQVK$qdd4-D0D6Fb9gB-7#0nthPYx&fF=0yQlFxsSQ$$3d6 zxQt-_1slNBY;gPTzqhLk#|N#OVYxXiQU`Ye$UKv0O6T;jR}m_Sp@{ z)@nU5+J&v?*Oo?iWp}=+sy#wX;x|P;^y{NhQ8E04YC!wjyr^=T1-IAyGFS$7u^y`KUVuX&Sp=*#TBmf|b{SXh`jWi>F4U5=v$xdC*H0`LoB} zyd>g12J`{v7fRW}Go^Mo%gk4w%~cipZmrJ;iV8ja+t8|i{9Ru*>lL^z;-Tfh!^a0V zOy5e{n7_Y)tarQKmoxD=W`2PKxS!F9g=0X03%d@(nfs*3|l&59c(u*FcY-d0xDv3Cq3yzJ6^V|e0~P3iNM1+KHR;ez z?49EM<725GG_XXrR6ZL77S*eJ2r@;p%=z*=~W1&qgYpVl+x=IlQRi`)~B>|M^WS-%Lw($S~Gx zv+@QS@^o-8S*Fm-Fg4x9Va$F@o|D5`C>X28ZS?RVSOr(UpU4U85bjscDI`GK0X!c0WEZ=k={I(6}jYRl$pJ+2ot9}sn!TA}q@bfdFt z8|jcg+^?^KZgc~X3*@mRwl11cGW2j`@im|S>tCqc+j9o$b=q308)4u=%n-mA`KBl^ zM=z_PPE0+jJo@7u66}^zQ1^O~f(v=~a$8?+AqNXT_{Zx~UQ_fbEd|3OQ z?QISiA%qG`S5l-$!QRFxPp&7J`LV~+;H?nJYpdX3dT0PVg?5+yP~tP*YM397d(Qsm z(;I%IFI_cv^Q1{k~e@o1xEL;!RPm`t}+ArPmG1`=Hv7D-kDf@KE>Jc+K@>~R-e4L zd{8bjDb--5!TgfQAT9h&_*+tzkbTMT3hIQau0(doLuP(+Vmp1WnLLxKyUcGCF+|AC zTt1?@#f%K4SY5>jN_-<(QxZpUXqd^KcUBRmuNz>J&T5o3<)o*jwet6;f-DP7K}{IH z%?Pn~TK}=ydOHq5WX_92UNc7D*g!I!UuoP)Bb6D_iWifl4H65?AVQdS02(Gq3| z6J^59N3}k^lkf>BA^UCUq$8?~(zx(8`uSiJBJdV#EZ;;F(tZA_9e@f1*06sNO9Xg|r9A$G6owuwq@hFX#Z$=hkG5``nP$3?4M}4!O0m^( zLjWqnXrj;a_oG{$Ke!AMqs}NjeM6Irb{%Z{4?n#S=+xu1AhYaoUP(So@oXUR_E2K5 z__0=b-z@#>2e%Wt9Ry3iei-Ea2$Cqx>UshI_fM2L-Y_BiRFwWBx;uPA8SHVehVs}h^M&GD}VizO3 zkGqW-I#eK#KmhOO&X?{VloSj%kdDuOHt5M=7xS8jlj@#(&;1{Si~d(;R2T!d@O16t zkMeW8R?<@YJ4Q$5=Xfsu`AZ0E1;zE+K+f+O9>#-1b)!SHpbCBVm^Z~dT-V7WLM^K~ zK5(+=;Izt6%fQ2*5~icZW99wcyn!R2H0;~u)KYkXXK&7IhGAXB(HPl{EtNCZ=^N}% zyRI2=ets-`c%JkKyUNRt*nCpV4o!fQVwr1Qog1}6R_fp2ldKuPDP$h^+>YoYKSS0T zOKnyXAeQ@pod#^+?&emY@gp&{xHV=V&=*k=$xq1qex1G|Gp5w3l`6RPy-uAw%6!$} z-ii4<4=$>FQwwwYzQ^rJq+z~Mum*7NFf?@j$36Ze-hp>Hb~rFgb~82g}|(4zdsZ^FZN;y*zaPJQk<+M2R#?^mKIA*4ABG(>I%b?}CGN<6)qIJ&L&<)1i6?tz_}DjVbw8 zej-YYmJbT2zC1!Sjbn-;?Q=L728H|Uh;z>_-G;=iMa0iprsqPs;HdfQ(^OVoULQe7@_;7N*(VvtZ?txMIG_|Zw*{-*HCg;M_LoC^MW>Cbzk1*2dbVuZI zr9!02CBW>HUQ5^UE`Jq+hL}V^~Xm+Dd8%%$!-tn$Gs?u`+cU4fm zlb3)S&9Ny3VL9LWk&2g|>AR*fWcs_Jq7Ft&7zyJRkJ3x!ierS=3>KKu45!C>eYbBuQ1dq=0Y_sLAqq5Y?4P+3y+ z8Rc4(zgxd}97!?Atp?)6;-wJ^jUtg%2KRG-k&3p;wi5rNS%&uM2 z+WH1&66QwB)w(54*3W6@EsQk1vH~lab6mWs=6%$-8VB`bHk|HfroCGY8ryQ5+G-c> zhzr~oHxla7te~h=o&WZ=%lUVS#^}^9)a-{bZoMa5pHo`J-?r{Jpvl(tDc5H_t+btI ztx524$+{4tkJtyF)!K;Y(ib?|;Qv8%mSu7!u9Cbag5#HZOplYO$ZUN=vfkJ_&z8~A zFN$yBnjfApGv8~&pJelyb zOj%i$A1q#TD>e_FT;>;{;yV&nlR{5h*NSxiC(sl~|0wFPbm!h% z!*fE8^=a)N52|9lC${rhP(NpWHRd)QW$(q08 zdAorll;$vV@BDb@g8deSVRn&qhAQ>lfR*z=>2u54Qb%jqfBo!LPgM-0GR(8?Dfr7i z*gMuSeIGZd^5-Xy(3FkZ=Rvq5It|hdWSTo#hl^x2rwV_OduRCkQ)PWIJ8SwTKK_O(sc!$rRaRc^ zJX9~bL2|g3Mso4>RtDdH#_p}EQ{J-LQyg#l*Lu(D;PwJYjuJKZb9yi{k*ZM5*=Gl#Uhgorc|a zp7IG(TMFM*!C3Q!z!TLiApk~C4&!`V(LnR`yV$;ahy6}XOG^ys-4k#4N%1+|M14=T zVuY0g1J9(`Vp;Jpypes%C}+KiY@MFP8(3jDoLgu-gnpZY3H#DJsDTw@^YW#XA9ef# z9lv|(X<$;AyC3{?nE%!8V$04j>a6F$-Co!%f;{usP72AJr|%IUid9Sy%H12h2<|8* zKzC*az8=UqN_y(h^&jAq?gL!6<-mvqSgTm-~D)`ghl^^p48C`QHWuvc>Q5&dzgIheb8@ z>^!_#4Ou@>>isbfHRs^!jT$^ib~W#1*U5hLGj5yQ;s>Ml+wNPV&MJdOx4*``TFS4~ zW@6xP7u&^FIbE&W*;;LGk>YRIO6O(n>Q75=XVyad^fS8GMx<@B*%!ZTCAjT)r|e0$ zs%a~-#rL2H#2S5l{Tl|TukR)P8(kEGW`fMu8S!%oBh(u>qt3}gky~yXswep(C{d_k zWvx{-?-2j18=m>%quE>W6x3^mIQr=6cXQSkdYw@R@<;ng4VsjW3A$bjk$zjBDu`~P z@UWzyBb-BFcB@zR1Nz*?XkoY&BL^kRmMb# zchgpb;qAuL2UZbx5050>rw_hyHV$|WiVAL&{XstN@9F*{Zt|J}-NjN*y$DekM(*L5 zAi7g>y0O-%z0ZTjHXSc1LZ4dAe{hAYqgaT`9Ti6gc&Jdvw7e7H#x+FDR1G?Je+>-O z(kGLj{&e6M5xym0e2SnH|F`Wvu6N2Kx>)d~0+yh!Px;0p7VsY)$PID1sZqtasq)PF z$Mp#x#Hbl&{_0y}8*wV(qYbr?EdO|nimEJ#UGq@yPm>)pxD-~#bCGMm)=IAV{Y+zQ z-S3eQP`-VuTlBSeAK-PQ;w`~YQKsFm+DoW3)dm*fZ4agybSYHado1g$DP4wceQ#PP zw^r2Lz|A*vsdOvzmYL}nu^rwf-noy*f<2+yL{Fp&WIaBb@F!tPIvS-L_X|0>z}>rH zZI?k`Y;@0r7z&>F7>`I-N(JSpdVJ;xox8&%gQgcZkG~T8a64dVixEAdq$Zj;(jytF zYg1EE)vvK_wG##(t+?CUM1R~O4DnzR14aQB)||c!cp}izHSQDGc2idz;Nt)CQpcyl zAa5M#q$sc5oW(fy7Yj@hd!S#s-4@uNI{aJ?TT*p$cPdAi-0w46LtY~Tm;U1?#P1@O z2t~`ogzB_w{U(HnV|vY5?jKKQbw?~>EwfdF1lz>>SVDTQeIY9 z+dNPMO+V>JolqjFJmT^5@$Xj1R_P38Lyj&1t2wggv(3v)TsAr4J`YCz5qR+EQT-Y@ zpy%JLev*}zIS?_N8|LuKogwLJvzOIiP_;7hZ4viZCU&GGjOBp?|G!@B1tU6{owG+j z+a~p&Ja|c`K0w*AnMU4fZW*t`5ivNZ){-Phwp6o#Rj76M+vjt$^a2MS)$Ur=yT@EI ze}X?ZElZkg&T^)vyl2fgmTQqc7Gm1SRi6-IRqV#h@?%l9?o{WJb0N}rklUz(_PaY{H=@`fLb$l)gs&=f zn32d5rvcYZJBI#yI$l$$@tH{Fqkf^e9U%*$$6y3_`{9EUSY4qf2DK&5SP18KCW7wr z+ZNN_gT2WyEKg)d1unC=AVILe*(MRhCbyC zubrOLaSr9Qf4wv|j9{7)t~^l4ZE+`C8!6_G>B7K~gI0E`#KED@$P`oM>$gpB^hLNUh;;X~ zd@S0hVn7DSE|CAT@S@w$MB3NnM@xeHNO}z$#WJaU=fR1>ln|&WP#-@gkdKX3;n0fSG@xA|{XMKM}7f5Ab5Ww065rW$JiSJ5YNw@-cf%ptHh5H`B zU${L06sOhQ-C?Z{8{$Y>#jl3k%OY3{+RC0J2%?|zu8xkKK)-^gpti0KE`h=Cui|&* z8V#Sf|; zLsLxV?D4V6b|Hw%e;C)cnL_Z3B_WvXaDEK|rT z;|cd&lGn>%9sp_l_s`^R6`UYxuDaCU-dk9Ya=mqv%n{S`PlfyMua!k^OgXUbm1qRY zhL@oRj8(&|Fn{f(wb7a`~xGr2e1Mc<3@q$DW5x?j(ce1>EWAy9T}M=Pc-5+Cq@Ot6t|=eKqB=IE(uHK?1dPxm zAqF^Z^B#cLz5K@e2~)W+YXBqEk0RumviG^zXBs)fVzew&SUWd1J(;$-KC_Dc^;db6 z*Ui0#&BfL!G5NjrOzdk}eYWtr^e^7Pb1sg$8K0nb*+_xZeBD^_a(R6Q8NH;;)cAxG z>C}VqCgJkG=3Grwj0G&^OPrF~>Q$A@zRW{xAG!Ar4%UF@hmIXAwA~Q!V4_@sQR9U} zE}cc5hTKAQgH0A}{ua#^8WWL=mOziM_H)04r3aK~0+e@Us#~OIfsHCH-YhAw#8kS~r^Dm~mY}d?$ z&-oZ!C%61ON%T_ecn8UXT;jYG4dBvH%v15ugO65okn8m zl*YuD-@mzF5=j7VeTX7tD0=tq>x$NZ`_b39L}jZx2`H$|x=tHY_WG$$4+q<}H#{d~ znuM}{Q@O)vHPLEnu;)mm{83oUn{qCjWbG36{I!z+om$R~7d(O-xuZv=6m--66=bU8 z4_=t)BBWxkId!x%5BT+n(NInoUdiA!6<5ADSkH?%mOY*tcmeZR8JU?~KYx;golM~V z{b+EFWh)SLZoW8C%5XIZUAlFvz$>zvee2xwFiu;LV1F>wylT3QHgUP=IBc+vQK>Vg z@%Uf>r?;I?%-71Ww@AJhWwW-!ekq&@q$z6;_}IakMvZz}y;#H@8Ve%h)HhxJ@e z&kC1}(9+WQaAZYcc*XAau%NAXzm{tFhb&qTbJI_2U#Hl(>5-<6{YxOpbakPCPgVdd zZE#40L`5aYsSvj?YRo_QuMe4Alj-Pvo^D#bp^e`^aE=Kd~Rys^fKM-ja;WTU} zARzJRm?q0Fq`YqPkPovaay53Cu!GrgY)0%3G6wERQ^K+uP&<*|? zBDmM~>TeaF2VrDj^;lDR^xHA9qbwAc=;>g5<{k`=R5rI##)4gy6Lflgtc5$LerJwm5V=1fEm>M z1Bwqjfsq>hwT(J9H|oskY9sM6F|q)gCBXS#VB&lrk;9-4<}y!qZ@}=;^N6x1HZV~S z#n;%xqzkT70g$O{Vv?!L%q?-Ky38RcK+@hRR=`<&KJPp@RnjrMdMl?)(g7!FtV$av zlo|5}^ROPOlRT+hbgjZ;w|iurg-=~JZ%ePA;q-eB*sL;Ep3n>Fpk?Txg(=0Lid~gv znUv^z3*Y*b^h`9_MMo~g3oYR6+@+fP(t@n(`+uL_%S1ex&Hpn^W&5-8@AKAB&YIfx zxZFKD9$p?BsF8)=w9YQ288LQEPI;C!$;wOGw5Q%D{VcOC;rOP-6X9FCqRE1^OX_Ev zGIq;hW?&G@fBix4{vQbwv~_x2Hady9vHxrDEyJq(y0+i7K%_)KLPR?^gw(9s(Isiww*2*tQ(#cTRunMN zv*o(os>*xa#aD#dUyPPNC`FRi6=PCZc_~8b<7+i@50M}*ih-FoDu(auTm|`cbF#O;pOKr32{I+b z?8}%~j5w3{S1Y_UiuV>3*)hmOq-tatN&TeqcjX!8$ME@OP-=u$0B1|8xNioxciluoib5- zAzs%lpNv01B!L)bt(qDu!Q(MD5zWkd-?^zN!$*zjjg8b07egse6pg8*DilN-gT+$| zY%Ge)?u?Teng~vYFypnG-LqRm^Vc}>eei(hCT%r)Cb{Ei_1%ygcIi(PBLcUG6o)gC zY#1M>^hIGHH8X^2tW!;w-dRe{s8d#2o29MpNK$xD*!{jjpi%{c0SI@Y1aBbN`uGtY z>O~F`RS5e4x{&aDh=)B`+qhF{?WzWetLpY@H>THuDiW=>(5VF5k<~(`_R?MhN(wu- z^}0twERb7MA5t@T)7+M+N(>9X=xmhA!O`Tq7IZ`Uy*h{GPok-7jTuj`B=;!1?%BDb zv6N#N`LX)_5oj;D`1ry=gy81xZfb3fC59!9^>TMjGslo)M@=|Z%+lF#FI97XB?rsm zD?_7nD^JWziFBLfDLa)1j`C5yPbOpC0*(<8W2sTCeqW5fzkJcfQ5<`0BX+Z;{EAu% zt|c|8egqC$x5+!(rGBz>3Zl;gAvk;tqyA(V5r4-QjGTNim%3>|odAPCP!5Bwgp+UB zcOj~w*j6crxm;h;FF4yv=JZPh1FQMw#uoQ>D6X~$+zmAmJJfL)?&`vZYbiuhRn^sF zV_>KuM>B%oInvnwHQch+lj0$I3QWvad-Ns;_xu`1HjsVOiI$xkrQA5B@7!y#3@;cx`eux*bDfG8%3jP z+{dbs>Vzy>+Ywx7X2zuI5m(V%7@JrM9bPe4V!SV@HolYjp=e8rgE4ls&Lu-O^|SaV zk=)L=&llDnJFqXdAa|xhH4c}*v3KsDi={;t&aMew9To+p4gl0p4H{^JCPsVR6&Z=J zxBI`jc0N(yX7AUyX_j#B&r?~uDX;Vuo3)TXy-`|-$-=CZ`8nK;8&x7IesAiD+)Zs`$E1Ey3*aYU-dbi)p=yLYHDzR{;|BW@z|%7GDtLZu_woXM&KrAm;acz=dF98_lbB<@3F*2-rTm7Ln1oY zMysAX{g!a4;_*}J&3u)jRebH*ecm)jYmPwHKmDG9hy$^?&pJN*l7Ih%dX|d|!T?`8iX2o~H^|@7q zMcEAHIWU^osUUE(qLms(tH3}+Iz34ES2Q5tpEJ`?(^54cDr@RH8w5tUyX>iB*wLEW5GSUDY;Y)-ni z?BAKi1VqyX|1wmt27#Ajg z%$t`gORGlQsKa5^P8?Y0tRfR_pnkZiD$Uk&g{CkplU_qb>J}am`QGOkQ~j3gmr=w* zx9+6%J2^p~$hzi_$&W#w&%-t0x4$$J#J)LQ+%vq0{rh`3c>dFu?#;zfn#PyEo#sME=pYBzB$;co0+dLZ~_qehMi`$hH*?i$CuWm9M?#-iR?Z;1I#^?0Cuh4j(a& zDb(Pg2cv%~CY1Cz08G2t4^KgoGiaWZk#-mbJVrG%MCn>cQbuNU9=IDJN`g{A|bp-lr z2W1_fdIBD;8OT`v&p#P{kL3WRo%6>-nc0uWpTsmx>;_xD+#6ZfD1jl#G1DzKo6pEeM zE0(cQuVs^buZZsa@+qDY9({PUdR)cfFoQWOI<)dEPaj`b{DPd9KSx z3d^7ELXH%Y8mQ75VA4YSEP9u;_4xRqo9&;s^xt(}_Go<~#!z>vHhQfZqvLv4(d?~= ze1F*Md8u`eTB|4>agVZ=O#CGA;%rXQKZ-=ftlVe!Hbk5yX*vq0ez%-W?rihdaH89u zCGts5-i`c6pnM%vsGs`#&y|n)v-rLC%{NY<{Ce-;;P-UB59(lrnufPs4A6^2>I{Ma zBIZlcPx~0L5{*%z0r%VyhOpShdsQ~B;R{x7m{K0X!kEoo3aPtY$4@j{Zt~@tbPv8T zyVv7l*e@Bq_`)$U$0lX9P8Bnh{kXWz75~non2PJc%`{L}=(IU41ohrQd|HM!TEHJ%O zNQn;>mbbbseMC8`lhv-=!TR?II?T@$HT7SAeZFc0}$`19JHLmGmzf=J>Q~8g7by4%%!h zI2{!Xen`3u^cNYih)N64oS)yE-F|aJu^*$g)Bsw8L04Tyn@p@6SDjfgU1@>X zmm=oQxa^2qc|4(|1<87RiFyWN@-v*3?rQT{Vm~wu95+6y)8QTOX@saN5SN^(xKOi&P9+lp+{dUuB8<*kuJu6)oKwGCRYwMkmepy64$Q zS=VKtqy(}Wpm2DQE@>*{aJ@G4m&;U&ZA`7-ftYzh=y(d=dOw9*%jr%_8j|os4R3s#^`QBPif>ipz)}ZUkw`Mf{bc8 zxV|eo;|z~yv(%Fzpt_3i+STn1&&Jz;odDgzXM;?At@zx5vN=)iC-b-R-Wh0oI9gb^ z0#z^k!oqz{B!z;Am~tIQ>Vu58Y|&^7+y%Ra65KcXc>Um<-`*~pihsdV{k~1yCDyat zmvOia<5RN*U5u!tBnGO`1uA=f{(J$EDO7~?_~?D>WgU(#Qo<>7$w5-$H&hrk0VL)6 z_3MZ%{j_1vHKyEw*{h>7U#s2bi4iyX(890%a;`{1G>Foe#Ok621%8yS%^x$PZOcw! za(H#Gm1}PM*}%}ybEu_;k;<6RiFLEa>kbPC@Gkwi(^r@g+p z&S2SG!gkx7?Y6w~zW1?Xe7yRn_Kzpmsns`je*7Gvourh4mJ(Q(AMdb8Dg);O)J~vd zpl|ckXE08Wk0x}Mf#PA%s)Zd_>#nV@j|XyllFV=OyBSvU#ej4{{br!^w%Qz@Yy>%m z(^gLJ8hY$HfBwu$+Q;6iD`?$yb{CIAKi}z1;DYgz`mxW>jGKb4jm2&J5udYjvE^@q zKUkKQc0*AhCdeBWJCP~&Dn3~0KoaC^1d)n!ycX83;WJfxbmkI@!4Q4Fmy-4hEFubW zz{?v7DTy|7LVcFEXp5%Gio+E9ROm+3JS7z*HGk`_a9j11*Ez7r64UIPJ-+((z1!oK z`}-Qw3XPJ=_Uj-KCRX-{Ue1-A_7&`z(0R~0(!9L*|?~JTw^b}v%u+(X1bv5rCFv)chi)P5;u@c2T z+3Lb(XMMw!@?tTs-1n_@vQ=#8C;g())i1HeRqf4w>%KfEmc*fdYXvDJ_YcA#qB%Y7 z!0C%t4y2j4FH|)cRbE~i3os_>{))q0Ujr0`j-Fl%oOzJ%cXDwtOOZEqf+n-So2G=lBk`yRmPjkQ(YV+6{GUA9ud$p1E=l{E<3bn3=~- zkVaoV1mP6asOet`T;y}Pj>Pns>`SxvqoqJ(6pabW9?y-*$I6cQ zXcvJW-{iadq2<{4jedWgV6bF+6nV3(nSCX59Xv`I%TuPW@#`sTZ2)Y}C?H*4RJhjskPCaVgcP_)Mj)M!@25>>t#{ovYg zxve{1i^@%Ic8$q6EbSbJ7&OfVdgH-Q{KZTNQ$&kgOIf)zo^{Q2<-gN>o|W6nQG8o_ zWA_2iLQ5L?coaf35#&jEKjPxJM+?6TQ_95eRkrvfv!vsiYUlm#)+HKar!{g4B}Q`g z(M5;m)9q`XIAl8`ub8xa7T9g7uHBWD$RWhH8Kg0=7$TJ$)Lj2PxkKX{=ze<<3*V8&=oyOR+9=^IH`4BGq zd~VDqEYDrt+(IBwjnbsSK_gd58T;Mgp>(MKNFE`kE;6u{&gstmPb3KA?-V7!_iuUq zQrU>5F(xup&dX+qdi)ZT0spPR@8plCzMj37wnm`?znOdkU($f9EwE(h)A-X8H|$us80n0sQQYhe*Pi=O$-p~Bu0`gXdkVHk1zVHne^!zT|n(K6;#qOO$><+cZy!Ms}LH_@=xPctT6&l;+>2-op%LZwNzccl>oIy?_+OXlVpo_#8Jfl4|iM52_A*zaYtW`5jYUMe_O)RL1X|4?Sld z2Hx4P>V1hJ=SMkF-lFNCF@OxA*GhH*0B7tteKU`{j}RYbiWJ8*Bd<-n5G0&d`>ts` zV)RSkq=S_I?(TgBMZwlI--8NNn*=?a4=vy6x!fr8HxzbuKO0v}m$IoDJ}}6S@ZW0m zW@OXb+7sBUd9P4zfbYVon*2+2&;TLL?q_}Q8*|8gZK`I)Xu&u8oq+|>vk%(yiz6@L zWDG999VLZq`i2K!uoEAjEfZe~;E;bRDXGL}919eGm@KwwTuJw)gCm7|k>S>F(}7=a zh9KLgW2oD{Wb8u{OV<6AC27RyDSuzc&cf88U>)qivAnb6iVzn2|FQEi!Q zk=L}VbzE#PfXE$+?>md$r*x<0YV^ikD(@r-ay}(r)9r=GkhDqW&^m&yLi*7_*6%8$ zbc+ccX7^x>Q+Kx0Q{{Tdk*t4LL zr*O?oPW5h}@o~KIpvZQ(vR9sNh_oknx<*cot?16JLSG}!cU8wRg2arcCkvz?w)o{h z7@Cbzs&37R*R9(-iaQ!pyG1+H;p(H6&p@s_)>eObzIqw>;SI$B`Vz*EM;7S1;S;)4-@&CJT>Jjv%%Zo5t zdFJG^4{y+T4HL7eXPJ8EMF{N3f^ zuU|SoGz3R)zl@BC(#5zx!>Y8cDz8-&+HCDRhSVit3}P+Mx$Ws}5<}8P#LLCC`LXIy(}?wI@5Gq(1%{EBo80 z2$VWsUkbp-i$mN-QhOhZOf(|GVcn}HNB^TK4k!Z6EtBOQOt@pKzALg*C~^#LaSD_^ zM2OK)MYjH)Tn*$fA(MSiL5)HXMaoC=3kZrqJR!tJbd*;#5$i~uy;Gr8jr?buY_vCy z-Hqp7bqBF!GS)i=`Mme}9$_5bVFea8GRc+@m~b zE<@hMQ^1bBc!kqq(8})`#ulQg$`rvWVbo_o%e&0-^h;@JAmpb|@>*DTNECqvA~Z>l z-zd6+9J7hrk3}QPrpo(MAVN*oS)kT~HsnL7HTk!Jo9>Xv~|B+)iV+yno|Ha(2g^t}$$S9KbMEV=X&r6!qN zAom7G|2>b*jj>s9jHe(YJL+tjZQ6{#vC8^Pk_KUBZa&`+hd^TiP(WJ&XO9kOF=K$d zsrfy7_SXdcM*i){_H=Q>2YEW!jMWXUF}qvD2Ge2D#8;xHh`eARjY57xDLG261USEv zx*Z(I03foQuRQ#0OG#8^)X!@kQkZp1(e;i4+LFvMp}q^)4OCPN>lo>NTUp7Y>`yqo zsg{M13B^<2K*KyABGqQ4Ok5P3th23GE0Ptmd~~l|S5XlUV!hE}FTzB|MrST#r~K+m zn2Eyg*Nm#k%DNx{>4uoK09MW+l>CUGxcs3Ia1U_w_CEH*#l>A|aL)@<&Q8LKU;WcG z+>%S~$9)`nCRqL9;W?~h#Hf)E9*k|OJU6LOyv^z9Vhf`2pD$qSdOaO4(RJdXWfJQG zAW+Srj1zd3aKeSMDEM4^DI;mYs`pEx{=lbh%i5;&jWj{wJ=t5BbvRQ|dY7cLMK;e^ zqmm4a?TU}i{IBidCqnDtcnu%#@+flC>)8ChGV}KXlhb$uLs|LfKwLo+J%hnUBN0w$ zj(EmEB_A(ueSoE9Hk^U#%nU$7nQ&v1kgGqc2u0Q#mGsUpF@Cc&2n>nCV8NPh_6!K1 z4mb)6c)7A-Q+M<`l8lm4(%k&xI(PfL^QzY~TjpvOas(+yv!^AF9~31+J(@XG;Dh)a zRd3FJ!=KY6=P?%*?ozQPIl=umJVgWCEXapN?^AmeNoW;Bhml#Ua^P8T<&nVm+QSX@ zs8_H3Ev%ikmc-|Z-4SL-(;wJszp~|FdqHQg?)Xni4;(~cLR9^nfV1$oGc=qso`R}E z*hk$aHI~ zr#ZCklNUUUUn;BOs3xtWs=5pf+hJS;qD;c*j^Xxu*IG?s?C{R>VDCIJkj3Psn?4xyL6dyT9_9+AE&)qgW_VNIzNYi4UnMt;cV@CMWDykZ*H<>x)*|w&8m6fE zF#G}PhjJJIYZ6#n2;z8{kOx|}d%Y?CqWtsCZOsxVVu|h?n2+W;3Q{aDg_?$7wS##rE9?HN_Tn;oA$fpsl` z$cZNw@2X2FEg9S98_&r043l|KE%y2TD5{|W%^#akRrZ(*u8!`#BrCrp3sOGX{QJyB zi8)Z`F}v?=%76#HJt(Lpior2GooY|WPeQ*P@?Mol*nfwPxy@jIlK*z>aQNaWCm;`7 z9(pm+HToL`KA?)GSJ4g42tsbpHV4N8Tqa=0$@eVa$Acef(^s^9e~H5=DJsH1z&O+Q ztk|=DwG|5J8)t@ooY^berul9|*W>7-`LU>SD5mC^)tG{4WgYUwS4t}JIkRY5tS8gM zTE+JJZDarMm8 z85MhfwR>*XbQT1pWL*s7!H>Z!C=H@47iaa`n2my5f;+bNN-}g@=*fc#0%ni4mOtl~ zT&8{f%yVfAjiN|OQqplI)YkwGE{VQ%gPW-q~)1MU&H5uZb^PQ42iCsY!Wqj z=;WcH^oO@@HG}?8PhX!?i0N36+KdnUe*mO5zdhgKb+E^B;Bkm(QkD9UMZm~@bE$JF zS;o1br8s~4?z_Z1xgHRuQyEI%)hv#(6$259DI5e9^x(3Z^YP<6UuKNVS`NGKTPQV` z`Ahy6NmEny^4w0PDiz{ZBY(hLUEq>Ri_7PsWJ2SSz}ge1+Oc{>MjQC zY+Cj3)ME7}qWiuUz{%qRes7W?GGQy|FZiT9wyaWg%9V^wvcHV0K9k}63gbu=RoJo4 zba5%=1+s)$D3qJXz5Me4XGDFjjMW< zeKR0KyE$^oT^i5E7t|n*JF{V$kU45wdZ+S*smT)`%v=aF=^M6#i6ltNZS7VOv?dJf z*Xy}LrwGJF<)ftkI;xA_H@)essAdG@Y#SZL`|gSzgWLB~g}tAH#~9%6sKDwW@LT@o zxM>~FFkT#4TgUCZZ?|*4)bOI6Dy;HGT@3OkqUo`srB}bo!>Q9;jCNXVdu)ux96H3`Eux z+AvS0^f#%1WdNo$j!|8^I0wsQ&eW6?Tqv^~-}cHcdDr)G)C7mf%64!$xinnL*E2g5 zKP!@ZphZ2D+%nD>W5co)tBTIKAev^=;LN=@by6!cO8Sr{Nyg0ClrZIX%JTYpJ80hE z5ViNn9yyk(_`RHyl)OR?+g8~+*>JFPX`e3URjV3_mVGdQ7wb;`79>K!^>nJ`1}2(6 zsW%rbO}fvJWI+hQtFk-UGfAcT9TO9RAn}Mf$+ff~$^RoQoX#5krc-16v!qFk+e=-U zDP*CA}N;g zB|eTXPGutV%@dP1d*of5OWEg7i2DTB7s>4w+YPUHzlxZvEQot>@9x8B@lo|#d17+C ziaA6-LkM0<^vxA~f(%N-9RT7m!_Qm-&g*0V>>`Tvju`likZ<6UBaTIgeKlBQ6e#LF zAS*KlzrAC}G-1E-n##)D9`=gkzKw0KyJ!*bij@@h42=?m^q-0(SkT`vl)w?<3q^zL zsx$QE;FN@vr<QajiSSDL;tg!dLH)*Xy5LBPck1q_Rkxe_GWWGd7( z67Ja3wlpeFnm)Q3%7R5NV|foP@G1iydJqmBBO}e5sIQ~* z32^Nm26bQ+Hog9~@CJL}tC!EarL|=rh|H|-Cd3=?SeDx^-+}eoy^wBY6hBQ9BuCB2VQ9iq~i17T;>P^s`Zt{ z4c;$bK$b3Wo0>YHzP9o(S1&mwfIdd%{p9DEP zy0rv+fpv)#a8R*vPnvAh4tOvGo^|LrgSlN4r+&kWt~|;a^IC{fi@| z;Rogp%&^Rcylu5nm)Hd@Jw!QFE~AT@IXG;H!*HqF5hAF5!=MNA?CtOO1STxR6k0cT zCnnu8BVA^6zf_Qxe=K+#SFRepxRvR9w{q7?UCwuI%P`pp2qqHXG^HN}2hKcDf4^!j zY(JabUY5(gGn`T(n~{}O&_vjonXzY^^6*n`i{Ai&a<-dih?v*W*4(#&+1bnCLBcan zLm{C^DM5d>mS>^euF!HqT$d)~*U=E?`4IK_0<*~R1PEJZhJO7z`U1sX_L!%bS~{;3 zuW%e&y(X!-oyWg1_Bu`8!hlA52S2p*Q&bYfB&MgOAnBB1t47?;^_HN;tx9Inu}@pJ zhTR$&li%aHZ&UXkm_mG|3g;m<$beqi{RGW$lg0Tc_C>fX}a9cCBIGFG&1-uS^;t+evBy#rjCt{|^TNnfB4f#ZH z+H#Qmv;T~i=8Zy@{@d-UW69#xoTv|qpTGuB3`=xWMO{4-9C1E2XEYnHZ?0a3LpK^W z#K*xDk8{Rbv8xS%YO<{JTwkl|j;fmnn@b!W?Jj>p6lXK}{d)>su$~P6({sPtq2^QE z+xJ18mmu7(wN-_jDr7d!P1q$7nKdZ))KA6vVnbVFB}8xjlE;p|EdAJ!bDKU-o|&SR zt1$T#3{|k)-ESRkh$ODvUcM~zY*;m9z=Qc+3iV0~@P%ez4!oe3J!n{$|3o3-^uon;}5rQ>C`czu+~OW$0x zMR7lLT=MqX3Mt8PCG9m)m!8~)!N+a3t(`jm+9RsloGD+VA0iG$e%;yC%pcv;w9s=e z^SV}(1J(5tAZEF+x@?-2)(>94+?Wo=e8d$(MnO^6!dCC^y+ML_lS3lnbMkb(`RJ&z zD8KkZ$4-Csu&~6@cV?k2WNG>6SH69ihPBG@PgR zhbIKeZ80yI*Tw@R;Yx9J;zIe**w=AYz$GCr4331SHin@TBj$c7rI_Pr_tl%6T*P> z-+c{Nn;NJsJ5t*f1(8_cpSt%msXdk|mU&$^1->pde%b>0n))|dzFsM``{K2_B3Jv< z>}!0~)#X&4+^JljjFmteCS)SGdWLWzdgZQ1y#GMEvY(M(gA;#&;EDA@wEWq$8vywN zwow(m;RZQEBkEcNHnN-lwWQt8Hwv0l`^!{hVoh8MC@{O17Z!AMOTdBcGVD)IPPAm^ z;4gay5RFW$;RI%Z7#o_6Cy=%~{$j#)Gy&w;0O%GiPC&iUOl@6VA!whygpAmz)($6V z#dlJ|ALrcQ6DYfX`u!Hpcjj@LkP&QYsm1UKr3QA*51M>^aV}3uQc~k-vL^UZ_O=2e z&-^^X+1OV5yIUBh8|U>%7=IS}G_~^vS`7C5Slye^>lP|kb4RA+mYmN0Q0X{b zqw$mksa$_7x2MI|A{gmD*eLLs4twIY{@#p5+w-dbR8r6ZVY%Z-&W0l&5Rr+1!=BM? zDk_f6BOLHVjVq;Gsi4ewed(w!K7T6S{Ms=&DaqU0)bw$5yV+|>zJ!I~jVF-_1r3|~ zC$sxGr-TDpONAmQ#kbiXu70t5hu?2Ux8=iRDejHJ=xDvFv!XL4%)iH>5!dTaHj-2t z=Oy?W)M9&h*AwaK%>x7lxp#0O9YYPpk$1d(iYD$_Vl;&)zO6{gTS@bW#sg)!=W7h+ zAv3^_Yp5tI%V55NouVT4o0RT*`%tW+)dl6TYjTe6g|{uO%dWmA;~2ZHbo)($mcI`e z6k=2(K8zC1#$218d(kPe@LZ)4okXZ+Ak=z781l~jlE#3 zt4Pf)Hrthrd#Y)M=$>uxHGr{aaL^+ls03Oa4f0~>g{umwc%L2&yBd7vwbTKu}umv+) zsV;B+h-XyYqSQ0%$IoY{{MIPk^KhX731qpZvxtW)KQssQsnIrJtDw~v9)4zI&jhL9 zG61!#0$WHvdB#(8gaWOJsLoHo*vRO~r56`phX5lP^q|H^M)o(sRO?cnE{6ZyxN+NO zvE4Wjj7h16CMT~TmP+bRj+GDH4$r__vt#t&VE=qQX=Nn=7S7qj;|27w5T&?J2N)7+ zF=Cxu$(`OYFuSI3a-@VZw?#!vIi&0 zzQHAn4+Iaj5HhT*CJ)=1S-DTFwP4vLYx8N~yvOY-2L`3K2R0V<*6I0Ix^xaHK?U7T z%@mfV`+%JR`4~ziMZNO(?@4%3QE#tPRc_t9u~;`wx@bn%1HSvUiFCN(8c_{7f2<(dw+R}yHBYFM3V3E=v4#)Or|&^Q z8Ejs^`zujap_V4r1c+DFW7Ug;Wo6XYzE)l;@l*I;0-S34{-a0wKG3VY7H-oidcqz% zgRVGiN+#Pjj}2LdbLS@)H5mNthHKdSn{Mx#(rMyQ+|g)Ves)rG zw~iy8g8?Cq^@j=vRrc%^gr61u$pnb~Ed+cbuxed{s z01$s2mOxnQav3ZM*<*5iG~u*Lhzn{)V$r_#c~)~d+SJsPt2d!{srRI6^$`$fE+GhU z1Jnw2{?vj-1&GiAMB0q9JF{t`?4vU)oEWs~B8&nb#Q614uJ!98W1Ye_jInw@J{P>j zHgQ)dyWy%}I{LeEregK?5r|U0Afo9mva=-Do&WhI7-kzE?{IcB zo+MnB@1oikIHE6iU;~SRN)C!VP+8(^0=0PWYxGEZ%Z&ns3*X4NJ9(|89-dR*pIS<3 z%%bpvIPXsaC9ifr2~#9FB-CSFlI{^o3L)Uam_5W)iMO=`<1|djKZ7am`_$CT{PG+4 z-#QXDr|VC{q24sj-q9}QwbaM(*DA|3)SIp>mbmFJTf|)K(#{r`FaNMXZ{I~;zK5@{ za3By%8G*n&mX&y{QRq80J#DlKOLr9kg*18X#fzHBYht5s&rc>DW}hD#HifCr4S^u( zkp;@!SzDVKM6L&5VMJN-0>8If$4!{I#V9gZTp@5HvZM9UG&6~&~YayVZQ5~&rPbQCrOVik7ySJ99#K!KRz zSv35J2+BsW0&+q}_V%BhC$gR*<5bkLv!PZawxr>7YV#rm+Tk<@7&>kwB_)Nyi1*oD z(z1eeM0SDrr-v>Fk(?10LfZH6h{B0gLDtAN2It}ls+Ajq@jtaZ!;MH7?K9T)m0O^U z+UYWME*BOoR#DdSK$7-9jOC+_e(LDx9WE-K78~osZ^=KgZAqK1e4%iU9YLgpX>vir zM_%4;&jr!3h?tldAcqWIPQ%#yaAy0pCk2VyMme!!H)#_IcI4^iS$pGAY8o_IXBJg# zdqL2-+w|U92u~YNCM40}*huOXa6(6h5)5Ru(6qDr%i#)5iM@Io&cB{mjs=yd_jm-~ zSNR-X;0``UrqRM6AT8m**rH~3pvLqZ(JY>p{1|r-jvFSg&z03SS^>N$VqG&U4St(W(F9 z9Qr~WT#4su7E5DenliidL!R0_7M+AWM3J3Q|ROM~CjZa{dD`5T`=eQ)vTEu48au zO9Ll^%P9+P@5#~2pZS#m`Y7}HM6xb^w`k=@kA#YoKct)%5cQ|}^|ZCM)q>BLA1Igd z+xt(@vgCHel;d|@7|xqo5d4b$n#in%P7>Misez{vW`*t5j12N9LeT746Ye0W^ zt`9Bg4;C_f;CQ8hZJLE+OI9jxnJY{P26KM)l-Hw)aYU^jq$enldyH`^qQ8}G zy-F9`6=JFD<@WjW7bs+PJD;BNX}odm>!mdv;fycWMTmVni6-{?6_kV%Q$Cy?goDL)N>XZZBm{`M%R1(rc{pUru(2rfY#ZNM zv?4-m+^_B|E5UG0q3L6;4<;lI0ievZIn{XB@nzqgnhd)7tk0;zqobk>54qyAMWJ`A z&!lV|5CXZV8Q7dRzxVa~UHu8V=2jb|Peb@K!&whP)WZnoV=&xgZ23L<93gGZ#kMD346a$R3lfC=C zer^s^qxbJIiT*!-a?)CyfylLVNNdBi%Z!H2=14=ReE&w?rYIL#+rYrUAj~XnZDsX5 zH&|R;UG!mUz(n@ho22a7h>M2Du@G9Xw|i!l!$BI^GXI5?oAEXz@-?)yP!(^`oIMyGaM-leD-JAPMe!UyJo3Cy z*0)=2gmXOYb;o?nO=Iul8pq1Jl5yo|UP>Wm2RSxcXDc9=Du5QI@vv){nX{e`u_nRvIt`DY3K&}TRHEoQ{FFYAYEO2=& zZS=u5?GO_lj+8pefVzX?8ha9h&#@~cD%8nynLr#IaM(4 z*Th6HjN-s(4@PC+V1kOr!p=?=A`94JrlkCE`Fk(M9}GU*Dg{##y)4cBrXbu1ZTyjf>) zGju!Sb|snR<>mG^&fA>eHR$gnNEP7e?!NEAPjO)Z3A^ZPc+q_y>$YZG)cnUC?;W2N zqy-aX4zBJuR2COI*jrisiEh~A^c!kO&%t^%c}38QH&Hy~IW!&=52<|9bTa zzJre7;`;Y1Mg#)B3^&wt!Y>gp7dM!91o}U3{&N?B&I6BH2z7)p+)Ee1+kkrPF{zhLptZ=jaK^55@r zAnw951$f5-!2weVB5+`y|5+Oe_?|1w1GQ{U|83c2;2j0{H-~Sa)(!QG+z9OdGOZT8 z=K`PnpY^>Dzi#{m;@qf%SHS@BGjAXkap`TSn5&p+S%u`_ednKNh3oHii@}zG~z3^ffPJS*+2#nw_6<*{4p&dn;TH=CJ9cI4o4EFU$=2hD~G!_ z3F)mR*&wVHs?A9tsohQR2K^!r6-wX&XsJ4xzkxQphvpH4OS^&RZ`(B^_O{N zH-N0TOQw1p?&NrMRSa!xHLF~??8T;$t{Ygx-fV|^Ye|-TM2Fe(Q61(;kp*~QX7<`F zhl7=5%E!WVk5g!aKM{sM*$no|SPmd)E9bBgmdJmt}Tj&o})m^8=Rr0@2JMnOBW^O@0_OjVn zkZCR~@UmAB>i|vtyI?4w2Mh8MPc3|ey>7l#IMM$rbf%3i#{5^a&C%@Kr%46!a7*-I zLYoamZvSsBk-zD@&+ELuw?zL=XwQop?KBID+nCA4Uj9dxSyL z(SK?50gZlx+K+lqtRioyft>l&LB?F>hsADlWl?$Vdz$z_OX34D;@l53(VH!a-ZW>l zDfGV;j~I*wdCR=2&Ele{GP!&TEY@^@;YNG#;ViSbZ65zE%j}2X_bhW-+q}MiL@LGQ zOU-iR%cw%Q+}{jYApgoTcec%AZW-_L8l;p_rB3`?K%N zC%c!j@6B(zm!|y?#R@K4nftrvu!ClGk5YEXoZTZk??*d2gMrgy#7W4XvYN~u_wi%O zXU?eZ6s||p=IXhw8Ly%%aoGpil!uSSg1ENYS6Jz2Q+G^Mwzn) z6g9+3FkWuPHw=hz3j<<2G$4SH!dK;VoQu%!aCn6zp6L#!EQ2p8PvLI47Mx{Y6l#f` z&Z0Q;?*XZ3{N$QEG<%1dGM!iM1ARqDi`Yt(2uX5Si8ewWXj)cN#!sNuYZo4>9F=Kl zE~6lWjN~3LNOHN6&O>_olw|Hnb9<(S)2AWKA-F)Ze{n($nq3YmEVvWQYS9ame2K1# zl=S2y8ND2iJa2MYvP<6CG;h!;j9uOI=-{oK|B_{%I<(*Moz4nf)#EyyqeK6}>8#Xw zkLPp}F4bu5YKqO(!@S3LH!yqX`*`lg{9{-Tdq-~sb&HNZcDU~73lN~AUp_ppqhHo6 zM_fl=(+o)+z3HRj9-jI)b&Md;CGtpC)6XLpvD7!wvaybK?&$vPZF9%yQua>Mo1^b# z>|Jxs*kb>C)ci5W*bd(6J@e7AZ8F}EN6@(Pex|u|SeBVOuCzRwjmzyQR5)G6S7_p} zJIexTm@St(&8kU$vvyo{)=|i4nYD0q#uSJCxOA8gp1jRmFg~$)!?#6|dbBaOjL-5n zYj#3fW6h^PvUs0MNEY+hW`~oq{JbRzw~?H6QkJ=Ne7SiyNTZ%LHdyGP#yohE8`Fh? z;D!3q~eH`5cM9G>37>|JV_Q zg!qIY{VeRKc5HET>}PgtTf(-ovV9&y$UGQQpvixxmoHW?9v?lt@+Sd+3fSCH_m#`h0$x*qETbNkMiRlLu=&+f@rO9 z8Hd$cIWAUfgwIru&k4nLmMFI?K$Gm`*39GdZ5Y`~Peth|~1YW7)G#1Chhr>yG0f1_@kY2L6ZE#r5RG1mJf`pxf|=H68& z4*xZR;qrb|f6da^WF<=;jv@CnLuSiAfUKPh;kK6KNR&0|(klLYW>fv8UkUzarg`S- z4n==bev;oUYw_!Ir@Q4y8X-LC9{E?MxqbDE>O#Qf&EbMQO$`hA&K(MoFt zR#w5z3@bI6EFh-C9I$Z2p@H z4)uTr5@`*2wT|bA@Dk9dL4#~9$(5IyH*D@^&Mo!{A+Mp8h0pwLbAXxV4_org{#&xx zwc%K@xqM3sTOUnrM`{C7rKx|Q@RABqTGl~G1xOcm9ezu|@Oq+7odPEyUC<%yZzDm> zwOdDL)yJ)DEU^a2?dGAa%h(O(f?N9ZO^CThH*)LI$G8e|m&j`(nYl~^DrUc7ylH-N zOIL`V^{=iFc_e-}m<{++!jDxbA;ppg-NwsqcSn&SciX;o5LrP!^QF+?;u5MfN7>EO10lgoN5D)ZPo@ zE0N2aZn<*=gJFMvS2jAI=kC)4yU{#n$9c?Se!Al$n1RF82u|n#h_O zaQd8OgDsFZ%Hs8BYh7tnu=(ik8Rqzt{E2@ds~qcexXm$`RIYz6z*?J+K9>*kc>lT6 zhS|!G>F70>mvJqAFi?#_&Wfqddm z{N(vlnAfa%;XRga7Q8qb26gs})%d;j#rv4wJmsbLSVmLz%WW8}X!lT=EpfPUFWVw1%%9PNt7ESG9TVo32XdzUp~uiO5E>ZsqYefc(?5`v*6Wi zw#Mx7>gb&N(Hg?o2%giWgFBMWd1GVh z3UEr2dEo7qYs_EX=*ONkyB=6t`u_1sdy!aVMoN46!2Bus$0n5(BxG1;Puc~3jaY=I z)@x!2YigYVA3<1PQgRYBmjaCREMHn$oT)u-M>RJ=_ zc;uJa$=@S#Z(p=s5J9?DY16Po#n)hT63F^F6%ulVkJXazeO9x6!Pv zD30s3fnh~yc@U1$3LzY&MM5~*-VFU**0%%zZrp|3$ylYG029_*izTvDBL>9)9W-EY z3?R+IU$PrI5?BraxETXlHgV$~a8ALjffh_yEJ1(K?aLAw&@8u;rkbP5G~1zI+X7Xt zbM3H19%Pr9JPemLl&KO?dr{P;Tn;=Is;cR?UwScCVs<|4FT;A(npgF{0{cC^-o}rR zR7XA8>fJ!VCpEC#Ty)q!NG}fcR^{AYH)=Rl%G#ow+iSIkP+cs@)UxHm@`F0djIwit z?9}wkVJw@A%?EzZXKieQ&iB82SX)~})5x@25&8Z!2rWsg2o@M97InqCZ>juvvTsQV z*||9y|6NP`cZ4tWSGO#HDw&;IpfmPviSA8k^)P3Ztc&`VvwSvC;qWcLPgDplvynNr z9;01?s03W*HbdshYBd`SSnp6!Fzjb_Rz4T|?f7-i?W|?%+ETWzq?roVu5Y#G*|TNNo-|V~nnN?bKANUiOPXF}L6yV>NC-bKE1qvGM9XH!IgX*aU4n zY?7*h4Y8>TM~$6Tr$mT9xLIB(Yp~YO9L@T~mgo~nKkCXv)&=(PSRzX5raqvctNN3I z?kYP8*3l!9lgnOUW#2K+lTo#E*_)8It*Ct2OBrCms?{0_daG?otbp}V&mid6H^y~T zGp!3t8T>|CPs_RPN=P=y+XGz2ax>3!^N!ysViFS+Y9h z&0t@1_J#T@3(n(9m7UFouq)N9Y*u=_O%}B&n_U+8Dzb^9C;BM~)%QW}1o?Fod^5(N z^4@@`F*)pe@a&h%dL&1)0bZZWN_|m4bQP%)*`Zf**+$OhsIv-KfK{mV1#C8}4E19qYI;Rh^lNgHiu=ZR>g2LRjPk68xEIvSur~g5*#gt(SD^mw_%yS z=7M@GLG#slZP?48J+Uo2Ax_$B+8$fl&Zc@l8(3rJfc##b{H444h2A!tP46tD=S?vn2w*Ki+ zUF+k0I@y@6H{n#LGM1QK)wDr$kAT{WIdxB|y(mhsvP88#IURLe7jQp+lgV zQIcf;tavnWm}Q~&m9bR+?07V7BF`ptseevO%$#UOSFs2(Mu8Al^d z!dmJQ=4h6B8z^?V#X7%|b!F4lxJtO68S0!$Ryr`MFD_f7if(`0;aHB0ss-CTE%CYX zboF{AD`Tf^=)}tS(X3EKC-#Ihjjrbex^OuOS&S~~NLTg_8xnfE8w)blBQ&`OI|-q> zqbFO%hN{lJSOpuVX7yq{*l@Lhf)VN^3PvhtHS54esq$*{xzTDe1!L4j)#yaS6t)2J zk>M)@eMUs;&gEj1x#mmwtndL}jvN_7E+M4NDd);js-`#ij8-!!7!z97n_a-zP3osU zFzlNx+Z@}MdDv!(XDfr^Tdeq16yIvaxA%pfZ&vU1Wx3{veT$CS~0Y)3W@*vsNE3NPs`ML+u}qLhlTHF`T&>yGwmPg2~*w$qcQ%L62TlM~;u~ zQB@<^0JQd^k!&;Wt0?bi_5$0k-XG0|@*O$q?&U0p?Nl{mSf2l*NW)kbOMUqxHD{E_ zEW8HmJ2@1^x9ISJNPjQA95gu9uk8%q7N*@5-#NMoxy!PAbbe<=3RWs$xpW-1`cf0i zJ&6fM1@a2n6rYXcXo}`@!5Tjv%Y5!~g5Mj1tB=NFp0T@S-rX^p+!4AC_q8OtFGi#p zS#43I+~Zg^+o5X4v0?^gjANy&NnJ+4y=prJ+th(^>~tDS# zL94!B+n@`g&~I$eX`%0@LW?XZ)M`4*6>O{u%tUt@sV2{aR~e@oC>XD9r{E;@%1kz~ z(B>*0L2-6hktN5efwSNv#;chWoD`~?g?3;ss!wLKE0bRGJKR2JLZW;rR5yp+!WdIU z^VmcLOXjgp5KK9h;pUNg?^IU9_Jj&fV_SLA1k^F$t4eTOg*6ZTaXAs7AQyB}H!<|V z>FgG#e^Pump+R$!o?Rc(ZF6##xuPILJ->i?`DD6)R;>O;+&`sdwkcTf<>csGQ(I!E z5>xiK+A@>*GRn_DG1KCRFq*GFhfQXus4Ew;%&uvPXo?hp<;3;qi5RKlh;{yW5c2m} zi2O4tf2n^~JUv}Lo28yz$WHLjZi$(#3JrD^Ci<5faQBlV1YG_`%~XwBI#G8Ytv8o{ z5VAw;I5<~MRUd%?s_?hLWu&b$nrote5Il|6dTgod;;~xVAb=y<5+^_@+k`8lCm_RK*Q!hOb*> zN*hIVSL+&3{T}M7MpmQ_G_Y33%iUh(H?nG9uj8?(CKeMhQ~k6N{XV49R$#($W9ok{mo&#uOrb(!+6V!qI$D?ys`0H9p1f&t^#wieJh$u|4YM zOIb-J?PdqN>aL`ZS-9+s9P*B+vyg-fLmyN>UdnDm*6S~0?bU1Bn1AGOPz(7G$ZcB^ zMa?1d;V8kCSYilUT2F&%9`>-xznqnyxHn3vF<=!Bk&i?PELO2}l+`0@Em-*{=aE6+&k@aP#sdXD6@9FC9jp%=8 zgkImsX7bb@(Yxv=!H|!*-%MQpAvRY|z7bRBpF?YJWPjkEVz#<`Gi%rS*GMPS^^n`u zLz~$I{%dx~yMjBVriLT5bQgP-v$I3PcC)pfvIW%Qk=tu) zNRo31627FiFou=JhKJeu+(j`6ue$~}vK~IRR9&K+76Y9e^SeK%H)JS33 zm+vNCJ4vhIE#m&F>Oh1xJ9PE|_HdcQ>CaVcG ze$0+CY-Tlnf|=Y2YRf0+2!qrIpRiot;P|}bvB9TXimgyZpF&bArN(^hMiNa)*7*$k$xx`nw4{u2?a*}{Yx@gsHi=S*Tse(mRMlW&-v(L{^UpfA`= z=B34j&*^nm@5XcvNAKlo*OyqeR;u^E#KNai9sZKt&o+g2e8q0`VD&oY5PZ%Ebl%4lVi+B4USz8x-QVl)KHf22p6SL;PKS1Lcz%~)l)9R1ItO+#t{KlsG zpNTg^GSO!&uU+{&OZGn-kEVT)XI1MzSzgf>`R2L^1mF9 zA*o)bGTUdD^%nA#cq~=y6~dOXeX1t~`_<0T!l%ytllj@JR{Z)uSvUV{@fmv|<7?{U zKiNR`x|;qMD^=Chuzfon9C;bk8Ll*3|hZt4fKQ5SO>FPvh-G zE*i@`%DTfgo;%9&3txy-0+*{(;)j3&`Qm!PtJwba-FOf7>iVPt4?5iV0M&;_B>HWudBNl&qq5y$9Qq;_$H9= zgnnoIAj^3lLgUjm$lGlC8RAY}n!r8?bxh%J2zG%w+KOkf3qo0~`8XH*Fmy%+-{oP~ zsk{RIAiF;FW&wX7q2wG=fj*#S^7?4sXL6wp{$yx(DW59ZZ^p)&+>Y_9qST4~2&XWf z07Mvj@M}zQV)|)p4s{9ev3$k_Ha9OXg{%>;e4!n2xec+*j<}K#M`_FpJ9FDXpsZ6L zl=A|%JoHyNpP0mgYJ5*5>y^=y_sSg|tpk>`Pulp8QIGZH*qQIXC$TV<56!;ARzr_uHAty$GZVup^8aOEm ze2FL@*T9pbz$XcKw+2pbh(a$0px1R8IwcCcjYtV2)*a-G#I7qu~$&mM~* zwKSK{*-;IVOAyqwT!!qp2#QRJ%lnRnqGsmu`D3BTEVz8(SSYdsd^AC*5zT8x=7109 zj+JeOM%{ZX6xoTosxQyYXrV>27PbADsM&;i1*r5Ex#p;IYj}>jc>s5Ln~OMC<1$B( zzi5t|N4UZkSx!}(j|D!Bz&Xd}G+*P~7-&$6`k_D1P+bP{oEEIlP!#~XEooHE0E^C_ zX=OwW?Itx@?HS1P*bsGKAn#|hJ^f`{iFPlR#f1SeI|~D1))fZCY$^a7q{I=VfZ%K*FroyhaRjL#xNk7;oVO@SkQPUf zCeKy;L=Y^F610jVXa#~XL{J+gXdOq;8U!0pG=xhw zeF-rLulQ(@YSq{w>PEvDEPr+^?3jPVj@4Lo@Fd=I&J|9FbDI1=F9!E%QOweRtj&4H z!|K``7prS?9@Qo{w0AgPz}Z8gvQfNR#HJq?kLBg*4K$0no>rk}p#GQ}-L4)R%g;I% zyx%xJKfN)Y-U<5MWpnkS(*gUM}HmHHiF(Chhy=t{^Irn9`B8w@VKP91jW@airMNtE<6V3fBI`Ezygu>^VAnZA*Nuh0oLYB`xtwEcWX! z;hp+KrQ^~Mdi!!TTSi6WGP4;nM=n-JFTrB8R^_imutZg_u_rP2n%jBxUCo_c;I zKb@Vgx~$>~>&)j@@jSsURG(kYtNhDainYuVyT2AYDwm~i+9C>Ttw!UcqQ&r**02w^ z>0;hFcd#ZqzV?P_{PDFnOyiHQy@jiJC0nL$T#d>vQhN~eiOPiAyvS|WWv;A?RG7;_ z&5(J}rFV_iWhDhm)W|h_Z!=wHuH`GB%j?$iA^N+5V+_c6Zv~vKDQ?RF*%IpbSd!}a z*b{Bo5`DehHWT1-s0|&)s*A4V<=Ep6?YNR>;;XmNGgomRXNl_Ft9ifU_oo5Z9Irn) z4HTjdZDW}U>)>;7)hUTA#;1yQa}Tb0>G(s}@QlKgh_1D9=nc=WvEiBN^LU+>$MJi6 z?Vv5t1mha8%Jd~leB?xqsDsJVSehDmAExCaP5y3Pt9V{6uM3XL=k>ZQMwjKajwis^ zZA9S5r*GP~6)L`--^o(cJ?pXC;#M!;%uC>CY98R_s(3SZu~b#KftNC`8oe0=2i1%X zcrGX{!W0|->go;fM+enCn|ar)bVBGECnl5&xV#WLnI;dagB$qNj!{{)15M8KrIwv3 z-4Rw?o(p1c>PC<++oGk|yoFbHj8;JBO3C!Kj?cB2aug2o%%1n+6`xM z@D6?^_W7pW$=fwt7+nQm<7*pQChj0-nH_s)b8MX*dv|l}ayxc=b8OJU2CNqVb~Z=X z+cP(5Y^d}up3Sfl8E`kx#Y#lqSimJsSHc~@V<1>z1KnkTF0z5{u|OBwKszkZB{tA5 z3$!u@Qt9`=yc<=od*I7gkX*R;f)CqB9d=)yEiZ~8NgH-#j=Wf11qSRAbr%II)pPgo z@*dP;`D?@PcQqpWR(vi`WzYxX#Ex$7U#!Did5I45tKgC4{yMKeE z7W;fj1~xa7@OlJ(GD6qv;AaS2js3IfpPc=ydynVrbM}L+kXaGuWexKMfM`GO(IY@v zo*oWz!^1*zkP0O4|#?G2C*Zx6Lqv+n0xa|$B(@C4fD?Da9+3nT2jHPF|2k(qwn2db%fks+0M2PTF)m1SBP40HSjOA??_4&)_ zlFL=W%atGF z1&#Hg9sBuD?(7Ee;Pqf;D&(CuNRG624aY?d2x?rW?UY{mnvW2%yqr0`9h03{|nxe zm8qM);6qt?=<_f5LWYlDCVj>K&8|^LzT&+R?EjkgQ|En+3SFZ%d>sMdVx@kLPfhxU z7o)1@eZxDpE~m0-%(oQYL2dtr4{u!-53N)Q-@@gGv-kg&4{co$PjRhU|1Fp*_5QcK zozqhyucKHMzQalTj;~`+hHn0jr-&445@A?P5(*vUPjj|T)&B%FU!`uK;A(aMPyB9( zJ^yF0`%+!{Gw)Gl!g{#mt?323?C=vt4r#L~E{{-i^osP3?|$a(eb`lA441toQ};U9WEXh4+Fc-u#6Z@eNsYdp=vW z{*@=-^f>2NELYh^b;Ds^K*q4=Fml`wdh;-R2fIua{?4;=H&G#$ci?sZ!eoNp;G;f$ zV`$v(9JiCJ)Rsh%k8cR}CW;(%5(HW5r$4yN=^Rlxmxa(pba?0z>h>oN!7+;~`I~pa z*KC_oMYdY>Hx`J!)dhdU3i?=}9e?uO_6emP!LdFzTL&LS zFR_><3Z9&X5g)cD@okTX^d)_F#LcXyQ$?3jUAOT5P~52TG#EyX+Sh~%)5IsPhC*KVDy$-a z=~hrj0C+6|&=CM$j{tN8fHxul9ofrkPj)$yf`pA;9sC}J;nkRf6u9J%6r?%j&jLi#zac#~kby+`t^(TCQKq62bR~p+U6V_yND}I)dmZZOtTc<4_Dr zQHkj?pg$4xh+BY7?T?_7J?TzUTm01i0+jWvpW89n;b?Gdq5_@a0^e^@AVKJf-Dp`F zFwI_!i;CGs#k6Tw4A~?;jd$SK-COI{Ww?SLgQL3^S5lIKAGp+>43XP#6FRAWGAF6F z67Xg2x(`58|7FjjqkMf|S-~x9Bii zR{l#za^$T#%$2w4Fi+l2q0fyyrLsJ)+w0lrOF+d{-z<^e@FwbCQjt|!e*h7zkkGER zGf~}=M#30)`LrzfAH>|5!A~ftBfZOigQFY_oSX&PQXoGfq`QttjoE+&KO;b9@KXey zEO{bmVM-oq<2j_wApq3Br$gn|b=K~w4to^ICqldeZDjq1rb2B)0Kv;J=A<>0=RoqdI za3wv&T7k8x^@yn(A5QI82eU%bOLSgbC9{~=vV#$4$0xTHVrNFrC4H1x`J<kyk9`z)6or$_% z`&_(^n$wrey~$Zqbkkap;?1j=V@5?EuB{+FrKojySWl6cQ&HAtpGB(%7GnhbJXhqG zlTq+GG9O`_4ei#yji}A&j#9HP0HUPvZB>~k@&;+z`gh{V9ApNIG#O#!C^7~dj+Z5S zF$h()btL6}TA4zxZG*LI6brb`JWYvCSz33&ReJ07|) zzQuVHc3sOlYo$BAiN<-L@+El_yh&b<@sk>uFACX*YIeRTQfqTXLB_S@QoU0slE<|}8gzM8F2@zF~Fp zlDq}&)>nwEGTJoxMs+U|CHN#gSR@Ku9YA=Dj!Y$jW z2aCk~j5}gRk!USPQ{)eUzY^hYZ)!|~%dzv$zqAEr~n0i+{ zx-+3Iof4+r9gprpXiKMVw_4psOfDLS`bxY~m4wsZpHYpB%6zBsi;np444GnWMQ&f~ zoijpPZ>y1#lC4L|EaDhA#bf*omB{yD>E)?-98pbfD=K>Ecg{>8e6ED>qi3W)ms|`w zpWBsH>2_sTrj+@SgQ!xJv=vUH08kw%qzHPa z2Wr&aRYw3whyZltB5TL77pUvgfH~qGk7#T|606+1)S~txyMgj!#|#AplXY|xMN@S2 zMvA6V)Oz&JDf@wokav?6MVEx-_$VqKBJYV3T#4!lTbe$7lG~%`?aEUk{DnKB0R0NX z0FT@mfq3K&Rb2wNw?j=S5gi+1tedlfE!4Myu-YM5l|G3oy#t7nM#9v$jz>=*^v$Sb zNh4w8By?z517N_xTB9R6);Ui7*^z{<4L|5|j6k@dRJb}%0tv3E1k;hp?F#xRFR5DV zBvx6RJOT*Uc(UqID%$+7R4ufssil*^UAMH3U?$!dOfCOsY=P`VLoKIibOZouKMl|k zni%wPr~{>a7IdJR^bWW zuIhG)waQGSliWOr2Zd0qGgufdz9?EOzD93ZtjkH&pA{(--=HJvuG6{eD6eb_fF(CE zXjwea#x_hjF}G)!|M_uN=2S1_i{Nx3#1w0d9Ea$6$CQi4D{w%#%PV(g&78BqT`Tg zq}~xYL8Lh|H!j5+@_Dt@>X(k9>KI#PJ5{fMC~hE2_wzckbb5^}X=`mVI&$FY+G$`{ z!h?9~$yp+TczX%1W;$TCyFn$VqC=JNIx;dD0-!X|gV&L*2{{Nv)|7P`lyfJHgx3)l zi?~0qypGt(Q;@GAjLQO`q@uXgN?N~1+*7H%`$1Nc6eJ4d)SSqgttrKPUPqRP83!32 zuOqXQgGmBl$T)zZ*5y{~Y7F&xC#^W~2PbVg)H%pgUjfP^?yITPW+yx!VU-_7U!yL^ z2iBz@)4HEnxgEcP(R|GCxjYqFv9V!7g-&?K*b@tf%7owlpZJ{)y5#X6eXL?V1a%fN z3;9V)qEA$?Tx91i*7#;0)ew_cG(LgwNPVhPot7Y_IkM&|eM^b-Qu#5t0 zwBd3E3Gf+_=*O_z5iSgUItp!XgT|g#D6yamz@c_O9@YqUXbzA7G=SYXAmQ?CBHT-> z19*OSu#~97D9ytGXeqhcVqmmq)e!*NL;yMhK-&mFM*twXDJw}zA<0Hzsk<{G=>H2* zxIr6~fyK6j=*j|CQW!@GIg{6QP^~)&zj~=swC;K>a?vQ%3G9HuuW>*>A;L=oa9``G zMme;n@EH~vrIcGz?lyfkgfqe>k&*Nemr*s#2uX=KNi5ZZP8dTzS66hxP)zm__)jfa za|tzeWXcNj{0K!FWNARuwm@j3d#4uND+&1XqIj2a0XD{s&K7*>vEYGawI&=HvNfat zZ(M678dd))k<+jipxSo;;z!(9QoI{j)xHY=yeXAq%tt$7OOw?3BbQW!23gViO4L&i za8?&LiA5KZrjaoI+OEV-XNEG!Vxbgmr4*j+#d3opWH6+y01?nOosN(b5RM+`WQpYL zY-({C%Sb}&UZY%z+!d|3Th#WTl5uGg0ItDdM{+-Sq-jT@tMsvMbUc6V>Mp-TJY209 z*n;}Qj4lVe^5t1;uhlm#&~ECA&Y}!A))2H&Z+3>aUlgtYbw*tQ9oft4$^ob-73KMO z2#ln%jOQ&X)G|OF%?c8o9(q=5+4ayvn;h5@bEHLUzZ8=_hWDWpu;YIPGyrSYwlJ*% z790j4LnPy^y2@ltOG)-{#(B1kRz3}>tX&7fMry}EZ~Xrd*%=mDJ6G-NA_n!L9#fKJ zdE)ZtJM#qHbdBs1ULwVg80!1)cbBDcXMrdmy1p z(mtHmcSBkmw^i_ND&}DtH5&;dr(>*!+qhp9bQi^)9?%?}LA;lTe>sMiMjruXd3TSy zjv(+%>Aa{*cuNLf)u;vCvGu-3U4`equ;YGzchM~m?;YC9yN}9yQkU0Vd3uPl*1G^{ zBw?_L<#g5Ftxo76IvisTvRf_hAxef&eJ}^1I_m!h6P|;d(2B{Y!Io>ujxg$Zcu3@a?mt+UgKfp`&U{EZ>w;N5@ZA1H?bZ*2*5Hqnww-L4}L zIpRKuthG4MLc0=1o&>{}srbQWn~h=oKjce8SMb4e#0vDvxc|rprr5l);YA9*-QLhk z^cejxaK`I+w#A>y@mf3xoqm5J_N-jO6J?oF8dVjl-xhVTGjqvOK=2U$iz=sDRHPHj z1Y;vHeie*4UgMZjEsB!&0^&{X3e7xHJ; z4wxqYq7U|;04X*d#?NpTc!K8Y_xFTj#DiAa$pd_8=g+?4AxNK3J#g_UPfyekD=0~LawzV z_Sq0u+7YkX5Lej|uiFso?1%$4#MRlDA6OEh^tXVao&HRE+Rmtf7-5vW#?Ig!8w1mh zc+ZBo){gi92)yikBohZ#@r>8g*RW9mKC&^`U`PBXipUDk7wBIgoe94>hKtHnUY@{( z@ijn!%s`f&kO&&m^`Cqk)!@cU#NY`;i#tx5bn7&UEp&KiSW|}6z+QOLlsI^e8aO~? zW|Juy@7u6ALqo0;lmTo5nUV3a4U3I_V9AyY?BGXPeyYJ_Q3kfWqhOp!fST;e!1i_& z{3MC1&CGZT(TH5w`39J5%)kaUfg5x^utg0x*_`nW!LgVXOR4Kv`k;wKzpy5_=+g~R zQC*H-OCv(-MLvsysxtwNsl_QsIZoqSFs=R*nhc|;y9wR<)WtQz+mBQvbmud^BT~rh zkYP1x6!kvidqUkoD4eW7UQ(T?8>IHvV7)~O6PDTz0$YB*jA=~hE@>Ph_$(PynXnZ1 zBf*Etn9hWyx#v)!@=h|QG-0XkC!)`iF{O#R;SD6<&p>G7Dde@^k|9A>@^$p~HvL5o zq_t8kw`Xa=@_m*DEC(pG=dqk1>Im+ZBebe$IYX;jmP2f?>SB3COMdMcxh1pZ93dw$ z(!NCtHpi075%wA5;Wx=ejK_FN9$|bM0OSG2rvXAeeta5+6zbq7rD4pZE<8Rh0snNs z+ks+rYt3je@ zMu@gXtqUR|a;5D47)<{c21(y;q3`|zc7gsl)wieNI8P#;2q%QYiQ#aPT0KbQ_M{}n znn@JMKfwd2$ykxa3;b0!C6)?n}VVvL88RW-|09TJ#mko z1`-HsibQu-pUzB);i7F4{ReJ&y$ktrc(4OBBiwa z9Y3i&k=M-te1XhB)vVGj%Agh@D>w((GK1GqQmfC0y$vfh7bWsK5?t%r%ArwStk!=jW`@Ak3u2S5BSh97#IFn3(GSWsIcMO7^Kd4ei z!1P?I`v}pdD}9HDEi!9AMg->)2TQ-FQm&a$>{$f!2hXMeik+)I9wst|5@lGKFN13) zNu+bvod%4hEz%~hJDt*6$Gjy@^&2i^!}#p?)QmD>3Z ztvbpF6-IRTu(l)0Ty&&sHm@TcX>D~)=9yOYlgd1q+IF!kT}Q?nBz+)$2E|DidI!Nr zdWY|EIxss>^G1lOhQl6OWL^S_Qfm!a1e*GKq>s2KA{tvUTIh?hK^8_&ibG=|c?od( z{!W^3IPgRS7AHMHgH^KL_!Dv^2=uDax`l=TH>AhGT8~h zvKk>*#j~J^L_CN%j5r<#A?ck>n+WB^ARa~xMmA%Be+*bA%hbaoMYsIUBnj4|m&Qv% zPr_cRA3E(nkEn@E$jjo1aHJIv(f`oPl8278z$1yCz0LD<)!CEP#iK;Gs^oZ~mwC$1 z_sGkM_3tzqp5>96LMLVjeCzYYDA6u2K9@y8r)xw|G8)&-lJyI_si%>+-BBJ&zasWj zYeKaaVReqWY9Y(;jzY@*#^)M(F)0%-sXjYel;R219}p}ciIDuFXf6z%i!^Tb!ZGGF>7Lw_F!fI(4+wW$1|S$F5FfL?-an<)uO-Xu~bK} z^-3#Ii7RYwn#{?Kh{$#Tkz-sEq16!pmRW!b5!5k2>LMgM0>JVJKt}*rs&k+h)38Q7vUit#mksimrNVgqvHT%yt1GuA?9GL`nE z%i43jn}9tzJ5@Jgnu1lmrfL8yTFys_7Hd`nGR_1SiHjX$dot^l95YbHxkE5+NT3fpQTKr^B zdAbMgVLZyN{oCc3lw?&!QFLHr zIW8)3V=8EknNc`>>xjJ#z}0o*MOnjnP!60acVJV}@u(gG2xPT3#h}YxR_)8P!df8p z$7w!h1a95_$)2zUh#;}xbzw$0KBLC4F~XWM%&ED8EKY{j4cYSr$f$Qa;inyj7L-7i zpcE^gZ}olJ-X$Mk8Jx~%Gq{+!Q68h=O1(i7ZPBnP#VTYKY|vBCR-MYq!^Olb*H)ai zmzd?2!u+Tli%WT(-8*?nKvgpVExi+kqsA6=tDh(0D1rPeuiXwm5+pauYtKbD z4qm9EKcKyWEkBxd0@y@tuvbCYoClH8-aawPtHCCw4C0s{ZZ(r?Wd(piy={;TBJ zf{cY1WK6E5F-kAem|l?89>zjvStgz4Q^8Ava53SX>3X=9z!1wPmCzA}GzsEpgBxRl zjwKuzd@)5MpB3Icyaohdq}H7*vhrwAt@nSe$>7N#tHlK(?146@$4?fEaRt5mWYK;k z)AIL=x0;%aEBsXY(K#({R`@Z&kG7mj8#zvWNP3s>lgY=`^R26_H3sihwEYNR35Ee?qRY zCWswI18bikzJg|q&9t=zV(1*BW=|6Zr6nM?=2TqLWXr(Ll3tn!M=rRcy`iE~b;~r- z4c|Y$HBA&|cL13iTNx7&Hj+(R$2-L;ZMw*7P}pj0q-Bh?Ot}up`jto?ai0zPW~&&z z-U*`@#G%PKG!kzJLDi%^nrBFdB1m8h8L_lQP&`KAL2kqFAd1?Zp|(%Q#~Cx#i_=AR z$|+z?3|Anh`uc3quAz5y%}X#`Nwt>1&LAbBYMK*ZVT?POIIh9FGDr$z4V;#wzD12Z zkHTrX0^w=zG(hw`HzM;n7>BJ3A%wy|#?_PGec;lmVu0IPaZsval3TiHUaS*~@PtAn z(Hk4C)OhN#Q-nWd3b=%QO0N3&6oHj%43Zs<%FEC%!hP;n7#V!1MMpSHQn zGYoF&H}JZVE|saXb}IcJvV5nrhz8uzm1B@4S_IwN4VR#!w)4>&P*zxaI=cREvTSOR zWjch9sJDk>h{N$LY(nS>9Sk5KligUm>FVO`P0$)C0F=X}Q46>Y`qf&-{^SUY4k*=k zCO-LS-bNLD?M*bw-bAO^nyBJ@v`@6XHln?HVG9`3ep}n*qS$bQ&_P^$)x!;^b$Qi4 z>5>{NtiYSdGshKSwdz0UoIK$_Wufy%o!zGNaGn_uKQI@^u=m5y>2LQeeHyq2NLS9z z0=|*@c;w2NA0tui9Ln{M?1zD}aTSpD&38EJHS}_zj<}bncd|Q&z!6@13Wkf|Wz-$R zebbo~?zaLM?Y6h^T0&}43QrwhG_PDP+ zv&(LBmZbUsJ|sJZ$rA%xWin3K3mbt_4d53PXTz{Zvh7onHo#v(GB`Ov+<7xl16 zk{Y~tS7|c zpsAlHx{e~}s*y%6SeI!3YEM)Djir-ob2Jt0XvCoSKkquN{+=hgbkdF_+U?7I-W03( zq8`2?!xGtx2Wue4%u_|ZUyIr*CZ0DHn1iQ^MhoM$VOj%o$!TKsAj*R-R)?UGx=N&r z-Ayk$FC-+iNUPIz2w#RaYgYhBcVe#qbt@bb`qWAD@g(m>0M{0xVku=O;2Oxqv1C^y zFNr1FBe^n`%s_HgEE&Go?n$UUN4+>-tY^8Qxu=VLtRV|Dk!#iM9DQb5Q^hNI9m!!x z(x~NMY|d~LIm2U+gk2(yE?dbX-q(_g&EILi*kCcI`(=Uu{3H3Xhot{qMw^e+8L^35 zbrzO{*FXt4j9E{CODYQRy~xcvbjd9`bjw?G=#h8mFhSm>!$i4Lhe@(YhsiR8P%n;} zpPU(210!`|LjT`)t3**|Y#@X#R~R=@T$ha(s41??7lwY^E)U?pN(F|5#T-+^ zT9f9f)WRgshDh-`f=W^o z*L@DZuTN{JlJ`^ja<{ts99*?jpf9N?Da8$1P5BupZJFe&C=BV&ksox z4@VPVd#`3oczrUXx2W*np&Wzt+Jcx{%N?SK6!BRKinHkH_SyJ_nC$K)K0eOFET9py{661Z$dRiy*QfSltTguqWNN)1mTy~9Z%S!-YjeZWFHl=qS* zmft`Ekr2Hv22AK>j4-ySZH5Tog5m21Zu4zahYcZ1h%|5#6#FdrgmY$LzjXmFc!q&> z8`a=N_$=yKb=D%Rsx+HYb@w8%Fl{4pPwiQSZ-Emy$U2@YE~t3`17-LCJM1OUWy@ft zd+Z3RM&xyn2knU4)W_#y%WpUE`czMrq8?&-DN+*THHX6ek|M`jkZ#o z^nTT~R&>I@$e33v+UF2qco?k$xq;iONwnp(Uu~`xS=EGIS{U1Tx|H~%2fh}~CLbUW ziX@Q!$Luu2jhJnZ1E4pXuS8L@Y^uPK$Q4^ar%qD9% z8Hkcb!bn^`weBGXEX{^_z5r(Rcf@C%MOo=>f|5qU$Trce(9avRx1x)u8fjS;LzZY_ zNhG0C&J(%#ml%656eVgD;{4Ba_1jWbn0HrvadTqD-KDmiCkpuCboJyj)W2Gd1&s0jM_3O4pH zu+vUKM^@pL7_g+K!UaH5=4$-lJ`Y8^Q*VK-IW+|>cICySP=H)9P&%H{4a~KJ!o4LU z9?=H*t#+1qgt>>y!ziV~4PT9N$i`l}0B?XKs>2uH{(YiqccBi(UMPxMHKz<-C_2Ws zOcylDA&?^QE)x|91}qbu;%Q3Moy$aO3uezO6J^Z_JJpF)i({6WSSK=@<8QAMdCg%* zk*5Xoyyc>x1#sx{mL+aqF7oE;CRh_|g5i1(!)`P6_r%-TJhF%$XsMD$!pL)B7xmlY zX-*{?IB3vpSLH#`rQyFQXGc7b(_-Zi#wurLJk9)AIfRjmNtRvlG^Z1dr&~RB9<4a!Dg$ zBpgbayn}|Lc*7+RDciz4tx==CDW1(4#D*p{C5=s(PvPne4QrYY^EbYo=i24z7v;(KG!1u+MadxbX`&9l4Y}+;K zNyq1o=X#Mj?4NP7ggEs^v&jd;rIy4>4aJwbAXX}2teW9LCgd0iLE}cK(U|Pj-yfg< z9LjI`e8R|0)KJ#6emE42cE{wknP2X6k;wDu$|XgYMB1rLUnx4Mbr*@Y$HYE$5vFvy zH(U-?7<7F@-hc{fpG>PHnxzI7l6OkKSjgsG{``wux`9`Y0qbx{OS%TY;9~TU^ynqH zlJbUn^Ab^!t%tE?Xlr9Ku3uP#!!!~gf2An%>ncWW??W$`fZ;!StrR1X{pL$Cy1lqk zk90bovMLrIWs9$|;A1Zf5tPmsvm=1CAn6HnU{&)5@BQG$-4dZGE>)~h<*W@`a2X{fNiA=!u52e7G) zy&OCc;G>NVA^X5!$2-FY@!QeKH2Je8F*^Sh$Zy+{4(<4M_ zJzVi`2=b04NN1wH5?GCgIHfKAQwF`EK@pK81upZm}l>oNL6 z!Vmgt=!2JIm9bBKaJi_KZ7?gE(1f9JPzkGg1>h2^)iZ&@mG0_NW0@ z;M<$k09Ryq-2eb=96&iGK98{mV6W3h`+aMP!i!~x(;#BPUWw5E|8e#mU{VxY+q=`V zvyp|(>@KheaF=ESK@1>CFd-^}5%8**6WZ#Sm)XI5O(>$aS;U-k7PDePF%nELi*Qs(_c6(KEcj73p zl3PGnRWSNvWICJ9Sq$mv65sNV&f?$GgTG&{`eYXUlpb_cwo-4j_klIXWaw?XSyRGY z&+%&e9GfL;g)Hnm$Lm*hTqYD7Rhn2t;jQQ3eX&Qw7tisU(c1HR$rs8m%cPC?H8CCw5M(I%HH`XQ-MsKMoNN$Nt2UGE&AD83k_3ANa!r@dlVrqUJ$&^)9HU5=-!zUMb z{mXwsUy?kF`LF6ubcNq8@CKA$h3B+3EFIRK?{#d;NiiOcdZ`hDYls|d^~-W(`Q?g=pe=CE<0*MFnTN$Ghw6o)pc=S+E7honQm zsF482h|XQ;ZHqH~A6)2d7i+8tr=RFGh6672HW|QMGW}RoZ+6}Qe#A+M$9-szhDTqB z6^KW}CHnH_h1gN{XqZ^!?TpLpMc#N^E?wm9gv)n}JU^kki?IG8JXL!v9DR}3me7qg zTzZk$zffCmXm{nJq_SfxJ`7dr1VjKgIm1rYFT6rccB z*mg#}w%(|(SQBFx7mH(@j^WKR_9Iy0xqufe@mxryt0Jlzn>623J))+2!TF%+I9{-j zSj9uy&qZk~fPm+t00j{6LKKiz2qDX&5Cvc-wYN9=PayC5hd+sDF0DtaQ^yXrst1X! zOT6|fI2y;#U>9W3-xYt_5QQNze-Z6sSKqq8YcG$8yID?wB86)&@xDqk4;^J57jiwd z2dUM6Ql-8h=sJh?&_mDPAAv0SS84bu`l_}mdMO6!fOeSh2GnALq81W{;<}16l+NYg z=+}1pz$cEu!>@uE-rHRs?sKU(aF2{sz0?b-5+V-X{yhQrHzkR}Q6IrqUSsM5V)NCN zw>wPXBbCDIZVGs|#utNM4?jc#`LBoTFU3j`Ina2b)rbtOpvp~f*t{x0Wj$twPvTeb z3hsQF=Ql{fH0*8!>U$ilHlaAM;&6`&(vv^F4SejLxEExcH%*-TGI0(_vkal<1{>xJ z7sZd(L2Bz9WnM5)P2!X>6R^CGuw%QRxVqb;?zgC$-md@x-ev%<|1j5gB7y=CysHE_ zvgJL)_@}vkV6H29HMNFCvb>Mgyz&_u6AuoA-5pzFZJR%FKXMYvuLTR<{Hf1HQ^zNE zeGVmR#qBeI?!+p{lLsSi^L$G1xzmN0xO+JOqRk4UZ*Hg?pxGYE1I* z{(tg#w15;XjU^8yi$=z9ejnf}z~mQ5ptP_&k@^n53UP$d_avy%t}vGRfjNPlW82o6VrCd$(}QKA^F z*u}>}j|C^9WORK5N2r)jkdso)+qy0`M!rV2zYKrzs;Fv&&0DAw8REhF4CGVjaj=#n zN94?9nbpCz0cNjTc34SpLl|6%*7O}T;5D!{C%PTsl#RlP*I@h0!{Jfac!P9&W}toEe;a?@HQw-+XV?hT_M8I$Sz@KIL%SkI_Az)H6ha(2LCVppr6~4z#eSNhNfpXw z6`apjRh{A}fmhF{L>-v&mQtY(OhMP%ycD_~5l(Q~GM$E12hd zS;T0f$xT&O%KbVjZX{K65LFj>YTq<+(1>-AFJb9ds>!nZ^}4=LrGT@9b?^TXO+AUl zG5?Fi7q|H4$Ba5pMg1~7Z;4mm_?1ieBt!Trd>Vv} z+1VEbDXdu4`OiXH7@&J7>G)_>NntyF?1djISJm{2b&{yM=HehP?0uc*|BVH#V#dAX zd?bqJ$elkS%v5GhT^<-sN>i)BGVfmg0?4kQ5gqC*TszpIcCHQ=UFVG$^dk&fnYRj! z{wE^1*jmP{PW{RY-q6H1O|J7s7ExbmtaD8`;Ch@)p|p4Y3t`9JhKAIuxc#tLagmw~ z1lO~#7>w>wYijzBvZbvp)=A9)?tx11?rKFm^)pkbQ_{MU50}HTm?0agDyA1>K5aCH zjlP1kv`+d~z$(69GZ$~H>eP$;mq8A$qYaI;L1*JnZG#`{c)bpChK%4Q+6pChHjRO8vnLHZog4}OilVVQC4T>HBps9Nn2HIl0zPr&pJ8gsevyM zYwhI7m!h@m(f+?c$$CF`9m0)|{2q?H5fAa!h1=Zdos?b&-bx%c{>QLHqG4EU)nR$7 z4#un242}7}DdDQ!@tU?qJH-4yO@v>E6(*XB5o1i=D$HBEb&UTQ=^9E)AZ^TBg*W|h z%pvuy*IH0$`6{3q$1Y;-2N4fncTziu@C9Sejqz0>4 z=N}LSI3zZaBGSK)#iW~lnk)`}#yD2w-+^RT!`KrpQLZh)T$U_g_vMNuLs#Saw8%f7H&|j$Zu=pQq?oi3|KG;mx;rt!Xv* zw3MneG+-vc*3RF-S&&o}$0~}oF?}Or_DUdaLpIc? zwbS`f`Ha4`lau-=@*qamIT>9_th0k14lyh^mb8!RnV0ZZycF_B_{6O^8icclU@`lL ziR>SgkD=Am>d{>A!dbaAd;+@&obXeDa@LtK4n(G%u7DhHTSDeYhCCoxaMTO16 z1-JiyW#PBK$UX_H*LlspygQ4ohn${^bqyMfPjX`=mtcIhR{zA7aI9giy+h2OxuR5RY#(34pYGM^N zI-gC&k*z#TEY_si*%@7?yJqWY$`Ivg2P;owhaF2-rx-qZDwXI=ssXpQqIS$bR3_0m zvNh$5xw@xbo1Ik#>0!4HS;aEo|J|lk{+rhPMOOR9D*BqNmPA>-JD*wA>>gR=IAgP_ z49UtWM;{0oJen`Mnw;K|m$z}Os=lIr44&EL)m1fQx|G_s%8Gg(aEy%KkJ$cZxRI)A zST(4sANuZa&RyQ%tvIJI>Q20aOY&@Vfx3^^GxKxsJJN>x>pteLN8M`QgIVza!Eg8BzIb6j3)R zof3rUzf6+#%b2SAqnO%5ZOp8Qn1iv)(C3^a;q2e3Nf<5Eld#``GLtZ6xtfHnslvWa z&ce9Fkm4U;t~02q2rw5LQgnV`t~jJPtN?S>A;mEkm@5w{HheW{D}eiEP1;JpF_SjD zua6D(2Klz}?G=s{ONZFE-{Egcgm#-8@E~GZ3)ZCxpRifL&iB z2U$yQpRzHWn}GK>&;L5y>prjFzTdcv&&W7W5h(Fb!CjeuD*mVps`pbW3c9{^BYnieIBaF9!Y9)n4_Dsjb)@m0GbcjKx;n6hz~t@}wBufdKJUCu2)?utL9S)H(iTMFdBudP6;?H`3?A0Mf{F3 z7r}6FKoj6%$kmElCD#1jMR@XjJ6=@XaG^xM0imw=`<=2kS)I_33pP*Jn}2lrjcU1`U20B9^kyF!-wn=-Q>V1My*;HlK_3Jly6r zm&L;r=+AzH9F?{ZeNo0lB>Da9dRhom#5W59~TjPkb zyZ{sLAJH!*Z$+9ViSn}4mLTFSwXJz6FHCKxuDw!tB@DldQah+?acW0(ElEvR*V5Ds zTx0&oYMhT7aOexTx2Y84Bg60+3kK1L#wXVV4{Fz|KflL z$bzd?lx@Q8pYVq4t1_mlj++zJc@&9GWwWZJ;8G?s5Nj!^ZK($~-ocP1N{6!UIwmqr zCBnb>PDdsY282yddV~9SC+=jt>of7N*8;n~aI_CjR;YQ>8|JIp(=9ZN9`>YnYFZgiw@^Fm@Fa$310>XQk7KvT>zJkG@v`!QU|*za-lFjTh1&x!;EPR_ zUS-_>94|A1u|LfXk;AHjf`I3|@?_>7#eyf0N>f!)LBO*ktBSpX;Jxt3r@XLs zeHW#6rnOxY@mI~;CIECNZeX@|Q=57z@$ryc@9C|o#7?G)?!>*}+fR9;(wn={Ze+Bl z)RtmO{5QF!_zh&BqN;0>OT8&Wr9@L#BkHWG(zaO@m0gov{>>RaC7M4)>8|YB!sXtQ z;Zox0uC6MpuIg1?Rc?w)wf2VawWqzoefc(2{a8Ln@B-p7c-so_iLm$?bhz(_9nW}g zq;1KY(#6}k<;gR!&|lTZsN`duiax=Oa24!F>s`?&c_a*KMJHCyV_Nc7qZ9K2?yXf* zzl1tlrlmZgDz&6swaY?03uaGI+Pl;riy^K9&9$hyI(bTmQq{Ar%gT%CO1P*grF!hs zt2j6#y!Bb^c3l-d|18#4*vAyWYMv}wgewmn#f9FZeF-Me^U4c@<8TR1My7y|W>7)E zV@R{hj6-m6C^oJZRulxCpn6(Kyr8hWB)JN?W3L(M!V{%5`sDWFa(u~7J%iG^l-c+u zH6Kku@De*WTrY!Xo5c9oI-Usf5n`0_EC#x|POopk=PURY5Q;l1ih87ty`2TgQ$VdM zTqX5YIA2vY5vr^x(u=Ju)9}yda7foEX6R<6MfEthD5&}c9lA+|pwy_xb+>|rqXs%R zfTMM6;I!QYf&5K+91G&x%TkRWnO(a zbp_@IYo5nZKG)#M*Y*HJR z4~-|9w*jfg=C`Q`ayGwB44-uEf@q4#-fP!+0r34G-79gi@Wm!W*$@zm01em)K(Iv9WM>U8r+k^?L8; z6zX)SjtccU8yls)Q&!tWj>{0)rsbUIVr%LC3 z1fUu+NqC(qp$8BiRl{CT%vY7T@deutsZSTL){)v?6|#<)V(iufQ7$Yn)(Ojp$0D;h zW++b|0Sc;SBrnm{P%Opkz25jtyEjCyb)p+rljJv^+!nV;YhKwUx1Q82eUOkIFm z4QlcN{*4+$Mwi#AG(L)$sELd&uTyD!4B=5t96<{+4TAAfsx&oM6{%_vECv=nb3LQ= z=$U8`8?w0LsZqQXq;OPLrttBQBy-e1dFnnz0o*Szh6+#s0gS5xHY(%^`;9l-a_&)4 zCuTLKTPz8+#33fCrCYNF$7Bg^%ND2sDy#ZBLF`d|U8*t7I*KZ?D(!JqIm}G3l$B%Z z@(C5pECo+y1!Ds!`YGlxzz$GTl`Nm2OSd(u_X7Tn+FB+7uTv$1J)u1PJd=W_$}o7A z;dOo{2~Q{V9Kxd-o)5)YZH@YL&1oH}xvKtjL{*8Zt+6~=-7G$~HI|lcYa2rWYJC%4 zqPDhqc6F1WDpLW}E~zSD6J5Kv+iK`hyJxx0@D9sE1#@_hD)`Q9!5LPdo8dY5-J>2C zAjoNkr!r1fjbc|T>WKCRFC@YtuX}xJX>{-+!gbqY4ub`z?J>F+@Nd-iG73Dc<|SP- z%amg3@>DSdFC!qTnG0xErtLBL6#t+{WDHfrs_ilFtPEy#M(gEi({a}L7b756jXUz; zm_?~+ivM@cv#+J*U!wk1)8c+ec7cBxFW4k}g}N5_SE(xw=}^}~9U0ZODQr;HrT_v) zn}BpmA%u*HC<-88vnW6T1dNRW6hOeZC_n)OjE@2oz;-0PqREdl`LD9Hh9$3uW%GGk z!OvMw%L_kUfj9FxJHSB)ycbjR+jicy1{}9>BVMTHr1}O3AD1Sn+Q(vHqJ31MnzfpH zBX!@D2sp|Ys(atUfH$Sw1%@Z`jm7?p_*GWKjZ6i3xP{64g){GCFjQ8$i4Vcotiv=m_Oha4bypa?4vUM5lXGAW zmOl&CcS-TRU+e+mZE3KA8N!anH*hV{Hy**8z}S(?gz#kx^_O?DF?F9FQ!5UzL)F+A zs^uexvOH|=&ci2mp;$-c;!CV^hyOu|O`NY0GVxgFG*AOBq0pW*mr!DzT(OC%TlrY0 zTCLH^ZpLJ{#+L~gMU4RJ-RlWn=Z>6;bncAsZnfKa7a-;R3cycyjRF)vz;0210tnch z0VBAJS)t5^aeP)7xtj@b)`oFBW#M-2nc@3yc?0V*LbYGq3M=0Bs^(ItZ}hz2EoQGe z#UL)d&El0wDu965QGfyn*dq#10Jo4{-VrEqe5wKaW1m8KWN%Hy7mqG@+pCu+5bhtH zz*VpT#A9*{pS&U28;YaUz2erHoS&9eAG-KC{`oWV~prTWqE~8GP@!x!C?)%=- z{QS4V)(@~^`bN0j2j1MwnZwFk8 z8|q{Ef*5@h#~AS7557V0mmI#2s+7-01p5Q;vgg|$C*zdK{MI*P`1bgfAL12eu@j00#vMO_@9jyU?*rv3*T>Nk+hfN96UTVFrn2k|7(>_!hget^4&Fa zpW}ZDDPH+erHUrVM`cwd7*x7dTl_5iXcZ0^dXtYKR-oQHh8Oy8*&lls`fuAG`xpBE zh<5xPh^2I*?fF`&7lSBrY# z2d$iC1~^>~5DNEGN>NR?)@&-za13XX1M<~O7pL$Irm;#r1l?01qcwU~J zNH6SdbyGR)Q?EhC!bVGFSViGq#42=SJ@BbFct*xHd~&<0sI5UOz^WN7!iBA&LdhzM z5*vQPen!Q?^LXYk%DH)yr1QXV=x1L4nokg`q^;3dqjUFFxW{MSh@mz`9NTDd68o`B z@TU0aNoZ)**g_0Zc>ibK2KlSQ_dmlRwmtfzx^wy0$G+*3jxxM9%x1jV6DUMa3HtUB zv+ZwojTJX!iCYj`_e8pnWQW4GP}^4G{}XQSH?w6QsPzs&#Hmrb+x3Bgsu}aGe8i`eUUeKRdB{>1- zDirv`2QfhKhqoF2c}4j~br_JL|j{Oh2(s-&{SuSS^BopPh#6uHP6O0ulM*Q0{^dGF?don z8{HH>J9uNb@@sE&uO_I$OlbpL=ARf2{06%iHU#cE1*vr>#xW6(qbv5KmgrN)SD`wL zc)TO#M14M@sfMTk0#1$s6xhuA?{GxLwv&&bOl>>a+xlbp#5Z1H{$<>F(R4bWi*O?m-&rp^MRWmlOv!2X9c$NqF*Kn4#&aH0qsHfFdJT?KiLEaYzvejgYX95rVy)P zFqXFmOiHL>ka6?@j6}z-hF$nfEoM|1WnuAmUfp0OirecXUQxhU$zQ=?NZZHz3ne(v z5Ixl<;TGRv6FLhpdf(?0V*S34j^mHU+yOU`pJoe~l)q35GAAXQH-v^I$3i@xwXgO- zjKVM0>*Y~3Du8O-nTC1(;E5z4f1KrQhHD}6xnd^{GpE60dgGg%JB7W!$Js#))3cvM zFu`cOBGRfr#yPg6d|Koy!4~-GtFQqvpFi*(v$|IM*j!kGQ^0subE^*1X~5(qRE`_L zSROuCod=)iJY+gmy^2e6ZZ`kh+C;f!@_#!9bXDBLu zHf3PlJ#PF9u%Lwa_k{N#evy8~`<}u}F7vAMRoK9~d)){|+r8NdW+>SS-Wv{FjSS!C z#y2H?pDvsGblKb&E?n(N?fr%tv0a~F>Kn2vE1 zl<0T-uvn)4VVPhW94Yt%O6z8+JwCN+S5J2-_9mzZ<`sL!jrnJRtUX1|atq_t!CZVV z4L&#*5_}1z^Jc|6Lh*=)wZ;6i)h{|tCKe-g(mB-5GwMMIjbtQk&49$+$T3=f3kf5B}W71j*HSAkSUl@%M7!}eq^d)QGK(G- zauh{RMhpC_p&5_CO&GS3Cu)7X{)4V7MNN@_GuOW&*J*Mm{ZW^=juHIHes}=(Q$I|5 z`2Oed$`tOAXOJmxLLJ~3G($HjeamAAN@c8*tx1LBH2}soBaeSMGNQHvbkT1kThgRx zW6%S8c^C_Ii6kG#Vo!=)n|be^y;&@YJ=Z0vM+wc%da|1#>?&iP$BI6e(CWq#)+c2nVe3MvuI@2dnd%9s$)U zQV@*-Ja%QYO`H6kk(XYzRq^b5Z#0I`6~?PyWrDv*RO3Lp5Im z>ijM+qe{Z!a9%ko$?L$arOHr0n<0M@xd z%4)sXvsD%AWM8c}$(pVTbB6gO*7~R6lF&YfR1pze6+Za8cWwT>aONMLjQyXq6$QOjZBbjX!mG;giYzyqp9s%h34_D?{_u8A z_sG5K>0{Wdhj`7N+I7PT1b!ugK1!pCFaX7cCor6pu+w2X(I2)A{($xtEcEV*D0)0r zRgLHsDmr_>no%e)-M5FQ|A~D_)(Ee5L!Jp^d&Ujp)g^5x2nKk;It&54cQSQGBg~X6 zkvAPvU;c}AvNgs!*)(UVLLYH7&T>|@!Tdc_*q{JCafTgYkDnJ_fNA0FIll^-ose zyWsDbCs_}*+6A(k7o9Pvgd1?bq_Sx?SFfgp*LHj3R0d7+D6Oq3t0=83%W57K#X-6D z=&)ct7PhS$#{4AIYA5sjo0S#TpR!yDZcL+f`HmVI^R*}9lgo6N#3-yttB_$hhD5oL z`Z;WKEcr2BVg&Yz5wzte(C?>FVmd-%1ZLYhCKv={C=GS0>6@BWRjM+*M`?C7=pfVZ zRp}HB&;A9h8o660<5b@e^%J(wsEVVRm!X-Lnr7}F1%ujWd4uxu=5HQUu>?C8UwlA( ziC{$YJo#dUx~$ksSnxuYcja^YaiCG{TfJ+&;#T>kbU_46KZI*Wk{s5zBb}Aa2F8NF_#ZbY3_E ziIkI-&_aeC6OV6Q>zKq+$)w&pGD-y-OaDicn*Mi_B-f+@YmyQwlM3QfcI6Ps)%r|^ z+M3iXt4Cmo|1DNdk{hE8Q1#4Q=Rl;whp^0ed%G#1_Q6zLk%$l8^8}Sa&;S2O0&cC6 z7>p$Fs3J-NCv7t=mBhkCd}MFdAk1OALcf1r_(mdLo#t>*)U_1tR;?2~4$z&r5P`{N zsB4~239Q8zdfQqs+F-5QsL4%oqV~q(t|we=i!$0MK_TF4M{O;IHKU4SbG12baemt< zmMHZ60Bp|UIpb`-B-Z&Dt{we6jEym0pM*rm2%bmY@SYK+n4HuF3m9!!av?7BnF*-y zxxO#}9cV4*Cv`aVWIpt>|{ha{fVyw0c1^%--0ir0N(oxGY!IbqDdhKXP;n9q^a z<2}xc{L8|9isCgJakh=)V9OGLt^C%Q&u!$jBe5ud34s1tHw!yt@XO;dJVo)rX{L*P zLo}nHnx9-KY47lAN7lsyHCWfpQp0s{5#n^0dU+A2*l$G@F$8;g&MS@A5W}GGiPCt#H1!9{1N1yo{bn)g>6R*Q4kH;J=QjL$OED4-M%&a?+3G@S zM?P6kb+g*?YxUH~D4=33Q^BQp*H0@B=ak_+C)SAiWJwjCa9{M$8D;UJ{PMf71xv4} zF=}{aulO0Iig*F$TvdhPz~0E}iRJNr;eO@u`|>Y(sIGTBkw1zC_*fp|+FRBUJu#m> zxIgDF1eb=>`^2mBFAERo6PLPY=|lyo=Xmi_&+~$_w_Xgd>=WOk*9-hvs6KR(S{BCf zqGS3c24QQ@nON9Lz04n-{5u%+rT&fT9kZX<(Q-qGzPnQ%ubVY@_Dn5{2h3f8`Wt+Y zwwZc`Dzk%QoeT3ack>iVp7% z2H~Jb5LNy>V`1_pPNKCb`olGv^D=_{-|#1)zKmjGs?Z6@g0{u;@y(SIp8F_?fAbLcr@E_LV%Gf;SJ&IQ4Kcd5{WAoCiel75CN6E8d zUq=v+cjDF4y=s0dng)Mk?*AIapsg@8UbAWZ9np@)J{vfJ`8v_#5mc4T@!+YE4B}^m z@bIsbnmf?;pF^PjmGww)DFfsFli|Cq&YF~}4X8&+2Rpkbk0vWrmJ5`4$d&ey^xYvV2H zcM!kpZJ3CID*>|}S9Rb;`xd{y`uiP3Eq%@ zOR4(Qc*W%woHrrWF)QbLZUhrnPq7Gx|o8gyr@eLEpksx+^4d@&1o8B7dHFI`QkhdPu z@mZqm=*dsOit;hRca}L+Rt*;Lg}_j zX;?VNE8qV$Fjxphd5578notPI&k@AK_}-_Eg4928@#!!sL-xU-R>J<=XQAp3kv7+5 zEY_6{Bfbc4tdILRX#e&4c;h(rp#VImT7gKs)#ib`)o?LPUOz<8d=?S5Hpk23wU-}@ zW33vK?;^N$CyYAphAj>8L2axGb(7xT^Y5_*eGNV&=}t!|Euuq#`vb`pAdjUwUfW#I-fRSe{=GC{Aj&b zKT-Z2xa%WjYz(EBG1k{Dm=&g4?T3-!3Lqz|q5uWZq}~QK#UG|gHTc`NFgrZiU?(^Q z|K+gYMmy9mdV0s2U9O?Su7wT+SvLuaP!sV2Rd@b62+>gaq#3Wmr*De2`^m1Jr z>?6BA1*JPt>DI=MXwxllkZCN@8?jABz1S4@i^3oJ#~acmV7H#6`dC#On5H9ynVx}& z`fJ^&vyY=XQvd;v2NscxRhPo>^#SoswynUg`OH%EMOSP}YfKhU;VC-P93;9vSD9`G%(x)i z%V&{+pM}$!;zP>$+xpjz;i*mWQRz%rEO`ar2lmt_%!4a|{YIvAwi<~{$uuCu45|Lk zS*7Ds(7F@U6U->EgXiw3ybTaEpGL9)4Iq&Yv=yB&jsJB{rlWGYzEU~a1e8opw3sc* zh&Oe`x^|J>FQV)!fPgQf00lA?glR7;s1=tXaElpqi?#o2zu_xS8O0d*QUGmn+l}pO zV*U^alS|fPb<2)XyNkItF=#%O2jWIkn{uJg-mqn_O& z(YcMM6dSRAU@W|NsQ{iK$LjsvRP>aRfbk<4mwVOzt?;b&bPc!+3Vy-Qj=~II@xW&V zC<7H>8|8cir@mHr#~!6uYxeecM=i4eY(Eh2>&Ecz9wEU@5b;)==1;4|t1r=9Tt`5V z6QUyEyY4J*fWY;XTdqx*`<=-lu;tB78C9 zZ0Y@IBL`fbHO7DH>-Ngm>LXvXo*nb|1f7GBz}N6L&32|BHF0lMrYpIS4$=p_Bxr@ozG$lh8*PlJOBkS2WOBX39qtK&E)FfddTk zHc)Po)NV4|pQYR+%}n8tar_Nt(;w=LfSF0?Q==KKtDQ8RPyaey?S~;`J}cBz`yBjM zRre>tqN?))#>3b7D1?c>M<)Kx6&{BC5rrs#07h52Pyhk{i2@X0u3~xZ$W^nN;T#Fg zk@M~WbI|~fK~Q2?IT}%tsVDqn835b7R5x_Nlh)(116ITGiXu~6hpkAXeAEsznnj|r zLIDIYiV9Ew0gS5x6i}bY`5G?&m&XH~RjZB%xY>{Q-uxR&!lL6Tuq=8v^V@6z4|IzJ z-(?HV2!HkC{r5Zv@}BQ%B1pX;$!h0!8~D$BI_G4ndluen-nji6T|i|r*b^{%5qB>Y zygoc?XuP(T`3m--RK4WR;t3Yih9h6XJJi(Y1^gSmd7IJbX}$X*Ci)no5~b&0x3Yv@McVsG#%7H%KcXBf z;$yzT#VgVcW*(BLEC@WT9jgOK5zb~4%nQ$N!;1X@z(wjf_WDtcMa6h9S6CFV6Og<( z>f~T34%m1NX(XgPyS*eny|}U{I0WMMhKeE`IC20&H4F}gq^;cj9iNWv4aGWAV})Y& z%S((DhG$3XZ34m_+T)WaFK_NBX{oJk>g_+xSUR*$h1NCo?yEy*D{fzembUb5s%Wan z4z5?h^-Y7C250MNP&yi#wn{fT-0Avb+)9xlJu9w zl=R7#3{a8*f?I;T$fP5bwx(i;dbczc%hQ}9H`VHBhiYMoiq}*k?;@fx&crL#@k(VS zbs9U2tW3+w1iN>8%6e&8FNtH{Mbid4ITJ5ku7%~|Q#i;G_SUlAGLEf5T398QQrO?IrCQ6X=3P*&sELLY)HwekUE^^Qt9QW_OeC#x9GRG-mFe}b&9;Lx(XCO0CT3bJ~^zT&*5 zawk1{7Sd~w8psAX>Cw9otx>R$mWM@dW_@6*Nsm4TVL!pQ&aF<$!Z$|5tDIt@Yk@jI zb|lr*r*WSqoqUsEtd88rh(wD-PJpPvF?ygD4U~BhnF=$p1}RaxX^?b5W-?@CgLSmQ zat1`Ex{PQ8E!se^H!siij%F=tmIXNqTePS}E`cc9j&!_fh?WhJOCfX3_qE8ED=vTWywH;vWN#>&MIxm7Ywi^j<%Iim4e zG+x3S(F84;AeXu#OgWn-YS~1&%#}g3xfX3MmqX7vZoVs!4Jb?zePL*{l`yK2#{auGz%(35W3O{?5Z zLaH3$B)7Yk?JmnGa|fT9S~gSo9fHVNj488pdb4D8COspXtwpotUrN-RJzVdhRqi2c zsnQI)tc7slraiifJ++!WWf)es+y=Ur7VRa&b3}V<(cXe5NIhcB(V{srGDozJ7Nz$Q z?0oJKZC@?hS4L$-#&7n62u*E2;l~~#A2y}1zmB%QjEBtamJZOO17s_RvYR}HtOK>| zK-m^D(?J@I2WinkvSUVM3^^Dg7;>=e3Q-T|K19n7k^Lw$jmfAyRI5Bxj#Mf)&#tP& zbiBjlIL0&6X%la*jyG3Mhb+st!+plYtM<&+a)j1$goM=M&X)o$3*;us+|KAoEjv=~ zr7Wv^2;bD+j^5)mXwbuGXsYyv}3gF7+FJ^@i66!lQ!#-i{mu)IBCL% zNV2Kuz>n9m<7E@d?C__?v=g-K1ewx97T(h{iIX(-B$?ZTiX=L~vmdz8K zj_$Uofn%c4tH# zWe~}CWT;NaPqZ4!DV9Pc@j_Qg_`%qCeX;VKQ`jB+XKcK${>k{^fN_yj{oEWs^|)rV zpJ}xd3GVZ4Z5sxT7%-V2lH@qD3M39t<z$90wgRGBBkNXc^C zaO~zzCiZlHrrn>{;-}7pDdwBCdK5E}oCNKr9!xRcV$&y*G?O=TA*13}tAa>w1H(*F z4B<9QAd>W*8HP#ZcFjN^L?ris5RD2(#~oG&kvs~9>7)$dPD>z?$1?=Qk&)Ghhud!%Wm@Iq2>0g&_~}&k3tAnFCX)A{&P*jtu9jH>k-QIr zJ9xgR3CIgOc>L+l?KD@+1}L*)C`e~1|gcJ8XfOh9YnGP z815MKzEwdaQ>ntO{(nY{aQAJZUPqP5;oC$-q{?%_Hc@%1pLgS@Q(~*M9(Vwe+>De= z?HDimC`w3(a8&cMS;+FWgRtJ&%nw!dZmO&)3UPvXYO`*H`UNcZ9L{blib>p;}2mN3fMA8I? zJ5l1JByA^=Y>=%&Y52(!h@=$+Gd`Qb;1dF9K!FlT2MFwc)Dowm{A?*iGL{s#b0@7D1T}S z%8W>U1I3;8{KpcAigTc0dub{P>s>{ode2hq1 zKrxFRrquH_0jUtlFzRqSmzY&SBvZg}Yu~dfh-7Lx+Fx`}Z&KmoD($F5GKZL@gfbc+zmjik8uOGQ=*kvvLBa#ilP=vIt{@#{BBpZQY zD%a$;k0zk{iDWbrahp_yWe~|^GTerX<4sIviDbLptba3aHf~s@DX^4CWdt_$|J3?g}pj7*=M z=56=@O@SRm@&zbv)i+rkMDh)FxRY10Dv0D)FdRRZfmQ{PtfvYzS~dQd@)%@w5J^oR zTl0o6*b<1OF+(sex`8I3yoh8V2t8U#vtKGi@-*@C%H(iz1Sp z$Z*|%DZZ@+FBI!$pTOwmEgGidm$n+4Z{g1O0 zBH5Uf!?K(tF5@kONET-qV%p{e%|IVQB=>;fb^sHt3L<%gD*Bm6o2GggkD7ErUq#A^0p8(f1$Q zSqhP?Bqie`93r;23?liS3^zABSO$@-agtH@DAO#1NMhB{k#=VgJ6Z~nl#$|kz;w$X zk`2f(WoA5ahGxJMiDX+a+^%;gt74~o%s&L*vFn-2&Xz(X2WF*Wyl5B8Ad+*)aJ%na zErUp|C&O*LyV3u&0|4g91EjcKw7XS8ByW-7b~H0BgGjz4!+5hPkXf360wI#$!LW(w z`k!re5J{{CI^28dJuHJrdXeFFiGQ;UBEdPVJuThSGKi#|jI=wT?PV!Mf&(D!&9o`^ zy)A=CaIQ+va-U-vM1q6BdNTI0jD6Ci;P@w7W+s_^Erm#Mxl6!NL+21mV zhH7dQe zLJqMyh-3hDL=^p~=1|KZ!Y9bUa2?<<%OH};WVqexT+1L5yxNeL?$OU2ZYe~9-K{+h zIl?lCq>Bu9W*%q;vP&dqf#I&E9BBzhs`_65hI@~3lxCo3CX$Poh?(#j2RYg@h-3*F zZo^Dk29Z2KhUrvIy&PlOKP&~zljlLPEmL)w$66gkvYa~HGCj^Rh~$%8#_^UxBx}g9 zUAJ!kCs+!RbdzFcBF5AcH3OCsNmZS7AwxLH5{RS*1h>#TErCcHw1({Y|2)eel71N# zrp!~CfLbAvfgnV8pvHr)vUK5Xn(g;a1xj zRt1rq0fy^f=`*bkB3VEkZd>@fWe~}&WVo}Gvn+#1UMIu74LRE~hy?F4m|GdFKbXor z$5M!79Vu>uI@dCYq_i&>?tJ+?%ODaV!|ibwSO$@7n9ik~Zz)8wB^hqrU0@kRvSTh| zp=A)sY%<(CrVBNL^-m~A=28|}B}8%t8LpdMWEn&fk|ECY@M6m#5}b(PGI0NQiKP(9 zyQH|Ia%dSu@?|dLQp+HcHDtJ6beUxkNku&v*uo z+bv&d8ANgr8AF^Bxymw#(y}0za0Veg8)& zBXTKAtP&!bO~z(UGS^uKkzAC^xZW~|!v7cUcugase3bD0H_~ktUQySvpKA_gD&% z+>ymFsobj>C{H3;28Nlk8Nz**KqN2a5bn>+KL9a9%`l7=4`>z0E0HXx6+;~de9$t8 zWNjA1nDLNiz)m7*>StFMK~Vnpuw@X*U@%PQVN^U~2}Ck9hw!K+5XtZy!ef>|BpXMB z%=-7^mO&(ABZlpKmTCgZf=DKT(Bnbh6IKP0%ml-oh(BowM6yRe-2b_Zr!0d=_R3N5 zv?UP9J~@PEEP+V&&mlZ(2|#J|kr{@m_2)DLIVF-qL5OBRrb3>#I*8;XFx-atf+Y}1 zXHFW+G=bwEp>$;>V$66^Q@|jS1!TCR`Ae2TB#UzyFIxtY+)GCGbPwa-E0#hekCEao zZojG-@L(c&2@JP;Ty9km$s1JRGG4O`BKe67uG8`Po5}9$mO>svIO z&tC~8B*he(@v?Wd5|lfUJOGC4W$#%6kvs^3d)NBDCcuS=ummD`E<-RCw^9?32$8(NM6!J>E+1M3k-ScZUZqV(wZF@&+Ck{xmxpIZiz>`jI{rToG$ z@cflfj>x5aX_XL3iVU|zzOoD=xsVKZmi@J55XsGCIQP$K`NmR+xT2}Du`g4K~(+@CFlNIIaSM-TFgWe~|>fD*e^~~RY?I6Qcf?2wq3oQS%$kTI zM6wSVZkevN3?ey-47V5h)iQ|WG%{R2Os}&PB3YD0G4201%|N{n$r3Q!V*lL|h~!of z++zPj6Hx3#ayQd3O)6~?`P1qkl4n54+9iSo`2Sb}k-U^c=(YqRSpkB%2RBKqw*(@2 z8-!^7Z5%x>7A=kt$va>~HEVR>up%y>pe%^wQ>7#O;R?+dQK<>AlSrn}igNe) zUzMd0$!?@Ly|q+Z29X>}hTG)%0=8b@Ba##u?phSiaWo8|G$tOTm_5j*;&42w$t{sQ z42CcAhLyQfBNM0breK6ZVhQ9wNl($GR^9Ex_qgH}yA(E9~xYNph znt(zjlFzBa9V7YHxh@YP`HhUM;hg)=a73e_5J~AkP}~gwIKR*^h@^uIw;vVDAd+!p zxCJuMGKgdf88vSG53&>@*^?A^_KJgxj3GpF7#Z$V3uo3C29X>?Mpk~2U7Y`77(l51 zGjfw@u@oY?D3>wBGKgde8E%R2_#$2KL~;)qZq?w(;^_G=p}atfJAc6m#YPE{tR$nw zx&Lmn3?hjQ0>kyycFQ1=1~RN6X|?3tVJSp1oD{cMhgk-Zj3&cvc*8A&NVX%xCZkfp z`8y^vL^6krv^&)rX(>cGBDs_d*VK(HVgXi|P8#WiFM!nGR_N#0;E+!rP`vkW2` zNQT>L###oE3@5{sd)oBQ<1B?pwkE|GV)~--nt{HENO-cg+ZRo+Du`rGmI{-|M9UzO zqrph`=-@ZE6e2l;O5C-eNtyvWh-3*EZvQ^nsvwdZslx4wwy=yXRQ=yeihHB9rKJ$b zD`dDWVk^ralDEllSLe633?lg=m$6Nz{pJQ#ZIdJ)70S>+0K?iBn!!KyO~`q zgGd&WVfs5$9=mD=>>!c{z;MfBH;zBLaRZ{4p$_*RXLqdw13Zx|C&P8-nU+B$@8{~6 zWf?^BO|}j*|C?PHpeoEWC9uPE~9-cV;@!jQ*x8p*HVaNMy`_mEQ3h)$knmG zWe~~!SvpLS9bno&%IpAAjsV5&%nr0Vh~#MMFco8T9HbdgK_q8@;XX7u*b<2391t?i zL9M?Zq8V^9A~}zVxTSumWe~|FWVns)FwKA&M6wu+=pI8qte$HLL~=a{=yJ24{~fLw zFoQ^LVj`{w9bp+n@(dYn9~5W?%pj6CbSiv=Xo~AdOCXZ;+hDkN>qlt@%pj6~G7;Cq zj+8eGq+|We~}rEFC7h$7=@4 zgGfez;W$`YoeQP=pcBa0h&oK=8yzQF9Yiu74A;X>vIHWToFSNAy;BpAS0dSlX|$We~|*WVlXvie|tLBKZ^ycYFA$Rz;dnzM&4c#hqp;MDhz6ZjXGrWe`bXNDku+ z%OH{lGTcGz%uI=#Ny<=CTp#R+IoMjnAGA&of*_J^hv&hint*!raEQLr8 zBgHNEb1j2NI>~T7V;5Nlk$jV7hiP{gTLzJ=Bg1u~ z^d*);BxOD*?oCQ)8AMV~hTE52Y8gb*N``CdWtKrC8;I_M~Gy(k(k?i5K{kwaauC^2+nNKrZ#x<5fBsY-ZZZTPG z8AS4Gu8wOXMp_+FCqI*t8I`%?dPzi4NQ#GoVNU%swR@dq5J?9at`A*r8ALKVmyy1~ zQix;=Qrw>CM#~_Q?a6TOQEsvfBH5P=w~M&hGKgdz8LIEj)c-A(LL?z6uCLx|8ANg$ z8E*5w%`%AOQ8L`S$J;dnK13w%q(O0gUbq7PUl zL^6^Lw`w1>3?kW%47Xc;$TEmzFEXMMHTNG6YYM7`NRptqMf!*(5Xo^Ff+>$jH38*8 zBquTvGk%!f;W4X%NX`NyI*HWic--nBlJls;^o2&pQmcbVE>}9TpMN}IRS?P5RNDMT`e6t@d{(K3jnjSRP^d&x40 zWD_#nWwMtogGhEKqt0D_e#KIV@3VTIK}Bo9!9JK(-y8AS3V8Sc8ln~I_8pHN=OrMzX85Xrl_ zjJGX=NIuJD{KGPcbXHBo~t5w(d{J(9fR;WpS>OPpuLnxq}SXi$1dqB6%d2@wsIX z$@64nh9R~7@P(xi$vdRD-PxCxK_p+2;dTIDSq72(>?Xqr)z_9mB(V5 zMADlSlV8&`zts#>9+5PH;m$$7vjid;41&97>3d5cO3MadxHG>WGy_8!k+jeXQ+39Q zAFU1|*(k?~pDck$#)07WLaQ~Q63@R0WpgIt4pcuIN{c##Sau}CHS`zDAd-W~aG&S= z%QA?hiwvjXV*iJw5Xqt(imb5=BDt9iw^^>W3?g}y43l3|V!vtz>WxU=21Df~Gyhy? zbr8ur)Zx0=Zh@?9Wio5*ur`16u@nJbS{$q6z zNgps=72Q?^kQqExnZFF6Uul}+(P3S;@Vas*)}(sK9)fwyX7(}EQ3h)Bg4sVS}HAtNRp(u zwpLjNk<25*E%<87Ad&@SxNWz_GKl1|NJrNG+geK@lG{jeOQg;+h~yzMT!-AS4W zluTxqZ@py@N%|8~+}dlf6e9VN4AV86-mFnG&}fL{KVZ0a^s_36WIa{5jQ*Oz^=Cq< z8v%;j@_10Zb^sz7MTR?tXtE3rhJ}lGn&EwddgrUc2Vy@l&uB(h8~iChvT;zv4^q&O0|hFTZ(30;7??3%=Vk zpI=(3Eop1)B1q`J3lsautx&Shn^zVk>SmTO_@Q+d$It4Op1j|&$pa6bkvuN7%bp{* zoIYdxwtw4o%(R(9w;H-Z$E0C0aEHNzHXgZUT~kB9K7IP`wDU-5nGvt7sTe-|z=q9Q z#~t2#(1?-4hYmhq!bY2n+drKw9y?*99=hr`Y%hHD*z46b7Z+-N-8}7UB_cg)JlV;DJI;Gcf+wZtT;)pp-4Z-fa z?bLMaiIoQ*UNLj#<~2cbpOa1+I3<0;k^3HV@F9mxXx?P(Uh_ITkC=Dhajhda+jN@) zyn?cV(sBKY3JYgXYD*OMs;a4|t8Xvr8{4b8YV3f%^@E#-vjp-t-C&3e9CS!x<4rdj zH@eZ{){_^`re}2C1x8Gh^ec5TJU3vK#r=I%W zvv>Uc>~qdL=c-4qIPdneFI*I!eBafVF1+ghadjPVHFjbA-0|MqpuMD`sf1J{N+eoF zODV~$D59t&@kXJ{B8f^02`MuqBrPd?8JQVvyO5FcJ?FglcB${@JLmlGbDsU2bKY@l z_m&eUGmm8+J$!WI;R{J;Pn^7dJhkBT#s=VY5{3vI0@d(5|=JZ0K~ zsoq{Q=d5#fcJZF*HP>^Mi}i{nQS%qj3mg_LTCmL5!#^aPo*6!m4i8>3Kir*O9TpKh zjw7qe?>9)lADi8uGm^y>v(gweP)*ESO-@c--c(jzZ-n9aA%nFBjMN%oGFabC-@?e) zY^2X)N26aw>7h*0lZGw(rc{vn^qJ-hqts zsoQs@?M;r^6npT1$O8%Ij}*kl#a+)idFgWD&Z47V($60~a^bAg+S#@aJ`QtTLap8G zXE;ux9UMKT&2e+HRhMz~@^YTDe&J$z@rVVB)@TL$h3PF1)OA=IvO03rn(;0x=Ld(b zkBHKcvmLJ{#n#~Vlj|of&e0mApg6prhMbgw8e2`7qpqscZ@8Yen1Pm&ih}77gE88p z4MtlI^NR{usW95gA}Ca$w6eJTc~#}dn!DANCFSL}UcP&Bue!7LN!{)CACK?)_rcg01Y*boyPo49q?uJcd}$-Ay3 z@7}X_|DMFOq^y*)`%mU>KXmHK(X8C8vzMBGHMadqxp?7hLH_xxSNC5(dp38|)Je1b z?B;m(AH?a$3U{Aw@9kh6>Eh-*(|Y#2dBNW9u0v@v{n?R$QC^Fe2m6Nl2L~@%zjj&R z(lslbqe7QVTDitgdVsk4Ky`5w0~;S}M?1cZl(f3!a0#h_@-m9L@~T`J^P!fOmP6%v z3)jyN@*in9#@Nu-x~$*7Ew>i$9I8F4WyFy|v>&%Kj~h z=i;}-?>du_9GABJU|d{ua#6~rm>&gE<`I+uSr|J<>o zhtH*6&7Lc%C?4r(?PKR+?e6Ao9T~D@+SI9Y?CmFdtaF~^YD>>qx_G+Zil_+R1v6Io zty&rqK4p%5#Ejsu(k%IY^59KHU0M14 zyEmG@K6}>L`KZ3+oF``;Sgw4TX%{Pscn$-Mek^?%NM@A~m; z&+XLoZCj&jHf-OqJw84z?di^KX$M{&*d2X8J>@`Zdg`fnCyNTN9KZf1GyiCQ*2T78 z=dWGAa_Yjl3tui?yL|5JB`5od_7iQLrp@5ExzC*BIBABPil?);nuCw+EH6*m)y~$( zH*(>6|A6I-XDkR?6c*$gK0DNCgu!qJ9cMbq-!H^}09&Kq7@jzbH&Q{KBhHbP(;00r z$Z&u>OI1z5NJDnO2o*~ULruf6L)H4r4q@vL9Y1c^NMmCuOAAX`T?Jj^Q8yZDDxY@M zS6AOFFMZH>yZHHw|DM)8t-bZ3@xgPtyZuIaLt}H?e!&f86|Iv(G7-TkQh+gn%( z%R9SYe`)&mI%EHif>TACqId7wl(lp7j%}Bd_H8?mygO}kGOUCf61QB-E8Lo$cl7Xv z+#^R0Ub}YW(xuch*9*=jT)AF!>C)+ag;TtyO`JHx(|*CU8MAEMohRBavbLG$GjIKD zS1)?r+PR)yi~LqNE||YQU}+F|VDi$X%hm@5tqn3+AGvZ3?H{ptf$9LhgrwS_>0GvW ze?_0kn(|`(RAkf!j8IioqD(aSEJIzxVd_J44b9Ys50e{VFj(Bwc*4+rqehJy!Zo)r z;p^Tmd;RqNox9}^OKQtrmE5@Tw!Z3D#q)cQf8V3uJScnoxVYy{OH1Y3wzk^lj*>r( zt*`2Sb+vzQ|Mulu{hy{kKYms0O4+h0HFeX*?Wbd+w{Fae&dA6~+kSG-?#-#!b|2Zj zepG#nZtJ*T)>QH0*~gX-H7(t3 zA3NWE`c%>Q`O({s&hCz1cRzgZ{94=4@CwcY*S2qr-W8jCAU|>U$sKWfc3ntFD2k8Y zeBfa6q1`D5j%O8}PRznKSgoHWrJmY9(bcc$m(B zp$41@R+i!x!^KR-4>8x!(^j#pD0%*=qVCqM#`3bV&XPy%4UZ@0gFtZV=J{oUQ)UppIH?{$8Ey=njHgruE2cjj-5iQg5! z;mqEoq}=VvIVp*$=ML`Ql#q7hL{V8O|w z9&9*RU)EGtM@!yNcC>-PFbhdjBW=CWQ7Ys3<8RhHude!W^X09oJLOH4RsTJ_Q`JDn z#HKx|-1%nvj(ztkE>`{MuJ3Mm_wG|uap#w^ZyyV4zJK`D`n;s#YUz)r_RdY)H%BLJ zjmz7yW6$36n-jM0J-IbGB{?DG(C(y^nAq&3Ygxy(UMaeim7o1#Pf}ak#*ZndPMkP> zW@lF6wd>a}pWEa)dB(&^jw?J}W;sohT(r=^$;pRaI&Z4G>sp_=Gbj7bnHjk}(kp6y zpzm^j+n`me7Fg3u*R76>Tp2KNrEkQVxshw72UxJA2Z;|dk(K64OR}_;r246iQ|+gs zrmQ%Kt*Z!CpkkqEpsP8A8aB#AD}Xh@Fg&zh|CPb=#@cFQjNlK@y}VIztL^5?8|4QM zY;G=p)Kx>j{B`?w<%8!BI_pax{I~1O$+FhYYS<0merzso?QH&&dHC|nwyye?mc}1H zKG*(AiQ92Me@8}cQf&6lq}UBPsWF#RcU<1HD>3G%(yLB*5AwWR7pBYiPu(b!+?U@wt*L6%B2cw1V6yg?UH5Kn4 zb(P$!yjOX%^u{mxL+5{We_q`E{G$Hh%aYDVPyhU>c-Q^5r>o(6+sD?rckjPK(R``x zZo1#z@ciem_O62`wr);MJ-jP%^X`3H_Uzc2baG!p!nVWbGES$YY|c#Ge?9wD^5LvM z+s_}_oOk|6X5xii7hxwji>n~!@a4jy$UCQT@gkjy4)?ZfquRHCA_| zWogy(>gewuo|QG-yUeYF z`LhpyUbcVu^P~KCMNi}J#^1Z*c4S9iiphxI6Cb;2u6>2_;vX!og+ zp&m*LXb10LpSiFOEb?C9=j&^~Z2p=x(-*Ar4Gr-NSrr=Y5E8yJz-Qg$^=sDJ&gW7r zzW8YILH#X9^s~3pl~*@YRv0KNW}rS~kcO(6lInyBe8cfWtt_<17>v+YHXJs}NO_FJ zNK<2^XEkBMSX1e{PbxZJm2CXp@UY?)UHYJ{s;>S~O-)aIZAC@Hjh9dEJ^A#Yyzx+7 zO;=ONn~vM9ZLhw5diVJEXIL2p-=DLViz5UmENt7@pqsSX{dKVQsXEZ<0Xn6|-4 zzP6m%c#9!2CdMX~EFE(b%kn!-#U(e(ZkBzaZ``kl|6Y8j=fU&)a3uO%_48$IZFSGj zpJ$KemHzp8DgRK_x8`fd3-7hQJ94h*(VLbNR|}pue!X{W%hp{nMHxFb#qWqYu_Hbi zu8#8#?o7KJy|Hjp%=OJDqc2_Abp6uivsrsC96OSqm{VAA;?n87(-$*4()Rw`w>e63 zwyl@+TzebZZpsuj{^Iau1E)^+c2aY8^KtQTbCXi^qJ!4h%#ZL53UXVqc=hU_uod&* zvSwb0$%v8T&FuUm`wtN34(CjBp5!#qgrhXsbM`Dxa~U-SIW&YVqr#O_HP`Dmc({eG z)-X5^_(%E%L@HTGPcStw*IX4861iH|;`Xi5>h8z4D(PC-3^pH#jX%)&mI!rK4+X+*V&z{j;2|d{PyYzTw;b8xPy= zJgus#c~M{f^ySMpk1FbKHvRbh>u_#W%li*E+ge-8;r_tys-91sXY)>9EhugHyeoCX zmiX+A>HGE-KQBL@2p30NQ_{EX-JO=XcVkRyboTY*SFRT2<=c`UfkKHJvQK(?RQ2xa!* z0n%J`rLhBskF(G=N7{q+_4P*#)e<)vZ?JwLq!AiDm^Wd#-p$Hq@95{{w{CAd82x(d zmh$2kwU1(VXFR$8XlGjD!}{_^%^z>Sf7R9Y=Vn)1$CZ;uzIXj;fB)gd&tF~Lr>+(> zeQS?7n3@~C?Y|o(8&l%8Y&*Vn`@yn@^#^yuiST+x_NLT~?=7u41=*)ElTYMc*mC_; zLCg0amrlcf=~okvUoW_{!NzV5t-zL^?&Ip> zpFKZLozJg2ReJ02&Fb9DW6znCgIo4zBpyyoDag>Mxfd>^7F@Ypc>YY`h3i={XD-dAXUw*rJ$tTwsPmGEGi@9vI@qtBHqF5+VAkA; zGbejYoEWiuZlqUW5N*B8Z}I%)i$7zbPqs{QUWsyU!lgm(@Lde6RdX^ZQTTci+7K{^{%2@|O0x zAH}a4dwP0qw0wJA_x07|_;ZPSuBOJPAC68so4hkQHn|`*bIYddyVJI0#Ksov+i>v6 zv7^T_PaZ7DK7C+!&dK9@uD|)2QIvzv18{8^O`o=%;b}X^J7|VS_zXvTd$*|p&Mpq? z9PJ%uS<}{&*7|rZqNmJXxCqVz(}Kesmj^6c?hz8UGJIvEi@&emDnD;OjUg;9f1oB8 z)&Xgjj;ySdhJ=}vq-lSi>YzcU0~D3@MsNpf>zPYiNEsLz4K>!69&IsfsM@GeT6}Z! z(U$bMkxw3fsJL5GT=}u8rn0u_#rKzW|2==)Q~R|3(UTh48X*%6z3JbmxJ0|$!IlG2in z?@8RfBQHC*DDTkDQ>V`7ox6~5@yexhJ94ibJ#g{rg~J!=EBgv3&$F8|XYJf+-hQr= zZG5LroiTIz)WGRJlS8fDXF7Y@dU`Efwru+Rg=>PsSGtD#2ik^(Eel^7G;QUAd21Ff zoE#A)B{h_%3eP1p`$;K^%PHxw2)#kN+Jjko zW39}F4>OyfW;x1o6b+ZkCT;a_Z}`Ql%IeYwx7uzsSKYZ=_uymA{kpn)rH`LHdH1-b zw7dIVcm4b3x8FLRyluPpwWFu=eaFj=-z|R{8*es$jgKx$-IaVfX4|G+d$t|fwryw9 zj%_D)q{n7&NZg%%c|%Ivi7UBT*;zR|P95EN{P^h;`Nt1jI#qc3d{Mz3`r4(#R}Oj7 zv+bu(Uf?-nmcwEPcZb#9&OY?KIbQ4S>?Xrr;5#!S(AGaP&~d@))qZvXVF6QDgwG6L zw?5cuRYcgV)uACCgYfS-60__l!{MXuCRr09*_r1zTci~oPPwBIc zy04Az8{b#K4Ze1`IhJyd{Nr;TETQReulQJW=B^FfHe~ME zk+^kV!tUd#F^3XjleZkrK5{iLJLA;#!>4yf=N!s8^sD(t+SP++3$M`yuo?7x+%nhE zZ{j4IDK=A9S-aWI_n0;}+{NA1!*%vT*GbMHQ+!-zuUWie@uGlgYNQQ-~Z_U}JJL2^`o7JQ#rrJsh0*dX}5u=2x4s#$7Tz;4Jk zHX@7z0ieSbp2SvU_QUEFc_X#P>y4L22BynLeI%*o$$QPJs3 z*N%L@nk_NKXUZg2&|D|$wNX;O)24aMTQkdN8tv{qZ)Wh6*&eVP`bRn~SP`&#;WAC% zFu$d1R+)zfPgowYYV{gAWX!S%-jrc7NQ%W}>B@0AEJhArO<6;XbtjBMLvEKnE4%xwtfcz$gW}pd74Pfe zR9ttv?8}Rml6#L!YoGpTe%Ae|tLbBDdsE}9*3Q;v4ef7Vw!?j*>aSnhE4mvtWk3~d z$T$=e9Tyk3bL+1(u@fiGryo9X_UzsqxI1z!J@YDk z?)c@47o$&KKYDEQTrX=ohrpTBoZO~OR^!v_7SCVnOZn3C1Lg-w1o;LmpQWqs;~zL| z{Yw8uOBOHHSxzrpIyNGB`S|(a;i0}OBg3U#?5$ngT#Uy$&Y0@uOZN>9jyjE=_O&*z;Xz44On~!_^{zY+B)u)m>)wRv{ z?-UpJ)IO`JyI1?XxT@>H-G*nKO)V{5w|+IXwcKm^(9rn#RnNWdS5G@X^}OnA{95tm zTi3yjX$hyIqc-Q>i&uE?(Go`0~XqQ>Qph3z|4_lC!V7{iI2u4&JUFaJ$^iDa_W(-7Un{ zd4>IAzXj{2Ml4gh~^MvG}r`AM9SmnVV1+p#v8LWM~^XuLt)R&8&zdD zZq@(y`(gE~JJ0{Sd+SBl?dNs>)ispV|5pav;m2RicVB;M`p{m{*!H&U-On%I-_^B$ zYb)+-=z(Lx?@gNux2H!(rzFGkg8cX$iB}KqOUgaCt#DsjdiMTJ8JiC0oy?6tarjVj zZo;|ahYF5dq&HkWd1hN)QPH7-Yex#t9ELBoCN8lQK4dj01$xj#_a-u|(pv*%9F z$KNl1{qFwr^Gn&b{qcvkZr!or=;mG9GdFIF%S*~lN!zpkc=Yar8xvACr{rJWm7AHB zlC?MY?1_TBOgj7eF1RwvEj)YZ+J(a#3kohf(RScNTbs!%-KR`-@R>E$ZT5^n zA8T*xd9JgZ=dKA@ye?o7y~2N`M?lz$uvP2VM$HMN!`FxVL`1HIJ0$w*>Z%eN`aB5* zDFyBRN)pNg&_Gpl1r|q5Mp{=GT(P{V#>$C|-@sH8`m=`5KbKXkl;k?8|Iht?$3z`t;__ z@9TxPes**{>F)V{uc_%x&##Wctq0;>Y%9r4zJ2T5mhBr3r>3MAZrc_IrvbbdWG7|j z?aVoKV%MdDi^uab>3v5pUTH1beX4NZsf$S$uAe)4;qu}cQ>~q>r_6N#TI(dvNZOKjFHT^k+}=@_(b)dHGa9eYVrx`@r8 zIFz2Og0!+YQji|4qOPncKTutH6rZh54H=;~o-@Ko*KoLj5v|D`reiu<(#*unT*h>y zxw*O3IFq)Uw~C8@KQ6sd`JuAvHat50RQIU%=fkq{@{$Klk8f18eZ1HB=6S=9&##&u zwluZAy7To}=a*0QzuSL&Z}|De_lCuAus#T=S!EqAG+!!Img!8rr(t59&T`x z$Y-9nmv^McTz9vLbLLI4p5pBtWVm#}igiKD!~IuU=;-R}Mui4yTY9XRx_W_cL|Ax) zwTc7}%0L70Wz9z`@FbMf;5;y}zpeq2(}2rko{G^}Id#hsT2?y4Xp>>uqbXVaab`o! zM~)adMpKT`F&n2>UHY^X%>G$ZUEOfM^zN;fpQ;|;tA1KrT>tRqn@5kHe7e>BwyB}* z$>%p8JMdocr|ntiuV1B&tsNa55C44o9hndtwj*_S^2yZw2`PzN z_U_HwxicvzXIo}|Hryek6Z0<|J9p~D`Gl*7(&5s0!?CPuSI_P*nj8w30a2dwrrS?h zW;buG^}IPt9lU3IhIr5Qni4Q&vghO_bJnhar^h4*W(Kbg3tl&Kb%;$cJ<)g3ny3&@ zN%=8c4taV$OiWTrW}GtkKv{MIS3^}pk*lIE%hu5uZa99>SlV!~p}2wJ;KBNmV@6LH zE@iH1X{n=SWnqzWx9ds8jmjGpuOF7w+`iF#_ipv`>h4?hPhLL!`mCb3`rebSvctEl z{GkJRJGaCZrtgSJ#Am{d$ypgmdru|iZcj?v z2Tx8n?M=OW>e!XTC$7<3kL8|%3#T(@@~)kLWAWL%^F>)j=Z@|M<#v_-qYrI zO~((7RyjG?toEMgGHv>N7iW6*9G`h!Zs9Z?wJd7-n&km2{3fkh6+C|l+$)|HvLqsG zLC8Aqh~VI{9Pt5?>Xw80Q{w$OBP1jTiH}noBsWZ2U2%ZAyp`%eqp<@uX`=}S6Xf7B z(a2Df3)cgd{l*!YSn27Qj~y#%e7E{z*|TT2KGxJc01tewdsfo(@b>K|JuhCA*5539 zRq?L1;l=Nd-yU~-Y5G$7rm6Ks&-btQKKHbLfAFoR>tR>>p6vMaZRwk~?>q{xk8BiP z9p~@elb%|%FD7xz;S)#bt(ke3j^rNMe&~8uLHxO#+=SD)m-DmJj}~o$n?$xV7TEbX z&h=U`$<1}m#MRTi-Q7axO>^#jTO}7?!F`*_*qq6TU~Lxwe)6v)wjCp%ASgf(g&sO@Z9iY&i&{4 zzutfBZ0g8<)A{{dTfxiszkYUgzwX9Q%|54`Iq0}9 z+l57`s2HfJB15r$JUJxC)^d5dg^AZV!y5W_n3_e2nKo={85DQu$LHh7N9<=c170^5Qw}FCo-`+~DF&(;@ zA;Sdh&+y&nBzUh14Yxt)P7}sr7b0}@CGH)AiOi=l{aNHwITQ#2OW?~{%1FWoK87D2 z8V8zVIw{l$?{cjw#l7s?!rp*RrYC`dV?hS~3z-tg9`s{+Jb0Jy@Ij1SgqOf@kB2mT z85JbZV{e4+J;Q%QdL7Kbf+f&&0i6W8Tf=^b*2aB6A-AH&XZRtwf>j#k`GiYQ~AY}apreIJ4jf0@r5!Uz>IYykba0-G60&&T` zN?Qv)or~tS2)X2JV*DY2rhY^y`7IV43jb%qnZ{=U7qFj)^qhoKTwn?&^gzlGJH{rz zUbT1-F(x?by$UYu^${H@oPj8&=YhHlh1m0QgdUMRY6fiVSuA&~6MRF25yBQ{p`GV2 zsI>^8l#RHzXMwPnw-BL-N{qdP-XF*SCFBUXF#HVexeI!;(U+f)N1z%H{q|!7OQ2mb zVA5sm)s1t6JsxmjFj@)n5ofv-vH%cgs|3<66Q-W6z`?3W7nIxf5VQW%>;5|+gmLD$ zFT$QF*f|zRVxfG9xEA7rwYUd@p|^)q^ z^al2F<{|vDHdC_r7mZ@~^UzwlTA2O8JmKUcWy0PHK^^l@7$iMb0m=z1W+o2;SL33T zK>a(I5|cm`P;A-_nDy3K!WjoZRR(k0Bb4SV=)oU@UkJs>)aOyqi%G|#-ojc6X~zf# zegeT~X?VL7T+KuKY#4t?p&-a3oIO000;?nQX(MDg!_NnbnZX`33NZ@Hpur{{qGt<1 zJ|*nE^c5z}=er;nigE(`HpCeJOkh73^dyjzptdE@``(ohe*pv+svc@tgV2f=-21_0 z33_Jdg_x>0Sb{(1p=^Q05~x`)dDUOBI|b2Vys%^wLYy#!Opq3YF6tBR={q2_=q3&X ze*K&Yj!Lfw3v+~XO*pX4HDEeFVUI=ug6>e{2$QY9Hek-16Su{b@ojQ(}dxa&3iPI1j5Wo?(L4TEY6q zI8OhLkT4xS!V8EQ3VMmqV^}cE&|Jt?+~c9Cz4hV&3~~0GA$`aphHgxjuy@!_I3u`s z247GwJftA#sUkXRIzpGg->Rs}1}&^cK9ag2u|J*WsA5>+%8+=|yf$PWwQauw*p z^iZ8?Pj`Q-E2Xecxb#} ziUe|l^kEWC0ZvQUTP8>fqK$j1=*N7aRMBn06jf9#@P`C)w-MSoPMU?vFXHvj2B@)hCdl7XDEO{mE~q*j5jqKU z4IIqul)0ywo(XD$>|uiaUZAuDQll3NQzcq3*$TNX67G8)uvOw+5!SUBhRy^z35tz} z90beNLUag{cQa%Q6eT1uBP0$|5368{VEG_N5gx){+GEOi6|9pu3276=ju5)l5ri;W z8~hgbszEIVEAQ>i6wsL<^iW0LiH3BDqN00mEf&c0=)zkn9AP|L1YS_PMF55T&ieqjsgL54SIZK2b_Y!Vcr+RxCkWq)or+Qz7D)hTTLJZ%~LeC1B zX!Fo%Utw=9^Pf zw^lQiFM;+|3VT_Co&`_pi!l$WLl7B@Tl|E*bC6NY zK_&VZ^ypSRITBpMtY)E*)q0xk@;rx!E!h5Bc}8NHxmFQEl6WIineaX%oE5JjNFHsPNN9@FAG2>3t9 z{D}y?hHZr+V-Ea@>LYxHhJv}OXah?IIc!EKvjx-ekva{8GUyHzk`Nk1kQ;A=h&a+A zNY)P_B7;oPzpNFI8)3a5R!F0aX7!;_MqVfrWc7n|#j+4GM9UG4H7f6&W{86OOfy8G zhyyfth6wF2MeB${3wxCw4a*odBk{CQ{1^mA0)nl_|0q~TcY&K2J{VDCjYoSB{tKBX zYy%V@#BvU@Ldku^Pe6x(HA3bW7#a#qMA?04Cczy6Omkeohe9^!avvHO)Jm*h4I4X_ zg)i|T#}WL6@Y7;K9X-%zLS!XigurEA2y(VoI1Lsx7Ix#aXc59@VK1JJ5vu5gxGYLw zJr+d)A8{5AnaGRtkv0qbN)z!6kv|%WA#@vRm_e4H;VkS}??55z0AxfMiP9SFbis<*B>z`tk10NXdh9UzSyhv4s?JBvwtrXwiBfhM#}w!NCL|1!)Q0ULTFTb zh3!Gt`p{$`{Kq#K!f`m~e)3SRNDn@Dqv7R7gREqQnBG+Gt+(Kq- zHdrDI#~Ic=?-7R@HC=LQH_-$!%UoPUz&F$y4zgsds_ z6fN)Lj|LPWWGyhP4Xq`d*Y_&@7VaJjITQI5`ha5lu>OSN`>^gnJJ>kS&7idLwI78# z(Jn%hK}0dg9)gHe{DJnealOQX5_lFuKT!(dqYs(4h6acN=m2<82K|InIm7xVI*9#> z#yk`ve^3rlQRr$4ZX#C0Z8I6<0w-dB_-D-S&%(b_M+TjPdSS9khV`h=EEU$9zf=VK zDKwDP+{e~Itan8G?Gp@Z3Td%E_F*)JWx)A2J;$+(2qKEK1|%V#{xl=D|I z(ja~+D}aMt)K$$0L&%A>f*?r(%P_K}>k7x?{vCb2siM>Srtc(8;QD_P4CSlzGXC&-u3I(vrIXD|kA&LyLjP|UC!&x6#2zCQq5=8KX@JDAD7c@4 z&=oijGc>U*G48)Kn^{Wma?an2ZX8RM%*ufCqkwZfOO1;|?J^y>!B0GU8%u{U66Nqt zK(MeFC*ibRtRa1bC9+Jo*dHr532An-Mw3~iAgLK)yIB@}X6>O_He4Kg4*?NENi173 zZBp;FB$i#DX~`@XLL&x;P*yYc&_348J~RhdzJz8(FHI_INgtYnEIOPJ;T?xzl);K5 zNZTbLlEsSeGwlc~nJB$mKm#Wt)&ZC$gXBCBs(p_YI?75X2yeI$$z~lQ$o4WJlEXSq z6Nr672%TV^BZwv(4jD$dtjh#JaI#~NJl1uBJeGjwEUStj zBNqr~onzhQ(pc+TV}#Io)+0g`TOvXp6XYNyBO~lQ>nTaA-W*1kSWSdRJ6A|^ll6fh z_kRkJQdT=buETv3hEEx*lMCk`8T7hN2$i$C`mnBIQ5073S})B*R(}d-wMhJ97QUR8 zLAu34J`F4lg8b~A)x^^6GpmI)0%+j;^Pt!HpIK&P+HVVnkv_YFHJ%{r&kI?1u&fB; z-0QP1EE|GIKNiw_WjXW_*2VH6G&kTPjj>*w?T2aTzwD4_$1+5{b||tp6GW;v83VU}S@ha?nR3>;R6^?wE1}@Us83dtCm-L0+!6{Zqlu3vZ z1q$J5hY3<4$OaLjE3h6TM+i-}Kt+rkC5WUTg+<6S8Wvrluw#U%KP<6AB!?jWP@O{L zI6>e75eCA&kIg#=a!*5Oe+j$cSA8js=Ea;Pwe* zErmw1uT%dns3z=tgvPf+NMp*r--pJW-AY)CR?o5Q4+IhIisRUy2%n@5xNu;ES+Lvt zFdEPPL+q%56&}+dWX0z2a1`HN5Fr#nGzCgy8a_eR3sl62IIIB({T9rk0FmSg4HKMy zCbP8((aT<nuY8{-oIPUB6bo{sM`j1fe6gWmz_fR ze1mh8JHG!%5lE;JBP@V@tq-H6?3)A;xp6tWoG@Ah_dwhUpI~-nAB9%29}^nMEkc@5 z_Vd4J$oXe2o5lZE>nJvtAR=Kjo6pD2Z^v4LFnEa07AHvkUx)%e#JFpK;7JD5LPr=4rcNHsim>o@! zHr`VT? z&qNDzKD&z0MD@~~W>*u14!{Z<`U3Qz(K+^OBCJpVQGmSRvq8y~IoK+EB)P`sh+#L1 zimC(ELSt5n*utyV`m|hzC9(!CLq8ID{!rIDF z$f%yZOzht+r-2h_`qI zPJV}l*>ScI)}pvh=Nuz6Nxd{PI4AnhxN?dK=UCVU7(Q;CGI2Qnz!NE0B7{(RpK0!# zhr}{b>UnUU5=68%cygW-M0628n^R8|8q%wfH|JF!&OV&a;+gpTqY0-JEFNwza(;;8 zw3;VSNQ8L9T~8s+FG92HuxQqAf;@vwSxD1OkUW8S%%__ubgfsRMI0o-(S-Al$c=s+ zWeFUPFbD_Z4}XrT#J_P}#u-Wwkw1bs!(bLd4gxbMv;tm$`*+og;5ZY`U2qy^IIrQj z;aN1w?sfiJj&Gl7>p83Y2%|Y`2_x1w$ny_48#Zv(NyPkm-kB!L7?cY{mOw^->4j*{fRiB`igA~a&XG8z8OxnQwD#?_V-j~R(OQ@d6q}$bdYP=A6vF8MrcO{*Q)=&j~p_&js)p-H9E_6>CXo1FRsI8;jmue(ld$mB0Fwz zJ&7=p9S^yF1QFTsh`X4$Q7lj>zK$EvKL!*MMVd?9CY(j$DUAG+!ZK7HO(2nYS?XyY z@p9DjKH}x6dSZPVEJREc6{uJJ@zLttLL#M2~t>Vbx_EMXg!fik;0alz%dmg@$8Aze!@soKm+GNK>k%|23199 zT0t0|MIk4urVouL)g`ro1?L|XNTNb=toEkZ(pY=|u*L{N-V}!*zy3lb;3y`8oFD^) zvm~Xlirbbkv*Ou4l#(=d^}}Ayet_UvNfU*#{3vCN&?w4U2rZ^G3DK#OLL`9FBgn~D zLL`VXlK$7$<{ZuAt40Gw-M2V5nB`CdVx_fmI^0k$ic!~1=qzC@L5feeKUl}R%$On4m-g9 z#}I9&@QVd9C zdbI}80_Y(1g%I65S$}<1v z#|cV{(8!(@(wwApduhOa?4mqs93g6fD}F{;J~h6Vh@m+{%^)`<{ zOeUzf+<~D%sDN4|a|jSaFpOCpF@kAsmH`b75yC{i1ZuAoP4g#6-G6-%^DYsxn9v*( z1PJq4LXcH6MKl2f!OuOg(wHWYAk-~PL+lqq%|P%kQO#d=Fw^3y`qEtZOX;PA^+^b& zkk4}BGs9k=6;Q!{`wX9d3aB-NC_})SLKmrZe-i;sA(bfeZ)Jrn!$T<=6n$Ua~CN+&}sTP3XJyzJ4m}#|C8<{q+7;YAX;`FSgKJ*dxi0bO& zkLMIy_TTOG1;r(ZXxXW!cmxq`?sPLH4qv{JLH9urBdmpzBt)XUyp58T#Tk3%2SWoJ zEhSHo9e*JM2y*i;WFSFO{zBAcaY=s$4>7Xd(bOOUb%ON_)CCAW!=IUhvlUua7o|&( zwYCfr&+eiOWO0>?me?LZ@Jb-xYX+ZZN@zr8Nb#JAVWK069FKMOgVmcsOnDiAz-^l?eYw#I)Gm>Y@JJCnHDep`l@n*b>vhaNPZ#SCr zE|Y9HIE-Ng7bm@ zl>rFOv%>`fgzdunDodV!J%J~k43R7E2buPucbW&UhiEN|q6d$X`*$T+$m=hM#UIOo zSNWQ;_#mF598TC5oeToc3k1m7zYrxkc>V>q4h0YeL>hAcZXWA-u0RCuxWUZ|%$h>c zyjgu{Ht_-ojml(37=f`~3@uJhK(W9ucsdTbblih0rU z*bF23y$~wl#Skdhk3syXQeGTE4B0}ON?x)&j&z(MLb}iK+HjkfNoaoFW)KS9<{g#C z>&K_w_2U)qvHainR^r*Oc+ZLTr^U$rhc#-z&_C9{<24aPWc^283qeHIf8wb2N3?g zUNGca5kwT%;rto!{XH4v`jvzpIFIDdhqurF4yy@2m>}3NVn2mO^EZ-dp-#eSWB9v? zLL$qo_=gp+heVc5=AR&l$TC-cK0!p6s&4!<#EdbpHZW$)R@L1@xLkH*neNfm=O<8jd+UKi$~T8 zX;ugjlW7 zj)bPNgh42j#-Gtgp(1_)p^=3dc-8{Wb$${-enAc;Mq*QM@=p?ER~duA`R5M5h-h>Y z2rv;$=HCJ$gsx9v-t(mZsqQ1}0spxo&IVEH)$v~wM6{wj;WrXK4|@4L<2V1yhepr& z?S!ZVmQVaW7Ye=LfBlyTz2qY$tdM#yqgQ;6(!U{l!Ac9D)6wfmmX@2~oB=LYghuMJ%zsgwas}0$CzKm#Qwhl*kN9~`;i9c{52O7bwJoeQrM z17ge;7yB?k6SYDLjX;`cGEiDV`wF~c2|757!J!MZc4A1uWndw75EO zi)-Qsw0Ljrf)+2mxE+rFLKN=cWfr%1am6iOQgIsq%b7d;8>j`hA)qydr$xB!A!9RC zCkba8t`gb+6}}qU{lF)hYlcQ@A{0a^p_xD%0xb{dajOCIaoZ*s(=}ij1`I%B+~PkV zzZTljpfSNgW84;jAlw!hFztE}gvUA-O#2qbTVQ<5k!d}^06bnE$h0Mb@dJ3IzlAbG z77)A-eDJ>mxU8M8gw6xd1+8WjTnUIN!QW?tap<_&kp(qW8UJSYhsLBSYrL3oTG*5EOIM1x!WU}mqFEO|UtAV$lQ+X+_y!28iO zcu1ISg(sS!hoI0K7~?d1(Iouuw&tW=8L9C;|b9nq8 zcn-G>;5ppx0Z-v}r6sg9bp8l{JMPQ}OF=_Sa0oQU4xYde-{SSA_1hKo7gC|1$5ryE(vY;UzuM&)-;eI9_zZ8rk zZ!+VlpdiNggTlDIDHvNmX2wQDAvo=SWX5L&V@r6m6efUcVbTX_uwXD_Su2dOr3avl zaH|dH#}4>>9h6PCG!NZ{M8bmBXfv_*gS7(Zz;hlWV3ZEiwnA=Tx-YN};P#pzH=YP` z!vw$ojur4+39gj!h(08P$C^k3T!z~ma3P+!2gVs7!~^=6Ud0HZw=g~r^RZwjST}Gx z7;*s9FB4?{cER`teq!Xn0jwmWLKYh;g}&jDs)f0Dhl@ zoJXTN5_2Asf|z0gV~9DPumQ%DJP++8G3TKVB<4I6M`8}YKmcMq3_d?bVy=nmAv8|1 z9?{pJEPcg{(HjVjub3J759rp&E1?X?1+36aL2@2~Tv#tp!`FrcfFp4=51A9!tpp#9d7g(*=Th*B8W89b$R{F2(Yp-f^oYsP~nE@@^Z=c(@+McVUx> zgpfU^q2mZKc@6Dph#77RVB7|+Vi2s1&>BGqI^|(=0k^+WR6?fUdThxoK`7QkEU{ua zK!;mJ2pw(}U>(3AtA?=?Tzrdzhj8dLVGqEeeGg+=L0Jji1D6eeb{JTu2klO<%otj8 zu*@3cU>T0-b+8P#m%%dJZU9SgH4L%9j3GoY4pZi#>yFIWizFKl#gOFVp)$d^4)y@7 zNP;}nKi2dhBn{S77m@;NY6X^Hf@zVsHA5F++yaW|fF)S4Hdux|@EpePL7)mG+c#+O zAKb%=jAD`tUD*grxC##)g7G_OwP0^J0NeQ{z;U%CD#8RT_z9eUN(MkEU~R8}w&^(I z!U>RczOd=w-{gWPloY~Br^-Sn0UrbHo$KHsXq6$!rb2rbk`uSP1mk;U@C$2T+y!H2 zRak;<*^=b^hm;Qv1Cjf5&@KH5G&p?5?fjn|>z?R?x18(spC-z7vB;^b>7Mcf1 ziQ87em9!r42JJmIjJA?qAjMhU)@X1IALWxgCmAL-Z zVZj0q zlR+UYa5pHJrEZLhV2tTkK13)N6w?O<<3P~cHiS;Ao1uvl;7go?m5?kXp$@cTyy2nV zV5t9f04PZC&{@b*+_u3O$Lu69*f6d*7`tg| zqHfq+Ej_Xa$HU8e_vPeVJh5l+ckEVKhWq71Ds?DM!9e!>`gDh8~=?Q-ylv#PLK zAlblx@miWlj0Fc;EfIbT8wj}kV5t8~nk@7V2&Mz$ba2^n@Pr4OgIO`3-b-4Ww3m0zhfoE{`>+3LCUr3f{9*QD#JhTKnjFb5#(BXCr&`sCk z@jA32JAK7GqKAw{s6*Q$+BBDGKUp%Z1z3P_W72}4AA z47~%vema_{AGkaa+8n^c0Plo(5xPnU|H_4Ry0CD;ymPRn+RzY-D(EPH>#KCJMvOvd zK#`BS9?|LJachP~1EVjxEHocN^#j^ypzj8JAP8EZ$3hq3bG%ZTMIlrJV^`pduN$<1 z&KcH~l~A6ofUm&w!P~n4$1Pn-)@C#G5hi{Bf-W)v4v&HZLL|frGj@Y|?tsrfu7%qx z(0(8|gaqbcMx)5Vg@r8FG4$5p*&d*?g*wNIL~Vu(w;`}X3dRwz6gv)q`u_lRj|uYg zn0CG@BqI=ByUL8K1!Mg6W1M8JaG=N=VutEV;9xQYHYuokq|ZV@unu58fgk`YbQ*9i zz(2!+WeBaB8hqUt+SF!-j!$+?IRDK7OVkV?t0Bht0CE?`nlQE`mhn&oxDGS?3S&J3 zI4^)Adhoe3$sO3F1QuNZ3-M-V8i!CYeEtY^# zVT={91`N+v0fv|{2max4H{jUPd;y+KK|X=N-B8Y$?gHSLE|-G%{|ACn-~()_t2np~ z#z{~GSWq<7Ef(}0>K0FMg1RMw#F()O&|?dC0zJlM!6Pg~NX9}&;YgT|KW~TmxOIT} zxb22A#jTjWAcpsWA!hJDW#=89Rq@38-903E69|MJI-&O#2)%^fLJPqgz#D6uy08osOrKAZ&lXnsLY7ZGLggc>;J^W!jX}B^JRKMQfr50wS6E~y0$zZL zl93+@6Hp+k4-=7mp|FBUDE}##@;?UCb%97X;<|nCHInzhG^e!0Y@{y!aRM21!RZa0 z8kmF%loT%>3nuw=IsN`1oCuRqehf@R>2jEi(qqEWFd1=6n26FvFd3yggd0F}IR9%^ z0jm2LJ$&EVFiKU1t{|v8SgTfGF*Z0a2O<9iYwa5DbXY=`J#8IW3P7wXBZi6&!=K5*j9z zRzX8AfY;cDv7ZOWg7@2o5y8+fJvUnmUm#760r!CXFnl4VddH;Sz*NsM_`+c1kAUr8 zsvf0U!FgZD%~5xAA-Z!3)u7OVs3?^TFE3Uzk2(nzmaeH)X-uD5NZVlgQ2Im|e+9-i zcn!0J8a{+sLTM5B4ypb-obkG#{5zNpWcw`82z4YgG(_nU%Tf6K8;oce3NC@Fs9<-f ziV75jCMX>VRnatZG2&4*Bh+lT7vJGE-YCarD5>BOd#A`qeD3v0nNxPECZ?|SSBQ`y98(7{~v{?`#}%LtVfwj$@* z2wPImCxIzF30u;^;V$?jDm)Eal8XDH+=SZrB}n8?LCPJBP-6>nJ)hj>>wf@KJws6k zrExGhIp2?9mn!}i8S`pKsMj=t37n*}jo}(UCBP?@a$@7gu=&YaQEDkV^m}cbaL~YA zq~D_fQt6ARi_%W0kJ3xvS~c;@hsCK}p!yR&Qmal?^%dlCrmA{HWBrda={;|UhRJrL z(J*PE1RACu*F(dU2B9KKZ=oU@K?^t=4d5pPD$+;{czPXdHlgxaNSh(V&PO`H$}!6j z$f#pQ5y&Y0C^KwKwko*@5w5OQSM2=Ps{i|Ry49*9Y!rt4e0%YWB}n&!DgT#GI4uj+ z6ZeKjC|xbw<{a~SL`ZV#u?SF<{#JvX`Ui=aQ)vHBt5FQ58+rTo!JO^^PpgNm)o@Cy z;`S=ff>5Y>Q-eI}`|CKGA)ODVd%**7BufQ922*}Av|{fOL)DZ|ug6k;o}yg-Hkk6= zRZuwz%3_a37tDalN$@o`3&bu|PU+AvY#NaNBeqg>)45Iwr7nYSL*Uk3$7?%szn%$hm&B8wJ?7 z0xE2XNQeqZm7%DhI5?|lF10&*^&~J|{{aFSX*5mb*%9&Rx)-e`u|JqZn#cUVhzv48 zw?v#HP~kMh1LDK57uW?puh#zFbbfZ922`awdFn#`KM#IG$#wNXVm{VUlPJe;z zse`4b;5RRjo<>|Dr;CHnQK0GqCpB)P2=&P)I6ie=)@gl%tNN6~Ov`4T5v%F^ynhPK4m55o$G5Myp~O zXkZdl3O**@l%Eu;EsLt2l+=yd5u4@ca-fNym{pn6t>PX8x>JBP6 ziF5-hAg+nkkhmc<@flK$k$=`QN_D}a@+EjU_#32Avnj>;p2`huMa6%%3{>AjKC)Gy zx(r`>D_@{IH^47LZ>DmAYJ3Au-7gOEKk~!2G{T*54jSQ`!e1SOleNMFM=+&pzo*%e z?)|yYV7KpE%LCj~0 z@v|^H-bIBK>r#qNfvMtu+Oh`wz&R%&e-6C-L!_s{2asOIj)=~DO<`)P_k~GFUHoG| zGLEA_IoN&x9z>Rf^E}Ym)sJ8@NecvyKd=$0fxwaaf>w24+k;3y!K|QFFA5{8*a;6V zkzWmIEi7gM*c1L>oi`JB*I-;%9s_EI^!Hz&Qi}Ck zkwG^3=^?8;KSoHZT8E2Tqu@L+m1~VW%8!7P5jTT9DLnwDZTa5;%&XyK#65zUSHcAC zQO}$(-cc!Nyfe6m3zbt$&H@e4^S!*#z;Ai6>VbdD+bJnGoNj=xQ_?Uv8Fg@SWwz}_ za5q%&GD0+UsHue3#fbI2kiQK~9lHT1BvY1!kHsUuEg~kBUt>8i(DiOOzEO`<5}UN7 zKBejNd-f{ar$hcP-6+L_$KP;wEH01w5E?6m^o2)k<3i97*?K)R7K!{fNn=Q3&={2~ z0Sz@k+7cRTgY*sMcHFdf6sLS;0qUWZmFb)YiJ?+uL+XM=_) z%@2)HdIQ`8N3?KgjLMCGhNi{^s;STz@%Lals*Qujb|Jq7G_)%Y^M5H+Mj6|YK?QC? zWtYJfpd#Y-P#LK(VhX3nFdb=Dbb{|>?T&*5oRwz7-dVgz?FG}K^*S_{vpY66a9&!> z_QH9wXg#~dTedr{ce}?X)uVrOk5btZar*6%M`gwQ?}YR?cm&e7uoe*aLI+0l2vkMT z0FCHntOb=j2ddY=v>H~&VnyjcU82bioS(hWg8D=Ju%MW{y-XuiT; zk?Jd7g46vl;R79;l(ddIf)|)H_W#tQd)<;8B@t?LKtsa-=hEG^u!K|{rf^9u~f$Hr`4-6?L??(ou z-DEnIg)dNnvG5H_7lWzdPvINH8oohkRhdq+z|^t(lewOIV7e1>9&1Oo-g#77SzgRi z&<-tXW9z}UkZ)X69D#p?#j)Tea0T#MG(_olmhl7w?+4H#6lWU_RQ)DV2e4%muARuM z+F1C`$X2*%g^^Q-cVgt!v2z$XrDf5910AB&CX_GP2iyBPa4u@7F`SFiOmLnGy#rM@ zI2SFGBf+$hs6CrIa0yHuxw(NmP#Dfd9f?lm^i|;{SpVZpc9jj&j~2B}R^@m%1oBu+ z(*;M!#CZN6kJwCJyX`1f@Ew>c+;EZ8UIjVbc$?Ex!kyrxwqZCarJq{HstBf$zYOzG zem(dSrF~&uN^`)Muz^wKuxiE`%>TcTK^ui{;kA_3fb&rL76J{W(NG~>_%c*T=}Fj> z((hnX3bC)+k>NmEkIG{W08{#?EvNA?A@S?tJD-EeciO|GadiK`g|#8>%}*lLYIO)q zX~jgoumWsK72E)mQ?*6_THg;xD>(0Fr1fDEO1md>x>0xp_5qZC9RY~a_qHO?A?*qi zP`YzJ=0E-8h-7?ym;`u?E+!aYO_E(Tmsyb)Jtx)nmsv4GMzUK*_J?p0nH4X|z<$K6 zpb`HdybJ>&E`#^a?LVr(`Dlc9F)~Vf z6NF!}&ZpINFxBV6*{ECxJ1{(owFAS=i~>+037W#$s9>9d%u8-_`mr!=9;jSpI2V=M z0;co>Fy;5d|HS3sY?QXc|CHj#pshR{&PL^a5|vFih}Se{9$HO<0E-ahR8QrHoaTZiNab&f>E;MGMIPlBuyMiF_+t{BvD;=uspA-7 zHB`78(}^nFX-5*F=Dm$g=YR-x2h(Xw+X(d$rqhb{sqEr&*Fx^)T0 z6E37nuvpDR{tPTuxq7E-coqisw)URDTQCowXgs9#b@47aDeHXEPEiuZak|DtjOpkC>vT#BJO%kFxKTk3l(6w5LS;wAbnv)@hUnmt4IQSJPO?LzUk}csHbdp# zA)Ny56oJ=zpmEw;{^cU$&S1Rng8)Ps6QE++`6Qr+6^GznE|yP9zXV^vUGL!y`EGUt zjEtOf9!6Swh*sn7^GPQwygc(TXbkd-NUtI^S3|lKv!EZ+8IY67i(oKxy_*|eUmFc5 zm|(#$cs2g{*03m592%%QDvxT8Sl$Tf3NXEj5eyB)fPK(NH>8Ka14ad^Mc7Bs0J=`$ zj+Mu(sf0#fgYD@EwggNKUd1MrI@|%X2>Gu1cOw^Q2JifO6k>9!-599a7%AO+`g#vk zjr;r`LQZ`CAeY;S=|-#MVobL;pz3^R;Gfahq+;zL=Y0iCCaZ)7<4lw~dK;g5LH;N5 zN!}FgKG1HIx(=1=mvL;ye5K9j0!**Kmm|~^Os~u@N2y3OTpQ`T=vWJs>kpHV3J<{~ zZBed=HA$4Zk6Cf;0Uv( zs)gh8s0oAdL<8wk@ViJqgOgoFnh8Gg2h!^B8T>S!dKKIe=|7WcVA%VCW5HV!aa2QE zpVog`e44>&;*k*q+YCh712&}mm%)_Qo6YG}Fg^2~gpm!M7@=OoNMD|azw5C92Nk3d zQ0aq-u}R^>NcFKv#U#Bml=)Xl8%lnKVJ-`Ca-b4B#Y()9n zVOvTsgGs&#apJuxIG#ZRUm^{``c9E-2mFSdY!s&NH^^TD^IbvO8MEW&ln7N2Wgbt# zGb5NXM-l=OW<%wo*#DnFMqXsZqQc@yfvPD~N?!XJn5NrNa2Mo{Ljz=@hG^gcRNWs9 z3`Lq74N&=t2;Iw3?g5y}UqT3{^0jC&Lb;V#D=5DyW&!1oD?|C1|Celon9FE@0z_9d zKoJl>N(k?cP!&-jrOnU)rD2$!^z7$88lZbYw1c8_B33&aaL@qV0r?aSkVbN4p%l{> z&i6G2ngh<)APz6JWTX29*#Dm*Z>(Nb{Q(uzQ>l|sF-^DAnK4bKLG_rg>ygeyMZ2eA z1oe2t4{gPP>PcJNa-9~Ts-R=d(Xl>=8-Gv3d`Aed0SNJc9$fs0j?$X)J39I=%D;%& zv(hb%jRmI9N~B*PBX&lFdI1N6K1f@m$I&>|cALZ+IRdr~p~FKUuZ$5;z`6+@0gk~I zEMhP|t$ft6K>o}j6Y)pXQpzy_tU@v)p0Pr z4|MS`m#YR%lYHP&%zuh}?@Pw7*mzJyc?xpc@&*@NCOiwfUTPo!K0_7EgOkz`Z4#L3 z$)ov3MG?#jlK%sybR&EUapai>?jxf9_)2V2HTwHs^p6S0Ic*_4D1jIwM8jmm1Gh=V zm{Q=!$RC7;|AdWW(eM!DUj^%A*c?oY*lb)w&fF0V2O@tgI!8AsOT(EdROhOQzoRq@ zn^$`Of8;E@^M$~XGAly8jskSy188A6@@K=T>M8FDX_Tr3ABmXlF+w#$aYD5SwGR38 z21Ua_jCwZy&LN!e?K#+nW26+y^FvN)0?N~XlEJiraresE?JhD%PzuUMk!2Lc92(tiM!#tQZR9UqJ_K)Gg}ozuAbfS8Y6KrBhO{Mo zpaRkmdjDt3tGKBQA0SPPg9*qx8_ve_ztxD@!na|P)3~4nR8DD&RH^`9Fo4e?-2jt( zi}W#=u3rL^(7*=41jM^w61wghn9@Bk30>dcg$=^j;NdcC621m!G;kqs986FM+yW*T zSr&i)2TU)Oo&c{zhbL-0$HgpZ43iW?xdfP`EYfh8fI3tKCZP`f3#JZSg-NJGbzu^6 zzEv;@b---_n{+`4od}yyfcPA%9`QApgm^v$D0HAjJv(33V=#5NVhne95KKZHdXpA0 zbm%;o2G9kI7!4o>CZOp&8P|~$21arEGqbDaw&aXXxR46$fvqV$2&Pvn7Z0aE5~X@f zLjGE8(@`Pq51NB3td3A0g1fB67gMltccg_d@B1LVAe;k%iSm!5T#a`lR3!4rnMa^p zjdxwVOoEJL2s)tPe54KF6AgMIQo;6x--}Rvv3%a{5urW+uR#DBi&c*T(XUwbvaOF$ zo44{^@?K*5z56+!odSC~v5ct9jq+7sq-StuGcdUA)H{?A>D-MiXIchU_ z40tWpmKrEG557R#@PFYCWU|+aWB!wE$78XWfr7UYqr*{A^AdJCsz-2^^(Yts-}qny zoDjZ3F}*Z2v||H~R?x^kq;E`T-*^i=2(#!%M9@!=|1~sp8tH!<;gm>QLL+3_)2Wo= zZTT{o|MfQE&Ly0Io&gO;tf%xim|}E4#DQqYtHBqdH({46D*ommPp_g-AqA4Xm~NCV z1sC58&p(FKFValVp#Qpm=@V>rx5OsVQH;`$f5S-VA1Pl_3fo+zh=ympxUe9&?HwNR zJur=&{_+u}gP?j!{}c|zhJ*NH{7)$kRY;@MR5Rfkq_6N$nbMt@u9VVEDoSqz zaC&kBr)@AW%6|jSO6mR8oVwjF@jvL-T1h|;8YopzHKnu~QrZ~-gHrmqlv0{LlunZC zazAAzC#3w`Fd?P%@hL4*MSQ#?+L4GjQ5tW{G_rxoRh{64^bjf@PDqcgnlzlt;BeMg5S5qF_JVf9Z#c zXuCWS{7>Ixmz)MU=Kq<#ZvKBHJb`MwC7UQ~9?rJ7^m}6tjc! z_aFcf{{*(*|L(g;0xTl%a(dhCqubnpFTr--j+8bW@$mNU+i@<0_xITzr9xo3{5$Xt zST@}ID~cBpVJdoU_a1zO&V;c(1T5_TkCtJ+inWC_^eyV4d&Ac%VE(t-0TrP_s(3m& z(QZeSdIvV_iTpNjrhZ6AU^WcKEC_*3&w?W`E9@N+nC?8db|5=fCUl6(ecTjNYr9mFSCP8rf8gc5NEBL=1_)rk4`wtbxLRGu*hC@$O z)_5o03xEnqW1l0R%CCS1TkOQn2%2iKGrfV8&?H^g8Uswibzj+$<8TUo1)NAP9MMar z%`nn8P{Dpwa0O`#6#Nxw4HP7KRyZe(Bp%MVd{(4BfPXjn7&oUOzg-{#f8P*0%{!N@ac(I0U(E0MaB`ySP1?Rd`2#yA5wUPw`d3UMFx?d-jcmt=hk}<0 zAHs-FRZ3Q{h6ydv8o>RRd9AdA}sooHtWb4nRQiR{M z@?7d2Fs#oiFJf}5OSV9YuikasLNWzaCd4t^cJs9oE-2hbxVrFI;kLq^htaGms5%Mv z7Va)QNEly`qkS~cSt^()1%?RI2N)zz65ePzEx3AD+(bhMKNPMH9tchqeu9-^I35ii z77osXza{}bE&N6%k{4EAm0Z%UbwHGR3-NKdDXQ9(qW02){{xQ(za;D~AbEruCp;HC z8l1$e|E+-yqA8}%3ooyQsAY<)YnB&SAFk$%$gwZ~%CW~!{3S0MRu%bQFU)yc9K z_^M>^@hYm1mAgF4`edr22HK1n_WSFt;6%$Q>Yr=47aveX&97)Xpbo%?dIeNhuVL4b z9$9N;XrPu_V&z=_!hl+8oiP0{4DpA=F210pUx=ZM15$uK{3bpvO#3O~i^B9lIPpzk z3Y2eyy$0Wt@?L}V!!lIfHi-7<2WE(=JviYE`+F&r;WbFVn?me0NWY&#T&oI=m`C&; zxV|urh`6yZ4T!jfFb#;ftuPIUxMLMN31-+&+$n?qJ0AL}jXUXl1sr5*scyCccB;Jr zwbf?JDJt6{%(}qZ>V8$KAw`96!~K=OI;w3X^P>0hc4AOnwE`#5bd%MC$!HQv7>L9w zyTKOV5k~szsgM1*Hu$g~HvoSsOd4qGCnpV%{EA=sPT-&YxF`4=y<_j+fjfQ$-avtG zYmz)Im^D&Q{UFR5sfVvs?Df81f+$kgS9gW~0SAHq6&{92zcsLda;#F5eG|dUd<~SF zg){85d&k#M6_WzoV6-YH%ne4XNa67jRAFOPSNIk1GGAlWRJeOFk~dLpg$IF``I@LM z!m$|m)6&`UA~AY+-YsY+nB9opn;CewQJsP_5NA;kmo73?9cx21zb7_C!R?ff*%!GSPYF$X6(-yk z90blM?5-zy2UT8pDL4q+fLS7IN7co$H^7e11u8dEbyWRq0rvV+x}zGL;euDWLf>~e zsKJivP2qdsAn+YMFM~XI&<0!FwEt?v$1-`nhDUpMQ!L)CTRgyGceF!h_T3l0MRCDly4Px9f4 z{+JsDa{8yH2DUsgi5~&v!?v z*?wFl^GLPBk86T;D{7F-Hvl8VS*8YK!2I9wfC-QBVmmmym2-PPIwMt0Vr=&9?CXsJ zoo#^>%l*?U2xZGZt1y%;4~^LJ$Aj7OqtrNIw)`ls1EFmB(a*T5^$g}Ehq?qbb-%E_ zG4@#rcJ_2;XHVxU*!T?1JnmWfrr=S2%uX@>nVg+sygDi)+&v9%OW;$e60NDoLjJ|y z9a$!+uoozUH!|Pg``8YaQ`D^A@q15Mrl|44AA$3QPE~6yvrcP;;>#(^M}uh*e9O4% zH+NzN}k1&-dc@bgSx{Syb98s5ocL_HaJ_AOuKdv<9Qz~9Qeif0Cc)|_bp~eMEnKki^&?GfB*2*>Q zmT!elQ%RO*+Ie~h{Ig~D>c2y$tCC%*yf^RWWLPrhsH$D5eVIqSGusTyqyb_&*?IET zS?8#Fe%ui}$B*N{&)+qeqjvhqYx~lf>L<>y*`1^I`(4lv6`r@uPPQ{(j_TWuI>bCG z^J^+s_w){q$ojh4=f`(KUst7j*z&$h|B?w`SCxgIg2$nJEmt!7+5&S`BVpGTn5$X| zzis7jsE)$>t^5tuT{ufla>98kUbqZ62s~6c0{aff%vTeH>)U%*{Q$+ z^@i{)a1eNj@X%nAzp2&Wf-k{9>mAmc7k z6>LVbFXwtLP+hnRm@23*{L*_QU#gl3&jSa6+X>%$m*mS-tZ*(XU#9v9SF=00x70w( zGkh=5PR=!NsgY9PJ*&dE)C9}ZdEV%C*vWH0M;s!%B2cu2|mwmK>qV^AP9>pQAxZz_;WjQ!@ici-SQqa$TA0>eZhOw(*)`;cFWj%eXLTIZy<4+=FRbbJb5JM z^0~tHtCg0$&G7;CE_1NUyW@jui)8Tb_@LS)%)8@5>VPnBjt{95!n|MjM4c7p{lX{e zqGfM$d{|u*=FRb8^$WA>9~rvoHH$$_edvHD=AQQNkAX$j_KxqByQKAx7jJam{hzq9d=p` z!iFb(vw2$0wCwrT=?tbnt>#;~x3@g4mRe3xN3ikg7j#;^EBqZIa=)N6_J{XixoUP* z-5KziI%x|W4c_nvZEVh}^Omu1vB!q9ihfOrBKYAYCHn^8PY9sj-NU|6d4^Ip-z@AG z_NA&ROg9V1g`HO&EPK0$3u=Ysqq^9yw0pRqo=ADxJtT#Fqk@NVeYAT>!p{yBvg~ah zzE{1NbI9)Ddo_$R^n@ih`UVtn>)uiLRg=r=s?GNFbyZ~+42mc6NWL(TV-Uk0p0Q%l+(*CXy(Byuycj%QnCJFA@T$%j6j?0`yLrV z$ar50B-sLgtB-_NTKV5tq0k2l^2z@&N7a=k>dLBK8yMz%;+;V!#mj;eN&j$r7Iyu zXBtlzc)n-!^Xrb$VOH)1AEWbGX4lG=-RR1ey+f1HbuHsiL=B_{8r_61u)C|=xS*{t zADWEr>?iLYYII-AUQ{u9vt{p0Vsz*PJ3@OVDTey;2~$)du1M@YJChha+!pZ8Bt|DP z+cOFNq>=twm`-VRvS-qlE%TYA5%`H^K9jTnXPZbJNVWq?4Gh$IEl;zYr~`FTu=Q2a zK4dgH1#9S$hH7bS*CMm^w`Sybpxvi+<(*`oG9?B~b^sK9*Da z&z=CF0vy@>3v`}t#at+g0Ii8^;r!L z0VlgNDZ}&X5dB65&NxC(19b5HziD8Fy*_<};mPR(NDU0pMg2HY<1@Unl0hnU@Qk{u zUx6TS9bujYA-b_&d6Ksg=356Lx|3gdlJ{h`8d!-DCtCJqO^B;=%}Vd#P82BU$9usg zg{gxiujt1lj}rDe*g%*xL>*`$>~*lcFx7`cQHbs)8GLgiME4b@3aNs@!gO`*8qXQu$k$dK?D+ z&rhBo95jbDNF6Q-&SshCc_nbT$VmevFDi1X&!qxor2uK57PzWk1<~L-EVm->Mu%NR8M|!;N2)KucZ8{j#AW942+5|m zzOMutodXKY#_djD^d@^2t^qKs)F5%*Wvwj&~1s83H(&NJaZydNT z10s!4gM}AR7rnJ0M3=HW&1e4%JOzTvQh-!Sfug1`ITdk3xq#$UzNN^?sYu>I?=KNV)1Wz#`#+Y0RROY$(wp2@Oh7;&~| zDyLbnHb*+M38?&Y>wh*~&{pUzpV{;p%PHzE?$(qI&!!IvUjZKt57XUNQHN60uAlI- zYrdR1N%%D6lk?@y(4oBgoRxF^_rt-@zX6a}U-v8UPQJYQPhskDZC_p+Xs~#MzKaI3 zpaNz8J07|lT$p$@Wu&OVHLwBkh3i_vd%?T&<b?+jZ~ zzxOV2vM;SAUYgJEmeE@!;{h_<{AKiR;pmgtaO5wm?+Ev>TuzsHk1LpP0$*_FFR%Lw zFS1-gFBN_O&RU?NJ||oN*JmwIN&D9G_1j7A7O1QnNyd45K@~kgxS8dudYf=B%hmJ^ z;r@s40=0?MzY9+S9}JJwe+w_{O7iOZKViD#e=xkd4%$E+U=z8y3)IlrY(}y#wSmIh zWi@m`;bY)|;Bvy}{-O$_bT#37;Dg~&x~}DEc3KuFP*XP%rfC-eZYxZ2q71lmy4+Qj zkkQL#B>Pt2tonaz7kueau)cOSQHPW985mZ-;iiEuXfwQRaRc3r3&?8LK=<|IAe0|$d4^TF z1D-5$QZexiVHz=&e_hJc+CuWTMeg#hw}IZq8Fqx@3pUVaHggZjhU>u{wh;5#?MA_9 z-2u~+MnDbRDA-hAw>-_h&UT|<3*Gudl6%v%bp{Q$*0EMTgCC0aE!0}~ zX{`r{oI3O}O=B+po%+D_%=Uez1E);iT@u+3|OPg+hNL7^RV z0q&4Mg$Gq@T~fF{G<6JIQTU&F%r%5RiNMD)=swo7@sX!b3 zhZJ}TdMA?!`pJy@rmo+Mng zAoFZyJBv1<{OfzDJYRpea0k74Upj{u>7WnM&j6r8d%@+f4tg+FIjrCE>QE;=(z3UD zb<$f90ckbkx6NZU{c0yMzl|QN_X}_DOmC;h>SMyAt&ha&&xEI1pNQ4&*OC#05uYj) zt1k=xWW6?4-w-}-oitYeE_}E+Ic2Q=i&S<`e^T|v0^zxazyMY`&?!e1kjrh%te_NHyO z4D-I5o@3=+Xm`8mg_1#Dd`frIEBy+zDcVhc;Kwh3pARH)`naFGchR{2kzewYkA}SA zG17>15TC*81e@UnmN-4pGOy3aAfM*PvrxgS!qj1szv;&$r_cMzNjdPu>9r!~z!Rr8 zi=5()yRT53-XR4z@Wko;Qh)I@Wkn>BIm#pr+*eX z2c9^6N92e*E}Sk-Kac_(c;d7^&K1&Xb{ZoL7N$V-1vrN=&3lsP7bcC6ytrjA@WkmF z!W?+wbQ9supJM)BDAZkdkqizz-F1KA(H$wU^w2|vUjr`&kFh+>#)&tI_SA{O)WJpI zrCeT3UPBv@o_fbg8W2x&l4n5#wCsLK-`(`mb8Ln;@B8Tamc4o3N1qesc^|JY3iG^= z*Vlx3-pA{k!aVQe^&MfJ_wo9Hu*>s49$zL=kJ2>H`*`gW=6N5l!-RR>$LnxrnfLL! zsO4!seGNZ+P%vJX6*g5&iW8VR9HKyE-jacfl*R1#uE+iVfZl)LX=lWX&nm375k3)-@QkZMz9C}Z zGrkS4{~%(}GhU1eE9xQ7m^GTtY|?aQlQP5qj|Z?#(+jZEq%%8BIjEH9n%oqPndU1L-gR&vi|dyX^0*r1$ez4q9+P-Bpafq3Gp?J_Z}Aa|p8+57qgZ zWw{-yiwX0z8>-6*v&x6+YQn7Yp}LMRYka6~OrOEgv}2VI)vbkDQN%+mnnv7ce>5+mfx53tHQkezNG29JnA4%!x4J9 zFi*P?dYdp$%Mtnq%igpbsk5A=>-pw(!D1tIF3Y^Q6)QH<)rF)0O|!BnP|~kJWpE|S z$v)l#j?}e;3pA%tJTk+)9;G+2-0r9rn^8K|kM{+S)|Z*>3;I#T+?VwYo8i4rGFE3k z$0O!>Jyz!w=6O9<7ZB!oJysVN=4m-rR}S!wdr1bzfysKP zWlx2P8Ah0>$6L9#gGtnGhVt7iC;P5qUfOv%BTpj|^;OHfwzwawDVqLL8rhgf zkffgqvj(Q?EZ9DioHa0A=M!cPOxLA^dBoFobzvUy4Bc3mBi~HjQ5XYu5&4pJADiKg zcvglH&(cG!+#B&MJ=t=yFT4>2o>_W^Wp=6;ip|om`EfV!B4P5eKHwG4&nytHGnZ|mpKE`%^YO&dRk>xbaBc7wT2=jbi()JFK4JG>Wo(&>y`!^y%@?GB|0=dxCka2nVxx+$)lDz3oVZl+_w^WI zT70VDrx#WUzg`K?kcw~7dxSrP#;O$Gs!s|RxP@p?`~!XNqOH$WiP-1AUwoUc@-1a} zKCnH54{X=0jCBY(K#(A`$|~(5gj2M zpGxE_w{Fv@~S=Rq(RM@=4aotA>bON^p53-!56RiA% z9%pQ~ziQQ6v=psK+gWd@5WEkNcUEa#Q5#G_&EvKl1ZSdn*rS9mq ze7$|l=9apv2VJN7_(|zH@D9rh?44EO$HH`2b+;j--VNIUTYxx`S$?75u3l-`Q{i2` z&N8cTU+`Uh##W>s2Y+h8B!py1{Zi;3UnC7@?|0)45kV;SWZ@x_TVX5K#Ra|ymfbWH<`>^{nOMuL;z*Ut zOtb81C|3pzBCgOEa}YoMTsW6mA^alvWNS#EyF|_!$!!jZoHdf$oDex{B)2*Lo2>t=lHBIHE#PS+kBR-AG~$gYpXp}V(@;Ls z$Fk>S`OK@9J&olzZwj-<3O!doQWY|5f5-UK8z^Lc;tOQj6f(EC0hu<1%zcsb2n(CX zBIgknHUYP(zO-N-VG)zVvS;%mrl@6a07Xq1mkZd%Vqb7kbC@fTJz<17Bg`WxVaohL z4R|&$VLJKo&VUl;b<3W{N@ehYQilGrlXnyAlrCjlZ`$xQDP>4ZFBov(NM{~#I`ari znN{2Y-+eq>jyI(Yy}D14(&vIuhrYM9)XlYRUX zM^UDbF#p0)lqth(JGi=ZO*6nUcgWpjYMYO2hNtq{CRLalsBMmL1=2trb6S`isAJAE zO9ORH*gfj7H{$xHw`F$PgW>hfaAx154VeGGm=$-c`DxNfv$& zd=UKnYT3xlW4Z0X!P1S)D$8C6qRoGny;%|McRl8Rq>46K?o*FBH0CW6Z8}=^rdhNZ z;Ku_^w3%wz(^zAZEX*2fZ01|`I?%+gL29pwx#HDF_y2=T6Z1P~_&&jb!!b?GU&3F3 zgTVg@Ki*98W+wAr)Zt`b*cOsEGX*Vs4K~lvU~@D5{~?!ef0~;)84Apo20lN6lS`TA zW~uN+a1-!q;hW%gWm=ex!vBD~fj<%s`wYL(Sf-^(6)poF3_fBx%@wb1WlnQOFsrbY zInNhZn~p5g+B{^r9*B87t4uo+{x@mB8*v9y{2!|kTRu^DF!e3}U_TL#R2@u9;VMsQ zi`K#X@_@>_KLk_cYhSj5`O{|npy{C#UBCr?2&RWjjS6=#4@6GShI^oVr-xL*51L+J ztXsHa29>{HdRRI8(Acssm?6x*)i}x}mhEIl6Vvnm?Z_C5jLA~qI(oRtbT%`D?|~PC zpZEGM=5?0a5id4f%yP?~Mq8$m`Q4A>z<*2m?0DkYu1q)cpKuv)H*nA+(wH}E;!L(j)IKuU=5Z$6 z7T_0&9Mjzt6{eF)5V)*m?(nLz-Ay~LP<*1ddC^avsQVh%vgZSR%~E0Zfxf2fV`^V{ zKF~LV4^RP?vk&w&)tNQ>KwmRMn0=t1dCfB3n8YloT_)Zv6y{kIZ&q0LG|=Cyb0vc{ z(BEv43wYWLFgt~L+6*uUn61tKDf^=Np05`T3^I=`dpJS70>|Tka*(&9XP*k>)*?TNAV^Gtz7oCKGf6e{9(^ zfji0^lnicglsU;4*amu+8*Q#x=66I!mK$Syiq4zf@;n9~YZ9mFR0O71AWyRFb!e=q zph@nTV616wSxn&K7veie2Ag24DT&*0o>Tr*Zfph%0TchRY|KM#6*X{hutzXytc7q?%&7`Ei!=Q_M)qUISCj1*xF#C0Y%q znk&NN!9n1kh2LF8a@X7!P6gwe4`Xnjfjj6@tWPopZHCuCl9|p0dgO3Xbucce7 zGtKA15#U5U(|lvuGubQVsxX`E6?0R{7cPfgZ~0_%N4N$!3jB~c+^+vk%Fi-U0i=>N z2_$cr4wl*LmzAGyc3VzSYX;&A2kF+KGyZTzJ1yC8N5DS&R)OX6y@>~c-ET{!tC`M%y`Smz62aZ;^DHc z@Hp^5@NCO?|DR4Su@&Ao^Q8ctT>65S3G*g&lUXgyo6t?>ePQ0RZ8jeZ^OkM1IVQ|o zwk_sMVcxQBG1rJ`{bw)UYJQgj?8RHnzrydXA}{{H_(DiScuf}^1ja`ZmU&ujGbMyE ztuU*$nQFrIDw7X=XzB>J04M4XO%pKuKiQXkBW;O3GHs+l1o&Y1N2asz+f}Ip+f7g5 z?O;4oF)s?IzC`jJX0-5Ga1c0&S#9q}vuvk%Y?*y(UWJ`zb7uS~0*>GI&gDnQxP#l~ z9-jeM$6M{_prS+OKj3coB|vYR9$ax(hQRc{yw0zDQD(7mc4m;+W4|lg+ItNJ#GGAw!7xwN~beS({wpc z)6?dGTu(cu+$i572iM2b^o;A>a0uY@`e)CWPs7hRluh!vCl6(lJmUa97o7Fv0lXZ4 z;c+ONHIU|PP}U_col@!`Hnh}&fMd4=6RmZ9C*^1zd;Gze?XcYi~Q) zEuWqdkO?EGR_UT?Z*7#K1};`=cI9tPUtxOIySVaq=A>{w<&8kA&l_{AUxCk2;*}8*k-5o7|SubPX33I_9P+BpE;2 z25*{@mOYK!%%IYnrmB^D_i}HVdKt>UXW7%>O|#81YoKtIo2FQP)}YHT0^KqdB!g9W z+sqbb72Y=xwa4&-i?wR0%)M3vA=}h&V(&%I5mn{c`%PCz^O0H0}61OTTb>ZI#07E&}k>U z1&rr}j@wl-62GDXLC#>|x4?ML=OhaE{*6@Tb7l(90Ur$aIdg?SZBO!GXR+|l;Dh18 z&fCK5Lm|$4!t6sKuJeIpuoGo=J{D#t%IqAn>^V^u=cF*JJd4B6h`ec=#W`o?o)3YG zlSw^|WpOT9x#vS}dImdDI`h0uXWG%6(pj88GBglY+~3AooN&wB;J)B2&eGEUCJuF0 z30o7p!C_9Wa#X*ZO*nohnIMN#M|cwWV0aFv ziEyiaB+u!z5$*$a4~FM-I!ngKi^vCZIX#8H1P6g%6#m`Hb34O@gKcQe?Tizi{Q)(Q z$C)a;3Vbj;k26bn(tfHxuQN|LWk2R$5HglZ20KZ(vr3qqB;463%s!IO`B0dBB%hNi z{NOS*kl#5h9BP;I{LX3NNV~cgaJ~|5N$Y=*Dd1d^40>V6F$JCL!b`zH;NOM!Zzg#m z=aKN2;2^NC5}T+SZpS;Ou#;PO1ULv>TzHw47jdcxZ(9zJ<2$$GV3AEUSGz^DSX^sU)I6buH@>zpX~Kz zof4LD2;XfhDCa~;f$wYu<(yWQd7F`~YI&!l9~T98m-4B#$o0xQgP7GUY)z^BT#+Zi z(5ZptoyEe7!HK%O^ENRZ!W(}`6;yCGNrArLgW(mNRN<*sUeP%ryv)igIv0d@Sa~Jq zC*gBeUdg%3Y=7RnSJleSBg@{8{8V;)Rb&ySUmopWwTd&LDyhi(v9YR7-fF~NJgb@^ zo>g^kx6|Mzt3I11@x0Vf^tktQ5xQ(%boVcM=R(Na?Oe9ZPTHwTv~$CcdxGysdEQw@J2`9k zn>5lCyZY}3^$+EKOG=Dc-m;{3}jzr)ttacWz6F#ir)b0>@N{eJZ5s)dtF_z8G1xR7Q1 z{_p$r!gfoiq;TgbnsshVr=n!MhKz&ZEuARgTX-udD6*B)K-j@cGugo{nC&g-%Eekc zgG8R~3;HImjgu@KDZI{dntUhG#@Q@vKVxu2{zVw_&W{AEatGenrb42f~Z3-gyDG0se3{vs^KSs=`xro=dJ3-gyFG0rAoeAwaQ z!^#-vfXzr&DYyw&8$CYF1>_5_80Vree+v`i+>rA0Mt7u&ah_QAoGd1T)5bW#bxEV1 zQ^za1-yCM**RyKr>Uym z*(uwALduW6LuH&oUps|l9hWJ=xQoz}t}SmK=*ggLInJ3WLsuJm{M6J!0iHhLP--hU z>;;km&PieZ9%_JdNtolv0H;`E)(FRu7o8fy97htI#$fD4@F|H6Bni(2l3LXhoYwXN z&xQ%k3sS*P5fn%goIb+*iCKa(Oqka7Nk!=^gsOviE^@ zg7dL(jn1^#Bsd3!=i0?4!8svJ-#wB1tnh@1^tp0^^NsMfPx04`VPf~XWPFE=smRbx zNkz%Nj`o6qPO$LfQ*^;VCy#I$TYjJuDSWIF9zjv-;la*s zk&lA>V)enUv#1$2*yWKyhNUGh4VBcrkc^F#RF3!ZluYmI)_=OSs5bBN^Ll z1!J7|g+H|wjB&OLt7%G=uQAryE1U;h6?~LgoOYb^K}+he7rMteyDf8^xg0jmDbtqZ z9J=ul-bAN+3}qbE*?Q7qlIXl{In6Sji93sh|Ft8S;;aV0oIam9=q_ zGezW6R*=b(oL7YxgM+}S!qd9oj|kV8<{TDY+Qr4$3>jx^2LDW8q?+zD>cBnRF%-WB zQe(Q)QutHw&)|;2lZKGf&Ts};=AWR6R5P42ELYPYFA+6EOp+FyE0%mD*=gF*YA86x z9i~+EsAQ*?WNZM}0Vgr*B6c3na%Ky^)l#YGs96%K)ATrS3vh~+^P3@yO*+%+N&Jq; zXf~yIaZ-KY`qvkjbg`0x+f@6gL zYEJT3o$kV6R{p9pNcf1Azvhe;z69PI^_nxoGS2_2;B>#3*PZ!NUl%{TXF^X%4xbizZJRIWe?7>7YnloXW7evA^t-yyKuJsi5Rd8XWJWv*@biL z9m4FwIrctb{8R0P=ydzAa5vyBvFY|N!b?a$*Zy62GwJ8rms|1mzuOR2vkTGl?3-fH z9(YUaJo|w#chP*?wB{CZ7tObGG0V*Nmi;8L@3FTcy5KFlBI*60e#^%F7yNeX|3FZz zh(-Z(+H#yo!aOY+zj7Dm>Ts%$Ts@+|wp<~%lH}J_xHj+{uZ>c@7Rlkp9VI-9|_L|dpmle{kiZ*lzySTQ+VGA z)W2(c`$X^?2n-002#;Be28-;|!ZUyk@Ks_z2p8M8Sx;TCDQ2<#SsUyk|08to*)O-H zE|V^L-+n#7?-YLDv$qEXU8{X)-zDB{3i!CN$1dGu zpJ9Qxbd!BGz>|t@va@s!2hF}}o9(BFeV1;r6NP#8+iEuyW{+;OUlL}IZnIkw@APET zxy>Ff2Dk~WWNo)6GK?tyG0lD2=91qSKDECAP%|g@*Q>$VRrcrdzf&iL|p84 z+M|*2{J%d4w#4qV7m_D8s`9m6 zBfyKTJ$7$m|4ir``z_X6b>GDx{4TRgw!Hu!txfpOey^Kc|8p07XRnkDcuV!2{d9M# zfK~q#yiTOje!HG9>U$=9Z_gsmkS*6i`vc*8lhI>8*sF#2kw<>8KPUDtbbhdpclWRW z|4QdjW(~Q|4`pV+L37CdgEH`+8aQNU?}6$4m^c(MOb^)wNbgTW5W0LU+kH}-veJx_{CmN z%oiT;Cw{w9AF{Vjf*!d6F+b|!R5@wCNbEQ0q-VEaft=Hwv^xm%Io(OSr!XJW{b~;s z=3}~F?Gelp1E=gaggJ(Ov)2;yiyOCCr|tEU{#G+wOT5$eRuLS5P3JB!*dxqGD5vcM z%uz!h)<>laA0s_{vwj2~v7EL~i9KKKp0@7`^GtZ!cKUJ`&>@xw339MNX1ddMK4BiW zr|n|GJZ?|h@x<_WaXGklOgv*J2&V#92d=~Ra_x9F)8#zu&SnNVUORdXtDdzRNdk`Y zvvxaTf0&%LM~R-N=HKntg?Xm@-JVCxG0-sacl$G8d~D$*;7!DS(Ec7ACAj|oZto!j zf0%@s&whWme+cL&Lxw*`Wa##zprcU(9}lu)2e6BI6r8v368odzPy50^-yY__4-@~i zZ<8QHqW+@&*dR3ExqXXu(T0~n;XDz;F>%o@Bg{c`(XJ@WF?7+cP8@Q}y^1k$(XK1} znecPMD?C__S0`SyoB9U0UIVu!_J_?SyQ}D@&@tR4dyw!)z+)<3vd0M5{1$i3m+d!% zTLF&&p3iIzUxdT*iv0m`MwG`B%N2Vy3uG8xu|F5)VR*&fBFw|^s{OSv55ueW0cIJ7 zf7xe*c^LlJb_a8p@F==w=VJC`7+tet#ej#+HM^=X51VWDGs1lKdo5zrT(cXnURJwn zb~9lfHR1et|8QMA0P8;wi|Y>!i-uLN+nuFA9u?Q^LBc$BUbjsOw#XkPH|!^g{k7z# zU4_^mrZ??c!aPiG+6|ELB|JQgZrQEKz#m4p?4iPVWb#ttEjyLiA4a!=!wCBHmOYvD z{wTU-&m{Jv{+7Kaz_%d3L%|4D9qRQf7>^N zV_+t{5PiqKCtL)0OY9xn8G;^y_nnjeA3KNeKcxT1esqXj|Gx{D$Lp%zwTpmwU{@997$Tb;%$rQDjtcW8Q>#17)+cmw>L~LHcLBc#(NQ^t@hi5wEJt~dilCneiU@Oy z992>nzu@#OB&Z;aUwlHYCftH1CP&p19!wLHqdE)6lHRBR!qrG`JT-*{vdMH+ZmZsL>6_D*dL}@)IHJjV&-L4*)Zt%o9mgRi0Uv*KEpv%`hLuW>Zx~&+|q$RZo~Fwrna*Sl0h+>J1Y3L6c2I zJT|E2lHMQJ+08Rt~braltB2mCJZC&IbFnc6ctq^996i}ZEvquW3O~UMv$J96Lub?`~ETbY$T_^Ti6c^FrIAx8&2KX@&r(9y*z)Y+hr*Z{2 zsd$_!Anf55>#-Vf>hXXGMd7Q!<$!Alml%Q`Dx{tjP5|B#TS&EI zmIf47>xkj);hk|<7gqaN?^!3d!GG9m6joQo0QuD#MO5loY*9wkkdbg>u|`n^0KeUu zGYB)=hnejkSJNrIzxq9{7D|4c{&BUQ7}kHz;Bi%NT(H1m>K$S~gJNoh=sAO8YNs%# zFQ!(G52i1!+%)8LYh*_lb~TEtvc&vutUEQHQ0tN5%e+=IIC_1tW=VB@0w!RCS8A3~ zuT4bu`@D?WOzcN-8MTv`D`-_NqdHARd;jvgoZ2#tShjTW>T6-%(#5L-z!3lb6A(|U zV`6ZxGoDsItMN@~vt<2$4Fm=RN5vo>o_%c=Uqzi1ZVKEE_`Gm|#i*~Ul4f&-ssXnH_Jo%L+tJn3 zB;ozQ26(#g1&#UyHE;IZ`$u$s`Vv)#tcfaZ4(C^_CMD>PnU*PY6XAA#19re}K z0^uq%P+wgw6aEbBvqjfX2ZYZ6=L0@3{05}Y7F|>2N~iKXcOwY$fuJM_X3)1c*2mOR z@x;6(yjQE1nk9^*wnNrhYHL9M$TPK6iMf=al??j2zPPJH zjn7RnwbfxUz&$5&&H0=G@&riGO&I?;G7Wf&Fjffp6JkGRYe&pewbfUo_vfkFY9F%y zPZX?S+*?>6zZmMjkYOuftU!F$+G?3FUR$F5x5D|dSr*#6Z*zM5lONi*62?#Fq5U%9 zIphF-%dIZz^-}1uza^$M5 zHi|vwhkSDZZGzJ*bXhO~W`G7eDM7eT8@!7Z@SjPktzH!7O>%A3f;c1Q$~N3%)>gem zf2Ro^Db-ekg=3oHG*erR^dtdaha{;9V!+oSNovI+E-)4ntcb3oJ{2xW8Prjmh%;jF z{moTs*Ht@39}ipuc9f*YtOT4?0cMFkvj02rP|LbZ?XuU0YO_3EG6b)Q^~5Q zHZS1>zr2O>Mm@Dh*nJ!4m3r#&rKsnt^>3~Es;e*~EyA6E;T=0_53xT}H&6$J?{!8OHc%&o`P8nVD)c^9C?f_wa|Q)8R8I)U z!100seug;YZk&U9FIn{v!DSGb=wvmWS(fic%KCsZjN*&mMk<}yUyGhoi->ut_$AkK z>a%5R&l{>2)b@{%`4p~Md}H;EFnXw+2ZBQ)z^FunX_IM7zOhWX3%B@*O;#(8mq3te686;^%Lej zXj3&*nD?MfRY;f*IGU>I!hCh#RGk-|z6Adc&{S1fNglz!;Cax8P1Q3Zz!oDnWahP? zc2o6IfWHE6C5-mxfj1GSQJ0~9AF;ow2K!aqKyFYowMqEcL74w`SgH-M8Sun( zxps4PgV>)3{%s$%8Vm5}_U6iGtl-|LFylmooR#e1#wxyv-Xt|wc|_0%I5%*daN;D` zLDha)RS?GatY3(JSydCp_pEP;eOV<5&xG@f3(+l9vhZTyEwL?B6XE91!3~q7ma4U| zR~-apK+uf@84@%t)fHimiIx#D(MsiA!!G5RXst>Lb4;{W)rC0*TC3-Y{S8%XHG+5? ze~BtNskNFxf^@5K4$JBTyoA_yc^kEpGjM;qZ&}lm+NgcPSAo-kj}Y^=KRU6kIxqUN z18|hIRX2p|0UKa@Ej9oif;ke82JKW<5`^4Kzy|mU;UNQ2-(FP|o(gP$lZ5#X4;@sp z@T7{U@1U9x`)6DoRcFyZ3(qUq(H&K9WV{L11Ox^IX=1Q(FdB4H(}ni}8{kFE6y@nj zoz?9CzmwEOwfh)buk^|bJVBk*)xogpewIL}d->457B zxBC(GL)CM_DZm?mn|UHQ4;gH$GfWK6Oq>UCn@1LM^U;*i_AG46=QtNFrx zf#(1(Wfl*msklu+4~0~!FfQk3>UyuKoh0yQrq|Vv%*`nGzkzQ8pO*~S zV{fRMo4J4(7zG#WPEqxQ*~L@TB4M5hr>MKav>JNO6qWON94Uh-Ru>TPcBCf+m`oDpt4#@GnU-)#JqeL^Mm4 z7G{^vQWb@{OJ=F+#5gg*{C6PxER`$nMXCM45{vB|xZ=ZbvaP=^2kN0HrG7Wg{&t%PWdzi6+wMp|-KdO))1M}5XVm}7v ztJ%aH0}JcTS38LP7+9b#Gkdc5yc^-dMe4EbnL%PLtG7tSGs{%{o=Onrsro%tN4Nq_ z)l1Zi!gXn?UZUCwABL&)Mlz6%7 zP0W{KgX^tSONf1!uZ-~6O0|ace$cH{+lWK%*xHu$2c+LCJQw&X@M&O(f9|8J^;W67 zWWZafq{6F}+KDaj9}QovhBDKKAkWuctx|bE-QC45DF0Y>Blc&ykJZpUTtQxr zKUJmnGV`eUT#X=R`%2aq>UWO?Zh@z9gYkvBBpeTHfUR#ZgOJ;fcCqVKcHtqki(Rh@ z60-;G=r2|A02|=4Vt>Cs=KrNi6wXKKzf@jB5qubr1{>5%!e0R!;334k2ehL%s!;(p zz!SuNG3}&kiYIW^`h`Da_M%}Lii_g>2}po_*-)64%JWiS90kNl}eoMj(LEeQ{Aby5NE{n z2VN1qQ|%GXZo&9RL8<-Nf{d5~AeaOE@LjlFY9#47YHKyvrKShCeuJ;oI^uLU=Q?=V zXM;WJXW>6TLHS-=puv9iA_;sK9#GT7;NZ*Hf&*$E zF;~E*HY1>ccD$XyGgz>YqrjtGANY=BP+_dNw?#mVPY zhVXFUERD{qE6mj5O4bFXex?QxKiBAj>PDOq)n~b7U61`kZ9;}GQCf-A!apNw{HH2- z95dh=4{P*qeeHnW1ARMUj{4K~pDLBu&;N4f7Vp$`2;xS}5dXWg-vhy$BEU^$lN)gN zywMePC6M7deMMO(utI)@S5#Z#kjwAfyP~=Z^E>yhsD8pfeStIURW(%jJg@;CeS+5i zko(MdH26zR6oco1;q7E~ExL<&C0*}gMu0U%m zY>(+@lngVbPs_C59fj%N1Rnbrd4MM>4>EXoxxKHZkO7bTtc~xh-vW#UTnKQ7toN1q zFJ{R0Wdru;!5JkVWTwY1K+YxhxI^-4Hh!RDMS%NqG^i5D@LA9g3vgrL3Bp)Fkg)*d zha2=jO$nsG9{Z3Uum2w?>sq)4iS7fHT^I`(@;@?+EFdnB9vcv;Zxhf@d?-Jd|F8mm z0tQ%tS0XCl>#>DFJ-YCJRd7Nezx0O+Ls z{NCmVs@pBJ_b<&Js4>L9#b5;=Kz@JS1~t4u7AuGi^!3=qNrfSQwvY1g&S%yp57ZeE z;LYM1g)M!NINdr9M=bG8qV$5>SRg;4k<`T2#{%3ESpCg<>@wtn!Z=S111>I%6+}G` z^I4vSHAKO)febJ~uRsPEAZhvSRhZuKLIEI6Xx?xw61qIT;b%VM)$ghoNir& zbH>+z0W5e4fj^F25%4@PziF6p9Df*Ko(FvW|IhUPpI}>Ceui9u870Ha6G@nPB60Pm z`_v-0EnF$Bk8$-5;gP^Qp~Bw^uc?gs82y9re&C%=WAq7Nh<|?*nMGH4z!~zkJBzML z%q?7OWzj>3{WF|w`r%=gQ!fkHf8R8x{zB|=TYfAim;RMm{&bUDpL;;-e?|=d>n69p z${Dy7|Ar65H+@9k7OoEbJ#bzt8hR}wDvyq`t~AY~n+Wr+Igjou%)911dI+;T+nz^< zM9+Vc$)gup^d{tts7sUJA(VtXdaD?exeL44#Jsw86c*?oFyz&(iTwkHe7cwL+bwX@ znoqw^?0Ym{gopC!k4eu{_1>s_dV?2{;5e~=z>rU$CHA`@pKcS)9^eCpNA*PJn0obK z*fx7iPZfR{xIXa1T~tt~lb-W~SMX`?eaVnr7^hbg^OZ_;Vx0awz>S;5>8)%pE{)T7 zi9>Fq&A8mgX=P&t;dmYx-r=Wn5obiPM+@o6!rTRgJpGvnxC;vDlfoP{h4n3B-=#$& zT2w^a3JdgI`fq)UKR>UCZb$;(RdRsuhs>&1k zfatlxPwJb@66GcJePIsrlGxi|jNMZD2) z$2Fn(Q~Cgzh1^-db%B2p_UNLyto}`SI$boE)qfCkJCc*i>3hPsWE4&)r?rdqVtwBF z<#Y~VTryCfpV^~#2ctm|F~B7R4N3+Qpgvxh&l}6>gn&Kj>kxBKztFs#ZpC_f8mN+0 zK_|fX5OKQUu~9)UC5GoF`KEXU{dNvE;H&a@eT3MbE}qs`M9(+RD(d^he(Y6@aC}9b zB`4;`j{m!PMg2&CCnt&?9~ncJp+OuOgfk2g`?36R0gJ7QdMfGtSgx!$GRyQ)P45uq z>7$z7C(O4I67*qUSTZtV_&!2HL<wQJ~~ zgn8AjsZR;>s$El`_e8MkJ(%M2)Y4akPXYIQxt6{~oFUJ?KBFH9^RutdXg3deOkVy~ zTjvtK*O{J4(*=mR%eGia`f*|Oz%F2~v?Lh5odr*e0ea+HFh~q!a1gjIamX#*3@)f% zPSVc{*8m;`{DttJ@8W-D>*xc*_kdRc=gEr|_D^){dOBVNxVJRXb@hwHA$LbpETFD# zC43Bc6mUX5%z(!^JOroT%1`WWs0$5v`C0v*@UOt%1Fs13ph2a&w4% zsp4GW;=l&-?A$$fN z8-z#B^h)77^cZ1dy-v7jGTfbO(L`?+t_i#Wc#p5|3-ga1-Bf2Q!8MMj0-NeMW-Eyb zY^E28KI20yu$f*ed>hyR?+`9Rw-uV}Bf?M9ZH4Cgyl{Oubho2l)>nmFSA_Y;fZ%Tt z{D)5ATWIGAu24rhg>Rwr5~tBqcXo73olIZxOmp!93puqU+NZhrG%oTU;&CoMj9a)$ zOMO5XyQ~E83AVTPdnGOFpB623s1#-}&c&y7F~Kxp9EO-+9&yOp0WL=SxYATXYd3h{ zpBAlj1!nise_^lNvbC-zY_7pKLV=Tn&o;)rZ5y2|?A-yu91t`SL6dQom9u4A-CDRS z@cb-obr<1WO)!IYx{vUaz;l3y2u}q2CAr$`QNnY9mjO=@zBm^1@1Q?r_FViPT=T3Q z^hPmg1e_NPb`rxKSJHRX`-sQ6`22G7tR3}XVRUKUmL2sePH%M(`R zY0H}3va>E)o|&KA?5t}OhpcgpEbD8~ry|28qqPnMCqS@X67W-ao%L2>eiE~@-XqLU z<#pBvg!uxgvpz-~a#P{F^EBjlN_YnFdEg6dFJI>EqW=Ph_|J&p&oOt=cf`PhYf3x1 ztB$TfEr^*5Y=E;07affHZaP*t0oVXPNj%Q&ox`%OwCt|S3u71E08U_g*-v!Wr{ZP( zPk9ldzEyW!;%O`}AriE}v=DE!oDw!bBODKEY`BAnj_=xEF@TMf<+yCkksZ|yY?2r`QF)~^x! zTdLj>JEGot4(a_ZRd2mGz%5$$)*l6UG8E`DZa9#?50`auExhmil70I&7_M}bbQaE0bX_trjR3z74R9$Sc9EMUJ8@=FlL7ViLVCye`t zlUaJ}u>pJUFc>To0TzIKKp2k`F+rq9t_L#M6w_PJeugWI>90ci>%v&U2bf=R>{5Tr z)>}8Po!LOoa@zFPy-5&qJC?zV(cXHn@F?KAz$1zMi_JcIs&5ZZbj7vlqvr_s2QCJ@ zQ0%cng%kSf4+81)*6*v=2(NWvSe&ojSAP*O$PNZuh0%qm-y@6}qW+*Ty0mngzWS#? z`bxm3h0%jah5PD1h8HyH<2X%?>ZcQ!=~61L zQa}BCJ zVt*bO7}19Vbve@Ws2SaMpspp19-7{EkghL`F)+IA;7mPwbb8wqKR^Gy$wTzeK!(Xl zLwp0d13N^g2J~;Wjnog-8v^i&uxe6 zZp8i#(N}ao;SmYA&woV^72e#@vTnD1MW+&vbI$^26nRBY6#b8LakYF!PZj;2zy>%S z86O$%LJ!Nlq7O@gY9~0s2}w{N7!#Z)<`(F7ujr&?Y*EO)2z$o-z{$kpTm?IxIN&D4 z88Pv|eY3uzTMO3%9t_+K7~-G*X;Hl02>m%3_$?lxzY^wKz$5h6!goHgtQXq7s=pV` z`YBwP03Q>6jBYuP)Te~20Jmv3QeP0>{v3RHuiYs9S2C^tA@^qx^aR1f6Gf`N!wDz` z2DD4nMH+F7(+Z-8#_E#7uK~mRQFXjswafaVi zzy#xU6EQdjY=GMce_aXnX}XK>Az%aCSGeIZ)KAbugkJR!)bdH(&& z*ERYd1^S~pmi10M5HM#CMetnUC88f|%_xfV!n$^EkUcUEyCGJXQU64?H*|sja0B_S z{u}ynVeZm5v{yz1jhEtvVv4RP+-5wsXo{{ce5gOOuOAf8++6hh<-94no$&jMSl>;! zZB!JDnkl-UFn@V(il>K)p!iRmAS9gqXXbR_gRoQD*lvnmNIcHX0Nx4wq3Hh+{Tk8d z+{OC!qQ5(p({B}h`Dv(cJ4NsHGuVdTk)5J5gg?E7Z-SnpFAL{-D}zAyYH zjq@qmc^+Lp&i!<5{oKw=UeUtbjwBL?+*gH@#cV3DfnuA8zOXpDwdm^tqrMyKDU_aT zG)13!0gLf(l~2`iFL6(&bij5_(|wpdcSw5{OcsNE!poSggRAlSXPO?}gfmEn4Eje; z({BhD7M?HsE~H2O$HGnOVgsk?Ey9-}RFS_UhG%l;QH!SO<6`h77;JE+=?lX5rf`B= z!Z+V!)=jxWzZPQ7Bis}`h6NO5whF%v|3Yp*O(zNGg!J+4-_)NW;{>}M3fS0gx{hha z8U74ikNl|c`!g`Z={i|>zwoQV?|^-O(7!L-2|@{Zz0acGBRqXF=dYU61RHV>fB+LT z2LaC5D}bBDPuE+8pM@G@g=)S`daEuyL^NGbCibU`={l|j>NBFI(F!qLmk^%$8GaRd zx_(-?*hy{>T%zIxlM%(!3lty*Gu$ZH*-h7F+i`|nvqf2XADf}icH{~S&JtzqZa+gG z=*oPJDl}6kcVm8HIGzH`)LVr=6;9}mdVap6ca534L3f&9`PMcHS_cg7x1XusB=)x% zGb2`jnfh(g^O`rKWSDWjLtYZlSM4xUe=dyM4lHknCj#7eV1nNQ3GNgKGiDfM%mDe} zC26MqBaj{oh}7Q>=xalTB0fwrQ%~=KF5(uUL1YG{dj7xlUj_7+YtPg^V*`SW4FLB3 zRlv7_3{s#EeZ~xej2R$9Z7qMvX#f@W8SU%mnW=xG{Lv8N*TgxxmvECUkW_VaY}0LQnVuMZ3F1^wg>Z|S(cm;n!?w>rG7 zyAX%0X>VW!-qwSJ$H2rk8T4a``CR0q4h!@#(O1N;!(9PE<<|3xu1)xV_im z9UVJ>^*FBYby%pU3r_%kq~p6fZXoMREW`re)9r};VY?*4!%G6A4CbFZ1;PRzW?|-G z_U{aOQ2{(kF4tb7edZ_+Ge`Nq(+~60<1;xa(Mz;1;3y9>NBO@qNb@s*^u25RTR-Ff z&@UA|y_4g9`+sL}B9KAt4*%8<9fU6T=ZSyovkm@#>)&HNKa-0sfZQ_2@w#?lMvn}! z!pvL8C3-DokWQnZex4=z3*lZ%@z&H5y+wF9T)wQ2S*mvn&jH@qbg4c-?4?`%VZCqF z@qImI7}l7hv|OiEde6u(e*#>J)(U6fK#JZ>2bo? zAUk@MehnFJuu=ke0kxh<2JlcY%xq}z88giTN1(v7oB>^Ap98Ks4l4*>&Vd-{5BAS8 zll@iDk09nQdH`HvJlga1RH@FZ^x8DOz@iMBgJAsxG9VrW>`n^vT;OGsk;5&1c;bQz zlinW{Vdha0W*!x*^v20_fyIYumur&%Ye;V&2r`~iAa4&8unj8YGZujSz38!kAmi#9 zWIPu^j`&Z`Dt#hQz#cMy`eYsrt-}OjuYnH{Tf|@ zI1P69xGi6!%ZdJXnCsELis;<}te=}&$Vv9zgxfZ#?IqfefHC!8N!?xauZn)8=*P3( zDnVP`HF}2F^F_oOJzwnkB4UkxPZ%Q>%UjOu$q-nhKNSNWBWv`=0Aq!A3iA+IqxS_E z^+$+9?%$8%kXWOCAs**G0nJYV&JcZPSQ@bcmx8fRe9>?rHNgmjsUn3spJ`bD{ zy+O}rrZL{L-3Gl27#6`0oJ3-cH|Xy;1FMJd&%*Gard6`b27Q6q-9(o`8}(nrdH?uy^ESdzyxsQPW4dTRLycAGEGI&=CC@1=4 z*iZEb`zoUE2b==@jOYtW1saIHnpEH=(dUQV3RbY?ESguxxlKWU73d@eJH()uWN=^f zgGIj{F6=OaS4Dpg7}JjzeP`G%VFh0o{TyJd;4IO%0(;cI?TNu;5TLydS>dwI$bvE_}LtkQ_?xZ1mbb-W?;;(9_y__b1kbW*iRtDhcd7h zcYw7P1gXSqFr&*>eM!3T%J}i$3=z z*1t-e<~{`sdQXoRgKsyo!Rumh85lE|CHe!B!P}z0z!~VJqMsuAm7-rQ`gNi&2E(vf z{2sko^mT#T#d~}79xVvcVWDxkDMZmQ|)zVP-KP22J~K{ zyGO4V0oE8fGQs6Q0xTd>fA9a$XPbu}<;_8FXmC+t+D>^^*Q|SJ0|;l0*&l@#V-SHg z{B~zA0*o=>^G{!*es3oK25bWSeOc6hld1m^*aY}1O8;%9e)pF!|C#8ppv}{m!M;p` z6kr4VI@Nf0%9kN=G{kX z)DgXz*nigOsNTtX*W>qF9M$_o!0)#>s*eRSSZw{MySbJYeL}~+L+QP!{UAtmPwJ&42w5whgxfG(f7LtL zAgal6cs#4?DXkWgOKIl&3b-n9MpWbW_*}}V%!eNM6Kbb)J<|IpRHw9gm(t50_fAO= zXWnHwrSp;jN9o?EQ@U$_r$d3GBQjV>>^}f^N`D~CU35yX5#}!XO@ATGUG$sYiVSb3 zj^Us?t@nrl2i<9XP?&@6j6NyML3c)96y{NLR$mw9QFB(`6XsF#yVi@yJe%CpG zA^tOBc-Um<{9?evCPNny=3#SAmlWPj!|t4pCl0x*kHPa~1kqw@4T#Tl{X^d*_M`SseNQsrp#4+p#n>Wv0Io6K zZ~jx~Vy5(qt&4iWd(>k21Mg+sY6&w3?O*VKoX0NVVfUBr%?1+1f9ZabfTQ*=eO{P@ z_L{D>lr!WYy{-oeb5LH72+FXYpWwT$U-2k`zu4S}m|Ab>G}8M)c|%VLaIS7Q^pc45 zXNdivyrKUT=AgWxuM2Zf-qhY*5pY!A)cSq)2nXdYon4rN@|Mmo%t3iu7Z>KByse)m z4!PCa;!OFsP86;SY=G;EJqPU_Pd_IDj@moAnJ`D~Kf0|jN9{kl8*#`j0Ec>Z^j+Og z_;FwZJWT94sPE~~!W`81bV!(k+Pkl(iGZW}zMf0WQQbfKfnF<&QJn&OR2ZWg4y&9i z!Wh*l!1+Ev4~E=+bZ0KgDJ49A5LP(KsUmz2ANlh@&{YK22C~5*W*HSx&g1|;+AYe7 z{g4VEec^7=&XfR`?53SF#Qvzs=3ETu7hBn!p&xP3;-5R<>y$Yho~tt?>T^4Nma_p5 zlibcIVUF_L&LUwR6}g?tE7+b#MIL8~Fpq+~j{iIwPtAFq&qWWTz=MD6P#m=$bA9!15LWcI`f3D1GfiWBz#tQnPk8oi*-I1{e9X$ z#5y~L^U`u0>--@6D+Oh&b57V>Ls1#)To=JjF)(Y`<-0|nmzjdDKUC-#u^(gwonOVC zr{;prIboif3p!T==@(mZ&Z18-{|ry&=E6>{FGvu@LHD>bg_w6RC%ZlFoD)5MwJxb} zG3N@i1Z^=V?|M$pL0QZx`z136WeF!~12XR~Dt3RuN!^6(agco9t(3EX1k5$MmvVLr zV+_>jUdG9`nKR^3P}XTh%rVfqds%0S=sD`kMnrvCXBp}J4M|z&)KpXl07iQF7u3gqS6G%TDDtr;RioY+f+M%oi zrNeKxei61{^T6PCM1{KTzzU|jPt842!6}lvXdyWB2eX1ZS-fVhj(3VYoj(VQe-QCm zc*FtCa_(ZY_n;i)=ZR;zOXt2E?{xH3Ef(L}jbbp0DMhGa2+q&0u<}q6s`Fpz8a_$P_$oRhdGfua?nBEV>B&X^(!1#s; zex+2BQx65O*GK-bdmU#bvHuFHx=zh+QSXoax=uY}9;%yS>N>IeI6eP+@Y&3fz;V^U zInR1|Q%nOV;XB!g@_gUGIROIPnDTtzz9(}MK=$Y|(vinJ&8r{{*w zF=3vb8#=%3r;Vup_TOaZf*A0wDB1ZhF}$lk0iUpHCoAzdH!twj?v0$h%yjWm$!g>b6Z?{&Zx8mPzo(68np+bD_aH$?46;Df_J;ze zNrnZ0Q-J3Z``3$&ocG0k>U((k)yVl&c%kq%vFFRPM$Rw9{`;01Ilp@%z(WHA1zZ;9 z?#IhRhNfamkgJvul!ehu?Z;HQLfIz_G#(0>EmFQEUXM<-`DamY%9 z0*>_P;#>^apXt%nDRGJ`%gw!0!wGnS>FS&(_D4n6h*8ni zxlVe2RD_w=i>}Un(PJ0y^`g2)ED&93fe5b;T^;uoAT2Y1kdn`Sjz5y=Ov!^qOS>7De z$C)k6_xJla?+O28!#~6~IDMTpBDiWt!9AG1&Sv4!NtX3w&wkD>;pxC-f%gj+UIt5a z&;HI);irKUflm?pT{^&-{yTf{J{;M%?KvROWwa3;=~w}B1tBf@iQqCVt2hKx6&R)D~OpadI8izhh?B*C{=v5zM^aer_D z4iq@H*W`#6PIl&r{$3Aw>38qR&LZLbJ>heTz#j>71z&SM28Q?#xm?57oDE{YHGJLK zF3c5t-Py-16@0^q|C1|p2`UJWhB_;Sf1?UaiKyTdr^H3JuaZ5=8sB@0Q}!YsM7ecA zFc}0@#9#uv!D&pPsZK57S-?Yp8wfx401KSvyeRwxumNsG?2r35BP#Hw^DXK97>IQ`OD**PTosYLmD=Vtv8)x#Qy3x!|8RITfko(o9zq|K7AYiEIZp7A>68lWsQrP z?Tlrn{3?O|Gh+We?6aLGyepU?d_4&6N^Ajxa>D$W{%q&r|D4Ts9{$hS9H)xdN5k`Z z-F{aj~yK%Y`{u9vyEa0}*UauXOfl`4gKYcrTSqr&`Y^M^S5jbGvKLScROI)7O3 zncuLzpWkh&K)RKlHOeZ|$D8XUT*WTnheB%gndc-4<9dypER5^*?P~L!#=>|b3Aq(< z$mM$m^PEn?yvv>E^cL1I%%AHs-x)0Fa{#~OfgqI)BuM5v-vqcH=zk6HkUnoYSDCH3 zBXBBR;7tFEgL3p1tndQouy8S$xR7K2OM2_jUHDreaCPAcFl@aH5VRu!UxMETu6d0U zEc_Ef6SxyG>l6AeaE4xI{o_zzE8wNXtWO6%aD(-B1g&=)7|4QOLFM1%T*6#!7Q4v&XWLeMj z`_L&OTnD%w@WT~Y=9FSRRp3AUmN|`x{R%91+6nW!ES5V1g}Fj2objCA_2xbWA7tpa z(s^A39{>*pez?F@&MekbfkXSPa^8~+xy7rUb;SNmy4u+!`SGY&?d%lhQL)}fWCMC&z){}Aw8`B)>LTGco2+50dOx!u&4hQPR)DB zoZ+GV>zzUOS&zf+BJfz@|G=iQ;D9e3>p|GQ{D6&4b9e(5=7+KUA_^05fpZ6Ja~el;2CuDvaSS{~cpmVL0Xs5>EiYcXoIgcB1126l zaF=sk7=!S!fxDep8}m!IkZTOw>x{K+C?6_t25vaNG;p7@hzvp&M(L=5`<=oH6Zq@- zK_`JYWZfE$yX1pTQH}aEdS%RaF$bNo%=GpSI`++9=ZIWADwJ5$m!M$SPOa&I_3<`%3Kb* zXv3gioQuT%--Ay&`Lm(kf5X(TPAQKBA?x!oII;ZdxY@aYuZ7PGNcm=_Jwtsh`Rkq5Z0aC^91&Xe+|(;}cRl5)xEB>X+t7fHG5OeYSxT}R_F z-8E+(vuseVIm!7r|9#bAn5SHGnhS5L4)f1TDL0%EBETI@>y%s0RpFOlCd`xaw=*F> zW*{|A`N!ERj6v%G|4Gc3@2>%?N73H*z&)oEF{fXfa?d$HoDMT1%s6KSnN%!uvoYDrYs%6Njvo&_&-D%4$-G;bfGe zJewIQOi>=4&7?6$aRalP1>3a7~(%ex}bnDg|Gz~QQQRuOc7$g z3ksN$!rTP~OuVpOjxK)8BnW2*Ho$d=eGe8i$*dO-7BtHW(faSZFwQ(61K)*3B3xL+ zWG##p^j%oQ%SZS0=A&ISxg4-7zMBa zUM~Fi$Cj0AND1?a@ZL3WT>!j^nOaoIDq)Hi#R9m%IMB}va8mJ-Ch>9hFpr{Arl}_a z9u}pH&pawhnf0RQE-7W6EQT5QEiM(|p;D$I>3t8CGGGk9-5M|NpBa+L**PYlJTb`5 z+lrbYo4^t~mRAtOKVm~Gxw%-)vl`)gazz>S2%zVj!Yg|5)xyI!)3*Z)(H;c&L z?~?Kn6)JC5lHTuIXOl(hnr|T^w&l1oVrocypcD_i#ni{0YpTy2yhXRWU0?z%H+1N<7I1?D8sR z9gF{`z#ge- zW(ac-)-(%={Vu3!mT`KSYHOO?#C{jlGS8L52F!?+^*<@XWl5$58Tc+sG94rV?-!Dc zN9-?FN#>mZzf(BL>YHa+Ad69b(@L0ISl zPWTLP3h?X1zDJsw8LStNG&5fk`yOd-PBF`|UQ1KHEUo{(i&{pwsHLf17F+BGVM|k& zIOHn08veRSOY@v?Vc=pzTbgFVrw`(#S}W65_%Gl|MO&F}!hC$++Vm^ykxN~^8f|Tc zu>rN9+|V|LkKbV%4ks3ImD(FVe&+*{s(v;GkK(6pRVRaJhp%jr)fs)x3G`l*Au5(Rp9GD1Fb%0ir6o^U|G)&@8g+$BKQ~t&kyfwqAFsB zA-4|PT5V9GzljlU2K+qmBf{5PT2`0n0p>AbyA}Kk6}Y(Y$kLWoE^458ig=tm3AiTD@Ihu6aYj@Rs?bm~nV7$aG1%Cg>S4lex> zxVtcKSkg=iGj&-dD=ne|X=Wnn*`v`T)1aF8+ns%y@^EIGkSTay;mkI{ETjaxW4ZwM zkDh2g6COeOiRN43Kl`9QWPTIA51az*7r?jYCuK6$el&Z?Dm>o7+@iy44drVn)4Ta@9bWa*%nWrkQ=jeB!YL_%?C6RTW0bi>cGh zqFQWE|3?2Qb&fgpOgMuEqvue8;SZ_!%%3la9ywR^yQA>)1-(Yk%Vhj~!I05!n_P7$ zKl$Isf`~3zVB$!h#{WkDY;>l8q8PaZ8_@awCg5@b-V?CL+j7D5cv~)*9(T#X^vIaL zD&+@%M8&AhI%a`+h6K#Hfg1{Af(_0B^HM;c8nwW*BKBvx1?E*^e>GfS#uD>#-5K&z z&!R^%pITqnK1fB3?z z*@**_xoOcajBZHlKTn&p&u2{zXAGH0Zxtj zG9te(%_c8k@X^?R8x%_pS15Yqzx6dE^sR_}k9=u168k~9rQgu z!nxfuuaJO;-7af~@g%|U?YM{AVJ1m}x(Aux6n+Pe-@gU@Tw(PsUfu36ONEO9j{)8$ z+-4EJe|)DoA>0diRTXciiG7}0>=q+~T_#@mX)@Sl`VnWu@awyGo1wz|`tIE(Rk%zS zyeYNYY!=Q7_lS@meuQJU>>)Go?l(M$U*v1ElM~Rla*xIAG5-HHh9|@SwW{tl_e6gV zhT-g%drjpRxXbuRX0K^Z9I{R{!q*1xHPeOP2L2lOJ7Rw5bc?mu9Fg?6N%c_hiwO7( zXRrBPn0Kvv%_YeIr`ju!;SFJ&Id1@4FLH(Wt-X6qJz*Zk-x&8L_VD97@czIzCYNxH z9WeiFiT%bDAb~&5zcr1B{c*m}v?AsQ4B{&7Gt&c{QDmRlMeIlYzKCJA&m1JZKM#a? ze@U4C_D1b9rve5&TK_wPT#c~>oWY0xLti#RpG=(YKKlc_c~R{%F9}x=hRoo%J9}FX zhQWpCec(tIaFB(WgKVE^K^g3h;Zd>A^dkem?Jj^i*@#HkDZ&m>H`!nrB!dJP%o@@~IoA@Ra zB(jIwZxV?8nQOm+&r(67cw+h`*M4(=*q^u#nwm{XZ#As|Uz{3u*qjn>Gzl(O#vL^^ zo1xzK*ing*%;*1(nq)HYgCxwj{_l-CYMKW1kYNX5)E@;tP#m4^&zwh1uYmoT|DoTB z`poNpFgQX9cqTk%9W}oQV*z)7uM&scuX@6Bz~hga+oH!|X-6M5RHr#HYc!nh-< zQv0aM9njYRehe7mpT8qeruR`(EMQO>xGZtVeHJ#It)Ree!Y>p5Xy!9hmz}nbnVrP! z!H>uPWcszl3Z+}GJrDngM{b48o6?eLC(YJYwEm}CUygw1c0uqD8H6mJIDRu_TVn!t z>5#PF%xvPFG0U#N4k`MgS;Trb*I2yPyJ(gP7X)6IcF}w+d;*$TF6xr`Quq(xg=v?} z_SSO!|J4q-?N;Nm`9=(O1Amxy*&Gr+1CQ6W>U+f;7mk80)Vj1Q=B)6sGx${ORdZ4J zci>%VSIrIKokMV#|7Gq8{|LN4?JwhaZES3zJ8BXHQQCh^4&kZ5Cx9On-dh_SS@oJJ zBK#w8M%pz~O89UtjDhPWUid0-o9x$3qHw`=@Q;YJ8>WtMW#AjY-g6>Y2Uovkdfzln zh4%p8PrGT_5&O4NZ<%GpJEMyI0fQ;~E%QfPYyf}OJokj#=B6-y_B{85J0@E@)cb#8 zxoe(m&&+>%x$BwAETDhA44ZJzjP5`Na9hYDw(n8)qZ87m0af^d9aU}9dkc^BrS0U3vc4o{G`v>c^HQohw-_IVJ_AdzP($uWTt(24+NJdh6Oy% zOJy41IKMG5%r{_HJfd>xOugQLyWG-lFRGwF3d*<_i2c>GjC+-sJ@!kkGH$lM=#h*l zul%!?^@UZ=ZPX71A(tnTc(;i#P9*U6JGYJS6(}11e&_ZS&KiUIr`=(~JkeBiM+@Ub zQ!iA}4GF&r2No-$E4kB{J$Due=73R^I3Gai8(-qNG+_l1I zfad^zDO?5~PODU@s=HIT7H~?as=IFhwK#^msG572*vp9FKC0#p9modUM+t7KaCz#Y z1oy%q)^isny4QudixS;`2D1nGaJjmxQiy5TR!BKM;~|&fhSge#vKa`@$a8rKjX#?#{~YPRggfKAFZnG&J^a;?IiatVZKgCa@Pv~ z4Y`(!N^<=R86G7`uKfz<&yQj!xmjPK^`H0kbD~LrEv7Rdv8Gu?X~&JrPU?!H@qRZD#`KWA**<`#j(8%slsN?1r&q zU$ZaCzC{Qj(;{1>EKw+w?Lmw+kzLlZMs|rvL@DY=svl8Nw#ingZ0Uc_J)b-CoiCH> z|Nr-TP1pOLbMHO(KKI;npY=-_zZyQN3)1&^m%DYnKMczpXj-MN7xfYwDE!^1x?Tn_ z8?Z~&^|FV_N9C{Uu{RXF zy%}AuuhQ7NF@O!SZ#p&hY7G>2?&oOvfR|wSq?SjoAMpG^rUT}(UhL=xd~b%yutWYp z#E?JWEi`gFI<_2wtntFQ-W0zdfZ|)rk%g9`@xpxH2 z4J>z?d#i^Si_LYysl@mA!o2N{A^n<$rNKUOwen(zri?%z zKe3e;|FT$E<&08=Dz@_S8@40TDq=)hd8Lfpjz}x7j^Sx)F&&aDV_JDfz>kriCyaU6 z+c$#ipQf&CWq!n4JyQ5nI`#7>jd?VpfycdsL{^Xn8diSX>ksA;VV(u%5n$d8W;bJY zMoD>gGiIuc{`)BX*MIVertqpAwElcLCMDw|6HZgOW?QB9g~^Z54(IDI&PW#$kA?9Y z4Jh1(aYfp&oFlGb43a}saO~sW!el1@uQm25uli`VIMLg(TG36Vr@i~YpAmNPU&<%wg6 zXM=w<6?FGDga3S%^}Bn!!Mh><349##-@yle~r20aN%$0qE-7| zo;TL?SWTM2+}nHHFx~%eT86`6AFq=rcs+>g6zbzW1CBNF=e_5_rHuS}ZxHzOTrU5D zHv+t2vhaBD{wIj5zu-*)UnK4{_62VaGr#{QXRm#|RZx(#)xO?NaBtcVjI7kx`xCs? zG}zaR9Vf?dqG_)dLqK zu0`Ag{AL{r$72V1t-u?J_Yk)QKS@jd7h?x|oqc4yNEwGHqbGQiSt^HkZy7$R7tt-3 zcZv=1)`H(9-bTCy`X^`({5ID2j)2b-UmrWvJ0om1q0YGBUjB(ZA}5`%ZIkTCrR8qzh;Njqj;1Tq2*>ZQZw-h|p7&zMd04!_!Xzw6+8_lfJ&S>up_{Iu8 z=A*qU;6?Kd`<^#Rj?waO`9qPTy@6oy^U>aDuq?Hsy{TZn|Nls-(cT;|-~WGtcrjR( z@-f~za1OK5j`2PKKlTJqVtUdH37%U$Z9`9WS_sPLM81LnuCOw)5ZVKKD?hlqv@{acwg83uFT>dI}%d0d?>CI&? z=X9x1KA}6_s{!Uu=5m1^VE#fb^LDU&5qG@zGnl`C%kl;@q(1rL?Rc*%m_KmK@(;jS z{Z}L-Zl)BFFW8Rv>VoBqwd1{B;NK^S{%&x6ly5sr$`=D?dtLaA7exOB@F4J)VE;j6 zJT_Yj-E(iI0!oK&Dag*`h z4Jh!Jta*qM=1B!-i1`q$1|IYGhF|e!3wx!CaD@}RBj9|-pb1`{MN(fgvo1{V z9tUS7rnl$49>g^N6TN4R#S^?CP`E_Lh!rLpw()&}HwP^7e1i9u=p&v_@HRp&@qdE1 z6TFr#;WQdQ!Sfc2L2?OZqL+WM#DDYs{gU@g^zMa1dULa(AltDtH<3p;=SC8HVkKW14r|u)P{S&CC0?G0=O6dVFlwbnk93 zUkyJtYo=Gru)P}ox;Ml}hFlJR-5W1#u7+QnHQPG@cBr3MXU*}>8J4Tze-fu(X@=BX z4Uc|(u9wfSJ$IZRacVc;D`n(zYWKkF^F4o5SVsGF^SvoyT-BTJSvjBkvD`AB`!UZC z({D)?{usvXh|hw#e7KyMPMKsY4U60Dr}}mZdmVmP>igH<@b-eAAwEI;6*zB6 zT7S;I{-*aWGRl^uT`ciQVO%<0=$#Ma?6Vho@$1-NY4F7BOT8At_yof;?=i4Eq_WKG z2tG<3Snj^%bpxM&gx0^Ql+gzn9WE)AfA(^30Jtl0QR0`uJ^FG5E4*>wVZ>93r+^O_ z`P<(6!fHP?Sbg@}-l;IIH+!X*ZoTP%H`#xRhiH|T6&Xv3PY~w;*D6InVmo`aR~Y;d z@lfK@;6G@@Ce2>s-2=`>^4Y|-gv|&RePyke5XMiuvfk@1to&WH=i4^>9d9-=-uP3g zPiJrR-VNhjv)`q;O)&vO-db$}%kzN0%ziJK`FX&rv$rNQKMxo)XSq*=zELbQfhI&-QH;Ev)}(f4NQbwE@JKW-UPq>F5L|$`8&)U|MyVFHOe>u1-V)L ziT5M;5S@C_=hwY6;LF7H`E~EIVYz+p%>C560p^7zhB&xUhWxIZbf1to7F>xqD{&mL ziT_*o(4EP-d%U}#FpDNpe&Qlvx=u%z>GpV~4a<+*7bW>UhKHFSxi3##N95+(?jYiY zQr=9$oy0G{D~Eu;nE&hCFTHW^BL4HrcAYY&7==XjH4S-1^`&Uwrx=ijIJMgyNp`CeJt&MuP9*3V3w zIvAbwy>i>Q$6~;|TNS)IAEe0F-bS7fCeK3#J#ScI!yxCBH_@=YIep5@ww>!c=E%Ka zpA>e;kh8@V)hTZUm@Q`BZTOgGzy58(spOl-9M8k$>~?kXp7QpIzQf_%edCmu??Y*@ zZf(AKecCH#7zX-Il2;!J>;)B7l6Q7zxP?hxxzEE5O!At7#lR%5E0_)B@>X9AOkp;V z}Jfi0d^zi-;Mm3W-qCeHz|39eu|LiqEj`NtN%y` zyJevDXZ;&Vo{x-g2l5d8xE?@}5aHKt?D< z&LhO~Mxsx*_i6oG|Hc{b05W)ps^>lH9WiX(=A2jc05@Q7r=Roc7#0H;sB>QIS1h+T znJ#$wzh)MBMRn0@E9?~=!p{L+^g4s<`joLP{-W0t8DFhug-c#v@I~Tn@t3?I;3JQ- z{IZt_{*`!J{AKS|@ZrNO|J9ogK1aMQ{#S24_+wfLlic6DrC|REWo(Q8&0B+v3UtRK z$^G5i1b&!!Tm0|d4#RQ{=<=K^-lt)Fjraicf6mNH@fGhdIDHllR#&{^;KOwGOdqKC zei8P)E0jTBsQ1)=dB|iXeBjM%USTl1C37P%A5-QYU_PeI6Tv*|nb(8)kTM?x^Q;er zu6b7t`}P=Li&&Yic~J-1AX%6`aZ;EKV$NXXiQcbfEx+bvH!QKFGc}kO%=+Dli-NfW zy@<;&`?MqB9ll_v^eVABlwweWh1b2KM^Z*?7jgZgDSVZ<+z-sOp)tYf zy7#PM8=S6tD~W0T+vs$|+bRW2ysozBhIc>;Xm-0tC6I|XKWJ<|Uf z%sr&v2=K0i$sbRD!wde%2HCUc8(xbaP5j^Ka0Qb{;Z36;50f>e3Ri*o^qKiXR3JB( zZ+L;@QXw8D^Rfw>v*!+r{_uK&d4!){bkpl=Sk9h%5KlcW=l>?&KfmZtZ;4TmA)mU) z(K`+A#0WTgpU5!+jy?#M5peV|Fpt0zDxVZ4UrT%uECxCHnjfaHofLv6!iUJwEezWc za`Z~WGD3Sue>0dzh}S@KkinN&x-ZV6XBw6f=taEAusm?se{oj5N7#(OYm4LbX~TAo#Occ-H*+L= z+cCVDth<;d{U4I4UIg+$EhyK>EjL-#Q zea7_2%#q&~$Lm7EW`wdW$*rpzwj-2VHxN0GkgxKRLNjFW2oxrM1k7&qOuF21@@Zv7xKWFg6|+X|ZzNLZ3b zZvgWlX|v=mz16UcKu6+l4U3m_U6NN{5H=&QAu7MlevTWIPdL4`q@ZqPn0^7-5Ap|u z3+gr|W0)r&7%r$gLqTpd7Suf;mm7@*bzj30j=!P`2Sd&yc$hd5at=OA78TSJ!sI`Y zd^+Sl5Ak`*m=~sSm3S!>xW`dT3+mNiZXgr!CNR&5JjC0>%IBG1P=9JTQ5CvKr((q4 z8n)54kj8m{Z-%I%Dx||dMEXseLOMwrFq3LhvBJsBJql;;Ksd9(%&AW_3hT>Z^|f4D zSob>5hs2k6zlJO=qQ_q_$H+98w794~4(0~iEGZgMVNw0q&nfyH+ukbg9wr~zqNpBV zIMJI!^&MVXR1at7^Z&(^ahx*7K_S$b4$0DDdNMdC@nz!K;L^4D=5%qr5PUyzU*fmH z?V9u1Z3(>r+>3Y`@dw~fYtW8c_(&kM%RFQ>ah-Vbsg+#Nhc7;~I}kVmDDEGw_~gLw{|BtBtyl6fGJ`Lbate}%Z)Z(M$wF=*IZ z<@F#idrb?cygv9l%jJ#BB_uEJUr8yjo-!JNxxh!n!@ymp(yiIp@_H7SpJF-iRz>{| zm>)u*qT2Jx0n&4@`{Q~RkOhp(wEbB{+?t(nR#+o!9kFPjQw zSKMTIO??&2`ph>C(@*Zv*Y7q**VNJ1*nmWDE%6|yrp^dvFQ}8ZmalUlgS}w4uBG#X zFPKL#YU|SA3}%+s)|J6u8+jew8NBZU`a!xSb@X7cY%uC1m*@RO%jI?SSjg))p=Uss z`*o8Q9;1x*%j@dtP{{fY{doKGddczv#Lo~fguFEAFL&?LN5BpK6i&D{dy?4d{ve=)bD~D z8g8V22Jfg$&x)^Ttc%~2`o1yzfNlrAMq4s}#EK^RDU+RP1g)lz6q@z9+#t*#RNnbH6E8oz!pVCF5*?>v*{lBLoR;H(PS-KNqProx{ zN?~4Tn17qi8+KWU{-~8A=lwvqob|)yygy)hC1XJH`TtXTgvm(sG5Fs@Yqv& zs^OD*`CNXH_-Q={yq@@N;(dkKV0+D{i(V|{%?Q1HPZzzxu)T)VRc~RY_-_;zsIIzr z3=fIDh}2!r0n4uz_SA>Kaii&Jwo1?HZOP>IbBc4ipUf6VKs@q#D%?3?V zC+V)()s=lTj}I+$QSyGk^ZI@rr1mK|$irgK>jzDNMDHWYZtXlDF{Cf(M@4QLXzje9 zpAKWSs;?ek_@pBZ^wYx)+Y#tz3`n_&#Y_za=$lP^IX!08i%^iSTBKj~QZn=9^nuL> z={Kc8uicOIyUwcy>lMN()6euW8u1OtFAw2QvklR~5RZUtXy&XMqGQ24qRiQRWbmx5 zlXr;D1Lj$p0A&`r1n`6^t<%<8&SH;y&Di@%lyZ7Q?UT)rO~e@zmg5 zt0(B=;4+3^)j2Yl`c%^ud}=pQ=LfeY9=?2{eh*xYg4gC~|24f684W07`103ujf`T@ z<6Za=Owskhy@|KQPth$54^w>RQ&COTBSfxh|E5&A)l>Bh=$AAN%+OnH`72!C4805N z6L0h5XXwvS!OqisNo1xz2>yb3^-SG1ll17Qk-x4xgD)8Q>-w~?@rpst96dC%bRdBm z*c?4q?-VxScekFaf6mHsxzg&-%Q;V%%O)8-E191F^CtA|)${c7>{8+T{kaDV^g6@C zyswD2#V^oXM6SLiuBaC1-6A);V3t?PValr{dbW%?m{XYc3%YokEdq3Oa7we|Exqy8!X|b-KS6EiMB|5=yqUu3kMtN=SQhgfyA-zTV(wb%Z-TbUS zOvxRP<@((M!i)L(e?>(Z1vw*89j6V$w)o}xgF?cWiFcEiCl)sBeMMY)?b~{SVS6d{ zZN1*Gy^^|8Z#8U}+LaLt*-E|F$Z4hZX^2OxU8%1igAW07!6MwCUCAsbdh%@eN`1GH z%fj;Mn3cMMVY}^KsjGqchc4^nU8(DV#}MzE1!1-L zF`5%=SL>aIaRp=T8eOm`8z^VbN$wh51U3-)CN@ zdkOpM)xET^tlgm3L!o{b=8gIaxL8-Ej;`IL%N3UjRt{I{r?v0tuHf9%z~!}D^?dNx z)WGGn+w?)h_S0?Kb*9o%UVdR|hwfq6->LW`lJq4KJ;-E8IIghnL;ZUhE^yLWNef45 z=VSdRcp~{Vb4*#5(}&9Frd7cG82S{vmWS&ndN0!1HS1@De!3IFIhgtUe=aq^7371$ zaB6_L7`PFQKu_Yb;NJ&{{9bT*s*vTi!LM8rxizpU3~UJb^*4B3_*l0frul!;nRH&M z``3M}%ascsqTRY(dFi3_Xt#a}ypMX=+S#o~fTf3@=<(p8)Z^C9Cwe)Uzl`3~{Z#J; z%ZPodzbcRTzlCOfuIiuaGooNtvZm`k)xipEfUHy%)n2{Ou#M+?bwWj!+e5Thw*|`~ z+N(Q*rGtA-IOh$B9MaE-ssEfI1vo=k3Vf!2G8I@q{#+NTBqP$)yq@>DE(vZ+Jk|YN zHx*Wa2J8j@(IX-Msy>~*m-&x=#qcoiEOANVX+9L{Qh`3}{-fuDA0{45yhPZHNJX_z zZwceI>-On7_pm{BQ@LL^GAxt$z`Ff9p)$+up7Ki_wUaw|(wRc_7b){!?eB#GKcgA7 z{=fPewo5aH98yIYi&;Y~Z!#5JlGKf2Z#f1vA7` z-S2cM!*)o&*A>I$TlDw(5yN&!k46mXk9rW~GJ-$qtza49e#3jp|(nY}XHr#1l8vGu~*RDIQD+`+r^ZkF_*ksrq zC+QYp3J2CD>D7j9kIzQ*_=1kD#s-~qq=y%DXRwUGMg4|hdx$QDcbMP*zob_h1>56G z`h$o9rwm&IFX{7!WtKm;{*sQbE(Vmjk6&j0Ro`nk(c4{;R*&^pbZziq;)%qKz-=BT z|6hO4Rowy^&pu2`BXMhCGeq;(UyJDR4gH*vpLAA}{`z}v=oi7#;~RP>SVrUzov{WR zXh%SWk|(wQ1uqmTl-nrS5m5AmH~;rhlvI$y(m=q<(=V*gejH5Zb;Ko8I7<9H%F0cB zjmAfXO2Hs}|2HPo%w!~bWy$Y*x-p@L!S@pPA#N{>g~$tyH*61y7n%|#-=e+Hal>}b z=uql~CpHvQ(;PD2ksif{GD-#}QTk9}!*<9rr3{%Fu}qaRW{usk{9mo`# z1eSFmQ)rf9dj7wSIfj`-Z$LrjK<0=BvxJt5+>F4X^;tsO4cigO7TO&q-=edHqHCER z;(LE_5hD;EYQ%DS{~tY$56wUU8IjzfyH7c+^C|;6FO}w5I(m)PbjK3_rU&aR=!YraBx3=PB&jDJ9spm9XG9#Ka>|d zo%p*^`9sAFpVZTO&<_w+E)c2)UP@ezxMgh<|4(Z9R9eAMYgAC|5x$^MFnP%2OK62c zoumRsUOq1r>JH9F2JKRXLVduq8Yxw`vX#^04>V_3KGMkT2owsfuI-y1nq#Ue6$;g_ z6MoE!hAtVlKOR#ebR8@Y7MBPG>&gfXk5Ni*xH}XJp5O^*6E^i{BzciA&b6U*sGg4k zP3!QUt!(H4a694{;?Cg3)WFC} zz(d6I!&p_Sh@Yq@4bs)go(WkjllHi2bCs)x3NWkjlnPJ?AcYJ`3^ zY)7O<=!RiCB7Tj~ef7hKq-N+5!*)b!MvO?!P$wg|BT_Te)3A8WW0>X<(SqDZ8a?Cehn+v3+)Qy^&9Gi z_8C6uh}YD!Ykzw2vSf~8xz82QjG+HMiV`=JNYo_7*Lr5YIn&9`3SH$EJi(U{pT z)sKbdgJr3HEVK+POLgne8n7>Gb?b;({&;A!C>X!3y7BSQKEw702HS=Xf@LXgn=F?( z)HZnzSUzg><<4sVjcr4hgne_7Xwt@ZA?E?p1JmG+P`gkj!}8p2^}OvucL|$kJU2(T z4;2IR1&1WJJz|ACrdua(`_SEC<@asu5UL7&zNmG0;}aqI2$g@#Jli#VdB@O41zZ}! zV>&LDE9{iae9?&6ezl4#@Ykj=KTudvJsE0>207gBOaEl(aWEU`ukD;%p5?=rKPBwb zlgNCncej2zmBJvWOQ0x?Pe-fFH}<9Njh47d_$zmJ-_$;>UDZZac(}=_a{d zlk4XWBn5GrOnm&1Ax=X4EC0&{_*8&fLa2IHJ=$p&x-mPU884VV$F9NR54 zALUv8Zu(@o!y~|Q8c}MW4B#OjL=~Q=sq?6nMy4VKSJ9ocV1q4>9v6U>;)T<6s_9 zX4O;-KigE!N_b9p~UGqJFBoMco07aT48Ab1z#-NBzM6?r091E<~5*xPh(U=OI4? z9!i(#NbZMzMaK6~$o!xfG~h$2pcJ@CZsCUDnLC9$fj@+NFu2A+k=rr{p*jxHZxX~8ys&rDpL2#ZD!k55(;6)i)ia|;Dh`a>&JIL#U2h=A2X9GGQ z;{mwI0Pt$K*;Md5kgo>E^^^wofXl*5PJ)NP&D@8?prw%K1;-778&pF^Hn`El;Jt9O zUf_vzcbp9#2c8QzTLLZuFZmEWa=7S!51s`1HSi&SvM6M4B^ExAQ@8^7#4_Or!L{Kf z-N8HHW+TDNAzuLge4CWt3eEv9ISBUG!p$xr<5ehROb~Gt?%aI=w6C<-@O0FEsy4QvH3h5QisJ_M^@!P(#?nI9E{o`4sX1`mb2 zF)_{mX=($a)l*P73x#3eJaD5q;Ah}Qo50@>6a&8ke+T(5;A!xp^pA-_MKXzgiO0onkoWe$pG+_ z^HRZV@OsGK2iJm^90iwx7rAYu!M7kU3|;}be?KxFgBx`P7lRv(1vh~ktpNW4`RCv` z`h_I+iVNVQaI?&9#efgsMHRvM#7q3p!^r4N(TFSP4=xEenF-DhFL@8V7QyIS@Dc>0 zKf!(BB?a1v0cY=#`tJiDGjfXmPa$J4+-MZI8N6T_cpcnm4|o&gXTkA3rGX6XrNIjD zg0kRY@S+yr9gr z6q1|xKNuND5RB%5n;{r&2cJeT`T<-IUJ!gj8r%ghDhgf+c|-92Z8Ab#!MSoH{*OV% z2Ds63@N00B&%g%|jLw5^LY}Fk81Uv{X`ljl7`!9_JOja~ANX7zEG#pS(I0NI8QckO zau|FD@*Ch71f#s2#DJCXqB`K7@RE+;dGMm);1)jIc#liz6ECfI>OA(U0JZ2u4v)OM~|hl?IA|+r!NogNuz8d3W%qkdFs{zEtEZ znK}MP!A<@Hh2n6dpTRFep1F${FcQJ20{A%O31A;y)DPSOUNQqbcc&PziJ0d9G_@NF zhoMj(!RQZg6Sz^nu42IS^HM=w@J7g=1lNU^j0Bg37cBw54f!Ws5&u^~;U_3`gd3&n zCJo*VH!2N&5N^~Qtl&kx!0`x1uYrGrd>!~hc+pqgd}*K%+~jvCbU`r6*zHpC>;0ascI22-@kp}zK7ljhw7Vv@x!0*6~o&j%x z{1tHSo>G1l_#Sw{e(-$*MDAZi#!4t;>mdf@hMU|2&V^v~2>1ZxFM_8b7|jG1#>%=G zToPVz7(8ycF~AS~fsE-;$k$U0_#VNiF1Q7PQ77jeSMU$;vK+m|fOGu*A2(1H8T^?U<~HC1 zaI?YSQt*E%KG?)usQWX4jH_XyT$Vh}jckp`%M&rR3AzukD zh+wo2+#6nW5qx5xbST^NV!(08D}!hIgGAvmWRyfO8UU_{U^E;2D}vGc;Km3>N5LK8 zMeYmI;N7F8{zBl-Aa4Nn_b(NNF39lUCS$-Q;YQ2B10nwmJQ~610{9fL@2CG81V!+ps-viD9FL@NqKl8;Md98)Y0M2F!rGJopfTQ7do| zUeFiZ{d=i@I(QW1{w8EJBFwCj_JC!G{oxrh>~CmJV(NpDC@Bjd}ZqL62}7?2Kb zQWIPTZqxxh1oENaaR^2Wz&}C013VI5^dtC@+*lZbFH3_9cZvZ;z@Nj-8iHpd7Qcdj;GZDx1zz%i$X^3L0xwt(eimNxHFyW)SHNHL_Xf%9a*bjG zDE?Q6o76BF(^TUDqR<|^9`d2!0`QVI!1)o3c7hKCy zyC@6<7lIee0YA1=Ej~5e=OqvSSWOXLZ)9tVGQ^; z$ln4Fg_rCBKLam03yy-9q#q{+WI`}13qB2bi*Zyr{|CY7 zYw$}5M!$ofLNJOSF9sYzFscf!R9HIL#z)3!xY;1^B?P0n;P>HX+rWq5X2-x4;3a`q zq``Ouqr%|zkT(D~M=VGomq#%A23!@v=mz*Y+$`^_VnA~QqdMR&@S;xOa--P* zivJ^!aR3U7!T((<$7nY=1H9xXaCx{<>_lmB802NZ6A+AAfX_kR2RxdC5y$^2$Y>2W zdI!8@rxdb81({cc+qR%0@03~|F1{JStxuB-iKgx1zZYVl54UU zFag1+I=BkFq#d{vyu=4@LoiwZ-c$l>@eX7RgPR-&7ppEq7(GQAJO_Dk@HPaa2f(f2 z1wFto!%HTBcR{`y{9hl@=nG`jf)`u{Hyt1bWS=SqY=pcDxG=n=HMkIh(LnGK$mf9L z;U(L^ep!sbQDjtt7r4`;!S@i13WMiEem}S%f>9UnVFaTw;Pwbc%fS!A3qBL}RrdF! zhZmr*848)FivcGQj4FbQ!V40>ZFWlee&D%~&j2?yR z{|qspGlEe)@Kwk=gI|W1j08UmFIfWi;3d1kSrLqqm^uERfkL{O(%>ApQE6~d1fvJR zL*XUQfxkd7ngkw%V6+b06~X9B@b?HtzY?4He{W$KfgH2MfHQEjs^H%cjM{*=!_5YR zkHF35f$xErYzOB?F!}+!5%S>ci2n~E8Wnk63@8LQxgY!-f>BrStB{Wc?}VGJ0AGjv zGjK@+qYK~x@S@DK5&zE*lo6;nTMRe{g#_>-xKTfFB?O}x;2H=fKr6NxRXNH$71y|ZE@=w7dAU_M9gkY3muC(_vOK@Ab(evQ9c1i%e8D`Xa@LRc)@1y`v^vd!EZwT2e=4=QQn1Oz;_5n zb-+&|7ZTj3@jgOd=9lE5Y41?d(^gY9=p`O@G8kT(Z6K``nK zPVd7_CL`nUaj9Sfcp~Kg1$RL(x(dDldG5txKq9=P2Dmr8q&+x2yu=6l*%6HvAmcm~ zJ_OH)8=U}`Kro6~A`QL_FDU{33c;ue*hetx34R8_=v84~{eWn+1`5>*%Lp6*pNE_M z3ciY9lw+wFuoG@p75qKi>~U}vc*!7eUIe4LhAIAUhQbF>co@Ox2XIliQE-_w*ayL= zDEKwV8-YKDn{@}@gnT@>41&>0W{&@Z;YRzQ@XJ6Mfs5duAR0(`9g3-g^ z+6YGd!4AA+2KZqFqfNv#|EH;*P&f>Q%A>`AKfs3|&$nC*_;#tt>w>evOP&PZyIJHT z!J{Bw0-l0kw0k+?|0O8=1ceC*MzJfT!47bvGT^s&N(0To|Ao9acoBlpYv9M>CF{Y9 z&rA8QSNPJvM^Lx|g%)t5TyKlK7Tl-?_+!Z1f!~MR2ls*(EdW=A7kvnBhhTKV7RU%U zidiWQ7DF&90lo-%6Y$pvMm@n5;3cnurz04x0oQ_;8~{HFFY$jx#x9&1yevEearHF&`Q@OA{F+2F;H zzYng0V009G48h14 zSyESZYRUNll}k(h;is7$6`4wTI{&v7J+$-oijf8XE*GRX<=DVSj&Z#K^_@wB>ggYt zqtq?2R>qJXYa7Svq-ir_WxyNM7@5RGt(;ezb1y+lnrEG zeBwUI|C~05+^_XBnO!yhhU6a_n3^wtApBq2YVpjKj+3vBH!cvR>Qi)~U(itp&4@Va zF^VQ!VU_Ki22?YX22n5y<)YQD4dn`{BO&7gL%v9rbTr#*XCeQktu`E)I3DI?Y?jmO83(R!&{jkb}%^^zEF<{fp>r zH>sl{x$Z|&J}jSoSA39p|FkBNW?s;HuGkd1L}==4as}UOX6~_T1IC)Tu*Vsj%se?DfvZ2pFRb14=bk3v18kXQ;%>!U1%WrX*q#4h^})cTpI7yMo@uQwdRIrj5=zTBbIbIUTzczj$*r_Z?%-9{&yFx~k%I)`84eyMTl zP*$=fZ#O${KRIo6vLc#>Og%O~GVP8{1cuzd;|9+zwLNKtGF>SrhAN~BXdlmp+w?!1 zM6XLV$+tsu`(qh)Ol(8eVjh{45s7p=N9Ce(I5x;ObP|TxG%bUdESGwXK|WOwxuyNL z6<4ey6?1tu+!|uj$a>j8|8_$v6}hTc0j?;ZT47&Rwvbf(*YYS;kj~XOc$J}ZG7d%? z=+ui1vgNEn#JuFX>Pc7pSx=utT|qu1Io4!_5xJNge?^5|X;A zGdg6a!tK@zQgPHDv$?{QV`jIyui)55@?TZR^)xke#8qW#r>@s_Agn$%F{R;l-*Ev~ zEj%Ix@6?d3aQ2&0PRa+8%ipfY;q4`#Or%x8-!;G*V$(a7n>kAi9?mzD!!2rKPI*&C z#8$Xi4=<$YVwru>ozSMb5I+cyv?k4-~w zBgJ*@SWCJp7T!TQM9Cd|=IV}8Xe~5XJ#0^cY9zK=(j!;BI=#S^=p5ZTz{_mE zY|8uHaC^!buS~Wl*_@CG#;&Rz(cIymrC+I=t7@x{Os&;2?twI{truBLLcgoxakwMp zsjGF=?;9r-$QBm)t-gezlzL8lE7n{2;`OQ7=Krgd*Rly%^WQ z)9V(u`Bwu*{Z6aghkW*W8+ltgF(CKMa?8wUJAK&o=p3EI8-nU(vjj&eS!klw#f4Iz zoj9TwP@kCmAjaRpba#`v7L6v4r<4yQPc*xJSogXMW*)hg3Y&={_J_oZByQ2 z+Jdsu-Z^;MGdSB&T50O~Xn_7B0~a1jXe~|I7}<(Dm6VZMI#mipHgNB6BEQo{%hnfJ zK8z)3Mp`PH?%-`LzMa8g6_RCXPsK>RtfjeqDiA&-;SJc}7g_NCjQ#(kv-*E)P@3MK za(O^TDDn{9ZZd_BoIUnd&(5i3bYFt?9x*|Qp1}LNmZvr#?L&5_`s`W6P!m-t(4=*8 z{MsP4)Kxb8N6vQJ!_ln$6GrPsh2jx z|E)r#0kYEF)^cO8E%&d}f9n4-v}qf3-w8R!Q!2`cGV>u84yaOBCEpsHrvF=oJ2j|I zNrR8$JqW%>Bk1Y7|{M#3_bHy5Xr_|PydQ#dEq)RN3S9q+Y zsZ&?AYbXZUOHq-Ae2Cq9>W0EEA@g=UqCNJ1yO8`+T^dNMN48;WSfrjc=${xs^WRZ+ zh$1UYi_WfNsqWgww}n;)@SPv^^frX$O3m_Tam5! zAFmg8@_#-@F8sTS%^2@BvS;04q}(G%1&x(?N2+XwPXt*>l&3i)MF@UUwRi ze<)A!|I`IxI9WdGApbkg^V z8JP~|#tB_wEzcZKHb1gsHa~p7LGwRl|8Er{_kMPE+X~wuxZKG=t1k`Sc5bo%-D-es z&@Log5nm$iPx}O(-LILHZm^D)5wM2*jRqsyi|~KjaO#R|u!vZ@>Co8`vj(I!a*=wL zv-;-L-JbIWROr9bqwr%CK0A#yncba4Rs)_};=cE}o58Qx@Xtomu)fwdK_tSt>j z&ff4t!v{qS{`(_^`qT3Nw7r7Atjgk$myqjIf#i$%)|`Ks)=TckX){M%#GHV#_7*a` z^(ZxtZUXWhsH@L&>ZoMHrcX*AlTWKdob9S{(>JA$DduOvNlBzRsfR!9i8li~Ub{Jo ztVgVIl%3EK7dPxZ&|7`qR@7~)bi=Z(&^DO5!aL6syBkXmP_|;5+6L^YwavHbG7}eQ zFYvV(mX_O(3!XIh|x$vfnl8oL&7>j?b8%(S5$`5 zreO+3ekYDR1b5P}R);;nQGIiof4J(yoMM2TrI8iLF~9W;I@EvqFO5R=Z*x68vIfiY zP?C#>k^*=rDX1Q}tsiMfWPP{D z{SUappt23xA^N+iY;EbeGHh|PnjI*OZ&u8^6lBN z=1@86r#5s1_%=r|v(*i#q)mKGf~xuBoJOhdOK}>lJ~#O>$p!x}M}Yhu9g{#e>wyzT;SCH(K zk@}YTl0Q#{ljcsbtA0Dg6C$AU9Oaab$OAu$f>pEyBh&w_JoS;pI()n5?NaZY*f{>r zQT9PSYuKjZk}s*N%04Qb!R$J2-56N|{u}nHN~%@DUcg@Rpj4FB*_qXwkNr_7s_;%Jk3`n1Qjw%|Ozjg#Cf`+d1ZvaM0_iuL6x6IB2%U)_1Z{c8@WS$o7V==n+t-XcK$oho!x{`S3Qjdv}$ePuQo|T z)@!EVa`{&(jqY4#M* zHk|qxIx4OFI~jD}32vVZ_`CNGBYSN5P7U!bL-r2-g&}T_e@Tc(bcv5Ajco;gw?eBI znP%WqPijEiIb}hLT%x5tihovMGwhnb8o?#*L#a^o0&2xJW=Gk4(ND==ObZdqC8bM^ zNy3qaf_*&E>*94mI%C9^ZZR(V+RL`~s;xEDzJ6$*mzCLW?>z=pd)zA6i5E8c7sOKj zb5tMGv9PlQj_({S>_bd+GxhQ{GXHj%98DA8dW&sdXo+H z&Fr+ZHtit9PY&|2m&**d8oV0ERxXgbD&s)b52#0XavD@WJ%jV)2Y31 z^N9iXnC~NVkNJ`n_n0qP zagX`YQtq*f9=l3<%#W;ckKM2y%g{T@oNd7PtOqJ;pRwJvkloZ_>AVH;?_q>C7+J(txhjKZ%;Vw2v{FZOW*1(PT9SfRqwIB zd>|av!MGs3<%i2r#sJ>mi6u65l{^(2P`0PvnQfJ;o;Bxh0admFS4fwijjKiB!G&nN z7ZIc6v2PFaMyof=uzpDWXwq~lYe#0;SJIqLnQ?aL{%vXvwu_KW)2ff;yoxx?G~blyK)WGcBQBWNp&eDlL^ekaST6btVmNix+n%sB?6Ci|Wc=?|DY~vr4X^>W zf&Q5FADBHuN{4L2a*9ps+l@!qfPfl&iPNB(hS@5!`PPEA0-KI7mnt1)Q=1=|ZheaD zr_(U#gMC#J8IjL|+sn+6yP6FjNJZJO8m8s|b~(XYb~%v-35V_PZm)3b2*}3KRbQIz zQ$S@jejQX2Vx!cz=GaH8Z6=LTz0BE>r|J#jU658y`fvvvWnKbc|ChG`=&hbrET9J- z{^T@>S(>uDv73dBX3{$7Vak5*?GLz|t6td7siRW!?MEg9tIB`0r23QVI+bWh>{2F6 zUD`|J-yO2F^p5Z0rtN+WpIL~d410N%zOzs!CP!ww6sKe#D^0iei{Pb?2s219o$a`dd2ID9Ux(mlic|ih=RpgL+1Cn58fpH&WnSfIyKQC()l9c) zzvBi{Uc5`q0VNls9d(&>Q}j~u8@wy!yO}hg(mlZ(REz%0>8&0jhW~|Y$+Ak9yUb;@6oIG*os)4U@Ljlz`AE!a(Oy)F7 z9WflOKFrD-qugxf2CJub<>d_PQ4a1;(j^t+qZG@VirhA2)0gLmm%H;75W6|C&mqu> zhi@9T71}g%$nDdVHa~K?wfT~!eG=IZ%eZYP`Q^)$jNAA0|4nW~t2E%MiMzuMh-7*m z)ZE8()yL*aWgtS|PDZ+x`%&t8nE9ggx^0rr%;yI@{`8M1PUt^JC03DikJ*3GDZ@}< z_69yZw({^DEmv&MZoi-_lC0<8>bBLl9kcNPBPv^KuD~kFB@S{EV}PUnf0_J0vH{yO zYia%yJOZhox8keR&EAxeS-Vxz$T^bw{Xs`rJ)0W+c3~@1LoXvx z?GZS*-0cde|1=YUZ7{9W9s+wz?b4lAPi;MR%l?Wvm!PlE_&Ax64EpR$muH86_ z8)Wz82KmyBZLs+nY1pRK4ZG&zHS3*C!!UbelMl6{XxaYiBU%TVIO>fU_J8{yjRc1N z_GzTtmZN$$>Z&o{2As>&Pt}O2NJ;LRG51l@p{Ak9HDe0tBl>G~l>QD*-&QlGA>ns~ z-w|f471N6FN5UTopQ#m7lJErK3Bq}`Vg?pCsL!Yp&KXsj{=Co`H8XHV&7i+S>Wn%< zvZK?h*N&-9YUfDp9I2fnwR5C)j?~VP+Bs4?M{3h+$23oWQ2#<|zmVE5%A07Mf3IH5z52Lr>KvuNgB!2ci`nn`zdKs}?i^A#9nZVz zEDGLqM$%t=%uS~_{Z*mA!R}3`CH>W*f0v`bQuJ4e{xp@@6}agf*Egxgo6bS{E8*NU zbtRF0X~%UJ1zmR}{l&+)ZgKjnLVtr@*KJ9Eb?D#aeEMH0`m02LTDk77fa@ODu6vaJ z4$@xl7Rt*)d08kgjv9%hM&hVo z9910WCg?b7Fpe6GqsHRg_0ieg1TQ=3WhcGtq?euaC{Jf6z3ilyo%FIBy%t`)dsfH0 zGXwFY7hlgU@8og|2XeWWbuP-t=eF?jyZhbz?pJOBw{cVf_pRsx#03nm&;{KeqRWy| zmEF5zDwCm=-7?eXHKY@<3Ncj(tGJaZ9jvO5N>!?^I;Az-XJcx*{bFjl!((c@6JqMP zb7PvgI;w>`C(y#}=CmNa7VcNX+lgDcEoiVFA=@9L{yawf7}fDOaU1sq-Io5^lYV=5 zKBY@_C;E3M`gbRvpff>dg3k2srzw4!_-XTR9o?1w-Ie~`gVG)(>p}m1mj3-L{rg$@ zcXTiJi0(y4z84+&UT*0?FB+uYr1L!e^`*T2BEFZY--$G8iEe@DM7Ie274#C_qV#t+ z{gt7=3SLfi_6wydsuF4uo#8ZBRSmaRu_~&vQeEicvXT2L8x$L>;un>AMYU9Ae^Y9* z>Zl4*I!m=S@})>usXVF#En&Z^!lt4)r?+ZIH;-~VFRA-!htr7o0&Tr=Q(A%^25I4x zGUW$3!_dwe^$_X3=&n(_R?1bOq~IwMkW?4qbBV8~xTQvs0K1 z4F;MTE>3CmDcT6cISD4CqRQ#WkmYo?wq^rzIuBh}s!yOTD(I~8oL6d8V3V3kmcK@6 zU%K%>Gf>`?WBn&%9W_6&ObvctsfXPjY6q?5YXViB!gS$zGv#;uUa4)AGVco1b)Gv< z8-YE6HKu_d0tseFlL9Z8Ax;VmQX8m(BzKVd{u1}7fb%?!L=ufy$(%~%2`*C^>Bd0m z;2M)wCgzcB6x6CJU5ZguJaXVjk)X0DL;;U#hGd38=@8_*Hdbd zQYWKUfX6sJDC%8}%Ix?#=`1!7y*^oS5D9WcFL0itU1mv2+Y#Rry#>d3Cywnf=WrcG z4J~u_(4l%ZdX1BjhP0yEYwD?}zEmgZ^m=LZOx2@}QY)j!sAD_W@G)v`MNT(4n<-rv zJ;pZ$Hbm{k(0{4QT%ltXEyp%0<_HYi?(CqUjf*)BUS?)*BN~}AbV0ajjBx9i{mv+w zj2&Y#I~i#*K22$#Yn(1qXV&teItv3cJI_!%Lt=b6W@BP5qv9LM4gN@8u#}#Olb(!G zE6Cy)H|U6gXJPO%r#_uP9E(|_y3#ek2Hsh8;B4{;@Ph$-Nch13PT7!=-Y2R_bEQ7; z=^r<#g56${nZ=)b+GQ`e;N>)FlrCUWT1b$VcXL&z*{xfvVKh0HyH(wz5Ay78tuE09 ze}`^q4BM^iLO<5j+gdetbJDtTL3dP{Iw_Sul+EP(tyN3)-8rQyhw?zNqv}dG_F9Ar zgG(W;gtUf9cZBMjl>8X{r5U;6WJr55ta!R^t{6B|buPfiyqhs-shX+k7GyS))K?AD z?RQ@MkdIjchB^U5oZ0#15+A#^X!s>l!Bls@GvF}m4|Dq!;fnS}qKgBsf9a>4LbH7sWrl0K`@J+^S zWGsZjLhvVMP5+7%Up%4Ix9JxmU4w=IhDv=wqz=yTGdeM<4l=VnfsL5NV_r_!k{Zd7<6T1VqJ05 zY_1%#JV-M;Z_&b2lMXS*ip7}=n}%DfQb_&%&IhO2qDrnru^O&KuguOm}~4cyzks}N7Z-tNn}Io;&!d7SIZ19^f;_h)JAHmB%!G)scZhw5aO&La1t zJDZHku@YwA&KirM$%8c3@57*sVdipNs4}Ic=uk9_>uk6oaRDmO zFfJAiynqH?Km)A<90PjCiU0H3F9x?Y9eCAk>#m@lze@GVp&5jc9>Mka6jsOMSWH1W z8|gx%GMUC_pJ`_E@7Y(lizv>=#;-T>ifV=XE^*%YEp8Ou>FyrC6AeuYoTo`S$k}Nc zd^vuvF?>e+m$Y4TsNFAVfg=BZJ6;rHTuC>8HzVDKl;U`Rm*%PNUiADp3^?w-N3r6E z_~S1BqSqNp7t)FT<@mGcz@|Wzy|nYmxjpcO%fan3@-sVQe0mb0YR(((85;8LIfDVI zC>W56wg1G_8>5b8b@GYb$jv=dplajb@|D^-I8|$y8D8M-TT0a$RJ;8sIHewp^bC zvQWX189oU#ryxUnKy%Eex}OBf(b@D}x%LO1AHe!KgV@3abCBWN;+L72upvHYa2KtJ zUEE~>-g;FCls9^`W%GlZNzlnHfr15s4U_hyhl+KJ&>bKmz zjp5OG3LAq9=8?_ny?Hh{!^-lZ7>16Gk4koP=UZ)xE2?Do;yqX*xgn zY#6PyZf~;zY2kEMypZ|trtfTqY!GGGXg8J`{OzvJ@Z-*EZxd=L@0#E++JsijyD2Do zn}Td`^}JWjp0G~d?Lmq6rEmzECL6}V=Y_lphAYw+;kexBY;C!t?EeV?IVEZvkQFN- z(1ZMw&Is(+bwQ+h#EMShtQqwXq+Gx zVW+b@u86}sOn+TORmGLasyr80%2in*Xp;I3y1GFVhtC#I>x1#`Li|29)S0tUG?U^l z$UB%8e<&ozMi)BDcYd5p#BNao(R8sD8JMU|mn9U_LebmeluR#0oZ)nHxYeJMC5;V^ z%-{ldZHTTKTRtb8BMjpq3nn3-Ly041$mxCi<+Jj zEx%)&csVrDV#6bud{d$&8YDe|^|3EgqfWF;1mUk+X0u_5G}Lp>FEO)48s`1w2}<9d zkS*5%hZ3&wotafP5|{V}>O(Y4VtrcHhxpK2%0ez(*Rx-z?tCdkF~Y2>Qjd_Wc1L5k zOvus7ZJvUG;}_vJ&%&MjBJA9l(k+LeFK-oNrbf6Wv`luR&e;2@AvuP7MK^6Cx?4wV zGN*ynt+tAJk`<gr6pYEUpD@>1kLCjKZqfMImlY41^ntpxr`S1lH&cROKW&NR9hV<9T zp$xf}c#KeYxbnEpx60|Zx>cE=HDZrM)wud54m0xr#o?}q-I(7~!~i)SRBPE5H7=-K z^<>;g3#^c=SQ$Nmao}Qug%)ZvkF+hLflU{B+Z;}CG$&AD$}LuRRDOo24k(^&S0;QX zsPUAEh1k0-Yh5OuL(%Ssy$W|qvn2J3YUrWesRSp;IiVzWsw~;5NmFG>Vq4E8eH@Eh z^ndK{*+T{VMNGY3C6r)YNFi6jVwu4?jhD*|ufiWBRs+{^v+CE=Wt*6mJY7~{vT3#D zEeye{l1umoi;Nqz%tMvUXkTHm=(y8@_Dw?6fkBz2a0X4UWtO>EQf=4LEl;9XEN_)= zStVIv8FZS$S6Pna3j7xRF^ig>OF4tbEXy!*ei5dY?voVIL3iQL`6E=Q~rku?@tJU-k(aX#~<4l4ZeW@k9TGn`L(GWDe9Ss=t7 z*eL@qrB+C$i0sg{Pa*@U%R)2n7UKQXnvjofqwyg-bQ6aD6}qM(tN>4!Q_GNv9Q2`e7(7Tu?i`>x1kPu~T251F8 zoJ@?6{k&RpTX;MO&3jmd%S47h>Qoil1)Pi<+tiOT5@ERoTe>=}j!Q1Wf}vQaoXR^6 z>6{%}fCR$8l@o+W1-F2=b-rL((w7pjTj>rzg8s&QDv=m&GYOJEb%MwAq*9aEpe{)quZeZ_WjX(!w45417l^msg>JPnHP@=@K98AYRds!V zb3WZ_L*x6iOR7a3#THnfIRj~Y!3@5Gf>1T>F0(fJRfu=&%j5<3 zTk_-vW51<9mhAbisn^3(27l;U5GuaKW3_GrEZqMc^611LQNWGlg5?1E?PN_Qc*wq5 zCcHu`wthRDigc@W3GQTHw>;A^48gBfhlW>z*gf=zdMR>ncKu$dj|( zRWu@6tF7o>p#6y_i`%>BTX@$h6V5l~%M5M_Eo6Hk+Y7JT)$aGCdE)KZ7a+dU^JQ;Y z;9ktVrBLa*dpR4HTht_S(p)3&=%l$j4vSHAY+o%8ndjP0S}zU~;-R$FvbA51E|M8Y z5k>Ms<3)+ovqUL#A5)$GeUNsDb%!Yoy-B~6c9adruX{MqPiOUTn4AdkVvkc6wc0JR zsO5N(MIAOBH&PE5nb+^MSZ1d~Lg9 zNWDev$?D}DcuXg)XE6s1=(*6^b}ThEwXT1(XPvd{i!{Jo;tO7}zKFfyXFXNjTeS<^ zi>`57GRxMVB}_ItywbY4rS51IBbg%H=q0lMtM1Y^-OWcVc^d5rJEZ4n^oXPfNQYBI zI;`rDZnsfm!vGYj>Q>E;gAiZsY!X7%h?u9T?wb&*sx~H6wWXL)6)q{XlaBTKFXE&r z8?)UbZBLqBzy-6dcAGj(vfI=i&u%mJ^>pFrUP+u_s=SkYQxjY057__rinl#9O^BZ0 z9LZwoKcH6{-*L7m`2}-GuMDYYi2Ze=ou-j(+ zMLQd{%#Q72w?*P)gO1l}X_g3`62MN#^yu$&E~vt#z}^Jm@U%?&NB6SZsErKhb0}0D zY}#$qmIfdkwV|9oM?=*?=kZW#TNCw$XZQ}XWCAO+TB+lxIh01mEurh!vvi@uh5 ziNn>(s+!aInyji-jm=io&CFKSZ7<12I$m7kDy+YrJ~dvwF60s?5MiZOyQ;C96L50^ zF;;4=cl1kO|0MQLV*doIYTXgcT+4@8Gfokyat@&9er+*V%<9o3qzsGLbxm?@T`>o2 z>bKB>lGR0ZzY5{P&g6W*G#Md9WN^eZtLiQTuIo!Np#0R?9m-p@P_;!H#{Lx{SFp#c z&m7IV!_*T+{&xQyc>~qj1bG9$2#0L}hUOG86?QZ(_nrCdQOI{x$ah#^qb*t5ol|9k zDI(3P`g@wS2PPFtfb{XAOuUPc5Dy~c-f<#G86y_S*>9QcS!Bd9U@>Q8IbW~9rs+uF z&H)bFw{_U(4=B2xbJ`p}k5lW#7#BdBbvDffCG5Xiwv{UbR@-QfpmRZ$fz>v;Aaom* z5Ro!M{>PEw1`SJP{Cv|sNjxvG>gtY4xu|2TYABB3J1e!SM!3(aPPt001sG^30d@Md zT5iP}G^`C(b3=?wI7QTQqdUYIc9_P`6F39fDsQC6prf3TqdFJqaSo`8dU>;{oS{?K z6KIJ;C_Ivp^E^&A*j~%b5nJHjCZvqJX@z8$yNfW&72jc^Y5l;^bdFyfT7wmmetxKWw)4}_ z;?RjL=>q0ZmC#Aq_*zE9@Ia)d*|_dQtm|a_Q<-VZ4CVl4wtdCJSUZkT zeA7OR?dl=b+auI*+=DoBIZKO8>uC0`FfGLD`iqzx=;;4cRP`wO&Jk{Y6f;2vOc4`o zs&`D~hc|RHb|_ugWOrc&^yA%XIi4a4 zLLA?e#k9Iz>#k?|6ZVbh`actZ=MaflLqq*l<)kgO|4Xp+tiBYxJ`}q zM{VjDtxP`adF+rz6=+X(rQTB&l8q`bmg)U7&v5uc-J-_y zJn=9_tV@k+4G+1-Lw}ZUv&5M5MEZ|-Y@V7YI-7cP_Q|0nTOS{)`u*y+x(yS1x3$4Uk}qFFs+*q*@l zGEs<0DYtvPeZgAlJrx!=mR>`~td2%_ z^h*Uq^$rJeSVr6EG>(vFRd2r}+10FACf>(@LnT9Z(kweqG?FEwPQ`FK#@qNpxm@pz zXG0XO>sS?jvX&v!#ra2>xL+PPZj}a{z2(N_}F^R69KfoSLIDl7j1E<)mZjG}TUzM&E-+ODv_vmHMGG2m0cHGC>!(=fUM1Zn|mDNSq;! zFJisQ-n}QDdW}z#0}*ygu%rK{h;F8M6kX0kC448PG6EhfN`1UoX4{Usdi9}FE_&sU z#wAO}edj(dnL~E9^g3i$ORsvKMRQE57aiqrNA0Q?)mv}Tf1^88lM2>+a)IE!^El`D z6f<4Ev2-=pEng}ri9I9j`KB{=H3`+St_~c052uSpX;_#%Tq`p;r*XZ!@T$g_jEr#x zPTTc&XQ7A?kQ&GGX0`SQF~6U9_!8gAHM@G$a!rwX2kgrgP|5n*bCOE6xm zv8YEbZkbS<5O^YULC&&cO z#U*h9Nu0pc5VfF~D!Wm>DIrWnOpq7G<}pn9tBjHPx2%&@`D~mdM~D%ito*;3CW5BAd#`aRWH~1m2DhV|_F;$MEO$CP*Ds!zDG9 zGd5LbNUzfp_;FgjMb&k_jF2JmrQE~8et0FXoNxPZ%I9g>pY3u!UW4ZXYp1`UXi?$ zSMy5b1$Q(q;R~F$f6I+oJp&pN(rN(CgeKR@A}{vr;s;V2i4 z8X{Nlq0+c6YQ!QvV<3(3nbwbG29I+QXIjs*u3GzXZr#VZ3XjW@Y!h-kOwF1~$J=sY zTXeZEd0$h?8oYUAGuJ(Wt;i?WJ!g&)Z@2Dg;LEbTr>%&zyJI)ul z7N*iUDGw}TpHR<=@bujBAfEg6NtiAVucjrt!_}^Mx_ndeg(qV4aJ3yah0%isi&c%~ zho49Yr-33%*u&`T_RJGW;i_m;*`CI9m^2(xHJg^f`UD;!)dR|<+JJDiQ5g`fHZarW ztD8%o93aDw7y2;1)6twjeAu90g*f|Ue3+Vi;=}0ALgv_VuKUwBm~w0tCVDE?din&m ztCv*LrYD7~ku8Vc|66QUB{P-7<%j>=2_x?G{BYS8bdfJTP*h=U2GcsekOL-$&BN@4 zHzUGkVSPVVTg>+5Otsj&Yi43t8QRe5nMKm>XjKwUBjTLKrCgQ!_y+fJRUQgg87h@k zi2h$9BjPm~j(D6Sp5h2a;ma_+{?M!_d<_%}4NR>C#ff}ohmqgBR#9C%OGgqUb63=Xaq?U`+ z9ns(twdynBYMh8+{|;g50cCx-8W%c*(K-QJxbWBL`CnN`hcNXL$r)8AqLx|D>=33# zti&+&Tp&?)vqScT2-QmxB2+I)3{%JPNqpgWb2v^s9`vV&J=_(K?fg^aq?Co{0e>O` zUxj3b@%leiMo1B<5voYjIDrgiYJ?iO)LX4b;s)@AQzO)5k{Y4vbQp&pEjeBc;Ebv6 zwr=(WX?L{BktIk^LUr}WVpU#;o(YvcNl(S{^$2zT zmmi_t=PP8rkoCo^FJ^r?>&sa$V!ep<64pytFJ--y^?j`GV_iSQhC^(~k5C7Zh0Mjw z<;)^x3A2>Bk9mlhCtl?T6KAm#nyjrhFS(UUG)vGEls5A!oA5J%W>9EN#gao2({ul6QNc-XCl;4JUy&>ix5%sYo$Nde9|9lK5i?QxGmIk zc=bp|ZxeEjFJO-3S1Th`38=SLcA6cQhM0DHEU1;wZqLO;d}-3Ys&Pi7>Yf>qs(Yq!xB-!B{5XmS7;^s4;Z0(WNo8a- zUvRNmb-UHF)jpmW&$HRGux*&Eq8F_WQ;+LchpET)#WGxqSY|qbk@DU}Ig$BQbc8#B z)0@gvo77hp6A*gT2jRED&!XqUhTHfvK}X-w=LNx{XfpB5IVgU+Xn&F(0J(I z67VfKCbnYso3x}#-WlF}3&};N!{|#bsYNwX zA7efhIkXwxkXmypviK;z6;pIdk9-@3`-@IRZg~L5ZSc4|39n*9cY{UX?cifYXJko~ z#GZ=$qaEJ;D5|}#(}fQs-1@)poeuDMr1RyP3h^{<>_kyL*Yzd7!2%mK(t&HQ@r~*i zWR9O(dr2Bngt>ugY!Q|&7md1snv@DH0#6Izb-8BjS$n zU7sVv>o^wY1TuMgy%1)@thH|aRL(#?vyi!%>25%;Vz$_@ob_BwIySR+xQ57d@=Zg+ z*W!ytPi#=k7H8UP}1N5Iggie z!uupIY=}2gI8#Y_ShITkE?LPT_CL!0$5}6uytU*M>u%N~8cau9sSBwJ9Wj8aEGvB6 zJoJCOqX7poqJdfmWQD6b%x2a$P$Oe)1J&wl8>kWT65B7a{Tl1nSii*Kt}!E`R5}q+ zDjjzezyI%MLqwEH*v(Af2np<;#Cj6zsjTB&`9AbgdIHBwVx}@PI9vvY8^HR2C|yO& z;D7^|@#Yj%L143by*47akE>=_l&YEntuxjESTnMHG~25}Z^JqP?|4Sh5L*{AAxaIs zIZ>)tE#_WUCN9R)Kv$-Vk8b|^6svq|nOrQ+9h@hQVKz&@2}>ljTKWoA%Z;@4n#u`P znds{|7q%@6r`GL_T^62#h0BcX17x?$Hw}=RRC>?%y?Q++7t~ zj;CUW8yCr(E@@UGFN9-r`9=f|pZLP1QEJxQ7p2C9eNk#!F6A3JB*V1{i7~4iJH+9S z%JBLx;wVR`3+*03hf!6b?c319rsFbTwRVaVRu^m&Qp$H;8l_G^V&p4abs@{SNK3h> zFIZx8>1~%%F5wH7uF&ZQUTlpaz3fmF-YdqBWX7r-(kmEuqR~XoJ!$?N&-Le~mPDxy zL`l?4%!+j(3GyvAe6dhIa40D&iBcPllBju@ZtFryqSQvELcYxM5&YGLr9wW)_^9lR zEQu^pWqKByQuCfF(_S-v>B78ctDq;7`kpHJXcWisBBcr5@p`f<^mUA2R;?^(S8dyLpqnh zk8~t(Y0m{qCW=1aq~2ig>@`KuY1qwsYeHwtpdzaYjaxv=?F*J1c>qxpN+pHKM;0;O zjEYD?(I)S$k}oJ7ZmeEr->%h0sdYpxx1Cy9rC1xvD#h9`N>@vyOWaRuqtrs9p4-GV zE;4gN)qg8A^@3rY*^VV!`o3I#D^9(%cF3N~FC;}Yr2bzLTPD;~^eld*D~n(0$_jm< zAL4g*>kZYA=x(S+z8KbHSWn>jJBjT{4b^~^%6cm6X{@KQp2YD}nQ6=p)+%IdK-Wa; zab%!FSG|^()lDMWVNYf&ujQ>)EpMsfBMzZx`<2H>-2MsPj4V%#II&fTapfI2UcB70 z%`5LFbsV!b9FN9(q&z)B4LIo$?(S&3T6)AK%#PmJ^oWC~`xE7v5j5_6ro%x+K6`s+ zL<3x?PRoo4$NW#EkxJi_8KL@ZW&{mDCn7T=q161R2LZCP@VscZb&(-E+5@ct><$%ft-ev(asS$4b?ZG zavG`;GpC`tuqpJ_Q1zV^%P$ zn8%nWCGpZ~M1A?ixmLTTHxQ+bB4;!ZyBjry+}Efzg4#>(z4?!MnG#~QK zMk{Y=AdWX$4)=*h)8IbUXd~R8GKGRGS9h$t}z$UsjX=HYG#8-J5nQbDiNf&`%A(tNBCSI3Kyd>?1V7G}%X*t?t z!vi+)W?}sQk=qPuh>23>LE1!NGm5aF8C|Vq%)MQlA~B|sIZ|Z7Z4;$8 zk?-!C=mPt0y4(Vnx#?O9r?AIT+=f!RV<}AISPBypOP7p`rH~1+Ti|XJ8@baalJwYE z;MUk{@JNmAwbLm&$;e$}2f>~eI||YpJ03D4b}D4Q*x8T+VxNH=9NTJ~O$>`|1UWJ` z26A-l0oZ-9@o?wF*1-K(Y~x){@gmZ6ij7jfBIQZQNO50Wr-Zo;L?#vlPBE|r1*%G* zJ9xa+u-%$i(dzXEPEp*7>{}rZqJsj7`W{xA4 z_kG%WwNYXvc1h${#XQ2S2G3f8kwo&Z2~1gUoim)Al|7Z|2)I4^u>UOUAzo!~!5jyE zklaNCSwF%&%M3|Z;l~AfZ?Lux%-CR!(|h+)wqj-#vxa$=*`hbcW%`+OKq}H8>l>Jr z%xb2{Q1RoKEx;)q|E0a)4KypUjxn_eOewMU4ZK!jeXL1HUk=OkGJ6MlZ?ujHY};tP zRo{RyS(Xj6idoI9VV(skeW|!yYxvvrJQe zb)gV&d-TQ~X7FI-1Bvl$Z^29eM}-cHOlQ3}NEgUvy?{9fq#Gz^y-G50Vw2U0LOZ(& z71?yNwO@7%Y*eT~5FoVou<_2aJvxa##aB#D=XSX2cM7qod=2@m` zkg~@!)0w@Qa{?(_tYad@U@jeSO<>&?Yxg#paE@z^8)vU^%v`n?upS88YK^&RPWNAJ zTVZ(wF)G=oig~2G`&Mhu@UXhMstD@l1`79CKe8=+8qe>Gb}bCtyWi?9U%%hl&!pR* z6{0uNAl}*h_PdDvi=JOn0?sja5nI7tMT%=Wv|nUjrgS3diL4Vz_kvU|nQSML-N*J^ zwi9937x~#^A$t%hLXhoS!Tv?>EvaJtnACq*LZomtY_F4c%QHl>o1Rk{v4j1K;-4Xs zJ)Z4}(yrhB3^~XnQyPXoLnJ*{>N(F4Nna@S!e@x2Z0`G zx*bb_{zbi)5=l=aT`wBDlpJKplmQBs5=qaMdht>s=?kTPWGRvKAV@{MmGw&2kAeM* zzFJD8a5ZeNllCi1iDVbcu~?!6OmGnGVE>}%XNeRbj_rxkp7Jb_>|VBKN_)n$M6&zX zzEIkI&l1VLm3d6sr$0-S>94?MhA!+~p)%lO=7Rl;Rz6FlfPS_wWWAX6t*lqEevEbd zN{av4vqXxYD0Ry+BI%h@zhhbEN?jRzFi=KvrN{hbM0sJhFO>HE%ZOwTvVE(x|FVoo z_DZ%NlXmZOM6%aOefD!i((M7tVEuD;9S$2c5VM6!F?o+<76^F*@y*q$rx zUp!AFyPxd~r9FK)k?dQgK5sdZ^kY&lU#^pb40Y1*!*U|&VimUuuzyjz6?Ty9acoay z-OG9=>ps?VSzieDFB-psNb$Eak4gI;eFZsW2AKBM6yfR$BH0tAK42x0^h{>1v=^-; zlHCtd2`-fOS633r9%TDgY5#I1k?hB$uDb%{AVZxr^bZh8x4%FcnI9mM9tX-QlJ=Ja ziEQ_>Jp-f>GgJCs3=k<^uGCwvB9gvP>cdtM*XS^8m4;cXh!o(M)L&XfB)tZt3)e~e z&#Q=JH?83+0{a);yxI zvsm$FQN@P%*E!=%+QrKZ1+KnnZ6EK)xhJVXW+k(lDFQQ(S;u5oy`h3tGi#XQO=UMR z*&|AhVcR$*f{lGi#Xm1r=FyCT1Knp6O+#Gkwf##dgBah5}|Wvx=GVv1-Dm zPXcF-Tc2o>b6V+sP&OH6abU_j)-EH{KUL;zW&yL9S;eejnm$wE)0x@K0%kEYu;(3X zS6lHJ+DeTb75MfYt2fO1m5N*aRiN-)>xjU&?^<{3>E}5E%mQXHvx-^6G<~hY$1~HJ z*~|iFF|(Rk10IY#ewX-0#rG=q5y$?&vzqDqR@wc`0%kF@D$wqPb<&W^?^UpB zW(`yPpzJ1Q95bHjWu`NI%s zANyxZ-MQ1xdV$ni>@1c{+F2#3_uW~|0cxaS=uYu7UjWp$`F6%jPS}|)IellgH}o8Pw%rQb1;UUAH9W&yL9 zS;eejntoOB;+g5pY-Rzom|4ZF1*sCumnHScI5;S8@k}o>ommLdiZ1>)6^)y(wYm7dKk1`kH|jH_Z6Use89l1bQjT~mg5rjMD;tYVt}2)IvKZwd52Wo@Gu z|H-K^O@Appote!nU=}m0m`6b>h8osQc!OM)0yCXiz$|7~Dh4V}Su=0Wz_Uy`&GCU0 zIR~Uf3)x;`E>HN-+Q+1oxB?SCvd;77G~);{CPBwIB_Jhmlv&F(-=q>s0Ledt^?>tZ zYnz6Z(CBg^Rx$AK$JTybk2Y6vszK=+rx?fdGIK!6WHsx7Z$GwnZJTkkveq(7S|~jy zLFJ$j92FXjEJ+9q_{6$XD@hJq`^5TgSWb5puCROH)M@Jzu_YNM*;sMl{3PuWX5$+b}uu?tYnH5^4GC6myRyN*M$>eRx+!Z_(5M;QgKW# z)5r8Pg9f|d&qP>;MFv4C;YwyTQ``o7J9xyA1N1U|Og}To3~Z~nPSq(%f0~LB1mz`I zuatT)l1M35vrZ&k^iYfg&*CVZD6h=Amvx`iheZ;}-_H#8z@Jl*hTD}#kSTg{!b~sI zXXsuH`>cEC`XuMg4T7|-s$`0ErN=S7Odr$F45l~ah-?tO0;xY(Tj|~ml>r~Kl3C3Z zcW?%oUZ#)fX9k&-eK>rkqL=Ao`k6sRT~xB6nko8o0!;6nO7}7S%pkLpDF&)=Vi3n? z`kBGIG&xLGGOHzXP`87XN8H^iqL=As2AP%2YC|8Y!dElJFupL;%k&KkocR$YEk>|E z)64WRE1A{IV3rDB$*gAL_pD`8ieq}2KBk`;WL7E$vVO8Ubnhq?*=O)RrTdw}hr+y^xEMIFE6qXNb;y&y#($_ujYW8E+H zU?h?JgRB!tuVhxUok(`^i0Y|C(&MB)bXX)g$lzuAnBp-G$n-OV%t~f8)0d~h`vV_b zu(r0xP3B|+AwOHY>Qj}5pZ-=?XL^}Frk@#PiYHWfA5%=@_)IU;$MiFU%u1$S%?|v= zw#oq0%M3CrnZD^X&NNx)mmIyWT5|uo${8wtHPiQ$8bs}AE*7Z_ z63IV~bt36rrjPAJvin&lk{*;gCVAE?i7D`?W<%U!l@X#$nCWBsnSr*yT4UtoUdFQl%3qyq_6l zRx$(IE^}GOEmI-AAhlPb%p&VP*8R*N+ldsel69iYq12H>*2Qzm9>?@EgU{g|ahU)c zs+r<>j==OXeN2B~&TrQCnZA`On4cMBRx+!ZBEZQpy-Xj|9|*Z(?V<-)sbG~%y#6lE zcD8Q|g0v@#D^mVmrjO}o2G??YW;GLk=|J9P9MjA6G5w0oL}gF~tY+e8zE#BHz@;nJ zR`I^|O7}B^%t~f;!1cSer|#dVf(4nC%xXj5%$H%tZBh5<1F1Ir%*w4w7uyu$m|muj z>1PHNU80f=)l9KHQ2V=emhRu75(+Zob}HS=4DM2TB{NvY`X0q8a$%xK4#qOO7}8-Zz$c*3^FU3ac^>XrtcW(7?AzafzgOr zY3OgM2$js>+pHTruJmeV0|ntL1rbh znu)*CAqN>E#gAj1DASWVh7#6&Ajb7zBspXwV+KL86Uko5I+65hsbef*UA(XCaZE2r zozutkGlT43$*g`~yICeEK2QnR@E3m1RG36#Aw(hG_C0?qes-d~@1NH65Pj*)qcf-G zYfm+vHDT7zvu@GH>wEN|f3Ls7f7XB5-?d;&LBrX(vk%UWn3FOmqOi-{jdLsJzCQQV z+%t2-=iM`J`n=imo}2g4Jn#Je^M}sgH2>H6?H6P$7`tG>f|U!dEx38%=!JJYJ@n}r zPyhV%z(rp#`fZVGaj(Tg7VlU*e@)Sv882>ov4_64aP5M1HS4}#S04OVutV`z#n*~E zuHU)-(E3grR&IE-9*3NrKd{o*|B`b`JMOe+Pv$lU0J(*yO-@gwEN@T5oNcOrI*bv+g(;&Hf7Iqd-m8)=qU^@vvCKRZ9x%Qk#M9u-(Cr#tc!N&NVUF&KAE^w*AE>}dXQd5a{o8{#W#E54 z4L@>eMMCh8hd!vA7$hAvo$>o&@aPB+O6X1Oi}CX4w;lg<2-$!@-E3d3KQYG~H9=4P|j5`T;-*=*NtF^6gG%?-5f z<|r-A?9sgDXf4CsSQ}!F)rOgyYs1ZP+Guk;61!PDYi_HZH@DNiF(+x?nv=C3&F!_H z&E2#=%-yw6OPXf2^w4aU+wu2}dg7NYy}A}@N!J=!`e+R;{k2AxJGB;;fm%z;Agvw# z;8BWYsMgssLhE7~sdcs7t9dP>v<%B=ZLsBjZMbEumSxG&Mp+)z?ziOP=Wr)zV=a$r zIhMz?@s>R85z7=U&+@qTgyjisx@D#|!=h{XmIBRh5u$du5YM1i*0#au_Z%DthT#{v z!0(1Cem)(Z&;#${?P_q*+d}LF`}px|jG(1j;PrU?)+8Q0yb2bL!fz0QA21u>efEB+ zm0mS?2^xHhdG}XJpT~Lwoee9Q-deN`Grl>+9LJo_963Sdd@OSUb0qse$}D8QJrdt_ zFbnZiG`=(eevS_@pQ&q)D8sU4imf>320i%MSGto=aA%v)Kn?rCc%@IcS@EG3ivDJJ zxfKTR? zq{k{wOi73;F|GP>+Q}}5pS*zX%qfg%ZOe6we(K z;tKT1Zz(qKqcZq31~QqE_f@)oCZf9{-0GVUH%^F7$V6D2{&&B%+%V!5bjNGt2*^48 z|DCa=LsZ6$8kN`6amU6G+h99>pAvUnvR8-*(75o8B^1JU^nY7YH{Kv+M5jr@xKpF( z&c26n9T`aSstg%9o@6%3I=7OiMRS&uP;(<*zm{qtmK&AqNl23`VJFyrnxUDhILY$nD_7T z{?i}zPZ5oTa}VQZop9m*4EXQi{=fPU=E>^!Bq1_dqvY_bVe(FvzK*Gw46GaM<3~F{ z72T*?Q3BMu_aM&C|A=?j7b>IWI~30xfj_$1Rqz^^_YSHQJ;6v%A96ds`UAt|zf|jN zf$sPMbiR7Er*7zrA>k>D!C`DaEc99_@|_agqB98JrHzG9ycP1>RUmz_~L%_vr! zg$z)@2hk>oU9%LwFHmf`K{YNTp>Az4*q}IPaM4l`yOaMenHx*w->--I=bVV)?N!1p zx2mE|?Wi(z+ayK9-?;F9)AyfN;cw&$?mgdOgro(_?Vlo?j>cysWMst1v60i-JFwWj zZ8*;Xi8?`aiY)58)s>FJh>?70a(HssxOH zhF*3`ggAW4@0Wtl!7_*Q|fR`m0@4wpOFH z(71-*my@0EMdm4{algacq5pJ5+g`IA10pJ97nrpN;%u_%17|&~F5GT}O8AQj*zUq^?3Xeo<99o-6YbX*Upfcf%xWw@NPlS^>YwV!xbS}q z_z+5j!c{S|QDUSc0m(r~kZvRo)h9b?o?@p?iaS_8$K&XVVr8!#j{2wB-ALg5)yiY$ zTE!Q*6NTR}Y}k5Z@WdTB-&a+4V+p*>B{vI2PbK-^!p+h-KwdX>Cyf{2F3^>JLt~r< zeg!@SzSj@?1JEeq`d;|^9MH=#S5eoyWvnWJ^SJPEq;+GjXw7Xb1XV~YNTZGE)zeiY zyYUYEm>xzUAtPZU!i@=a;P@{w>5kt=ydB3>qaFRW;*A;N>*?3;$hhFvf8kgIUC*fV z7F^eVG4J9=G!RAK1L1DWkdaZt|Hi5?R*Y(skNOV|{r4il-|&&UeiQR?zLW0E8%xUc zt`OfMBOOQK%jF=o`rrR?14T%m8td0g;|64-r~Yr;>3<98c?e&RN4=&^Q3)Bn<;EiY z#Hu#wkGfRjT@tQ10yDt!+c6TN)f3+bsh2bg<+*KA9F~{x=(bGpYv{DmJ^ZYqQDjC@ zKl+*~vB^fDvvD zihn%TMn?G54l1M59#zzvu;Vo@fpT1gO5znR3Hu95Kgx4}k?@x7WWX3pe(K9rgb{CXIid zO&LS$m@6o5^jV`(8adC(z~1K{_D5e)2^#)J{8>RY_8aj7Xmp=r5L?bSEW=a(Hxe}J z*oa^xtaAE~jII~r_{jep<7d34x>rwR?gaczoPjgwmZYEUg+>V)8TDf%)vIBc`kv}0 zn`hx@0s8YyBO}I$cNf=rYi6^JvJS-(tOuxyN|=AHQMwn^SdaAjvHjX+W$(moX&J5m zC}Loe@(90(ofsng$-QEH0cJwzZHK5vv<5mI1pVY!_JP;XJK(Q59)F<5LvL?hw( zC90_JpUvSXDo*8YYwUxJ9pV_1NsfHRK567>6~6VSir*f^D*1l=CWj0CmmD3RQT(e) zZ6V7qtHq^jouaWUFAq$L#kL_KR;9Cy*@yG<1d^iUrroD_f;j*-+Ns{m+yFc2!+WW8 ze#ZS$fgIp;K88-)2-6Z}|9z=qNUWqTa+O2;Yq7eJ69MSLTbHST?=y>WUv!}yBqYiD zrwdg0Qy|%QfiyYx<#eXpi@6W!ji^+e&8P@faA-0{!6h$L2^lpsyz$>U_0rX7IyAg& zM%yDA;hfw?zj{n%xSX3>MBvNjDByRv553Pc3OW(VQ+}sKt7t=+?{Pudxusr$ox%-n zr1&`(;FM=oyiTtuZeaUkTn^opKVITnqylItV5*t#o>p9q`=x{zLnlW5rtDQKl|G(3 zd;3Gm{_{b_?^)l&?1PL_fv0pqUmS~{HcM9F&Q%c6FF#9ChPR{vb7}{rZ{iv2Ei~nS zjl*!JW|IF{@*2b3q`_+N__IVcsT-F~H>N8yLT3&tC;yp|icfG>gbQzZRq@6P85#QD zUa${Z6P55kOF*7Ev_u;uj~h#ZGC)O786ZB!gU5^9luWE&o}}U%88k9vWYCzCHMDa| z=N~1b%gK5Oig@A!7;C}l;5SSo0ga2aG4m{6crRzJATHyB4L!lpo@7Pj`ft%p+QW4T2IM&F_!E9FGI}Ef|%+fA>dcsW`3f$auo{JnLUFe@Bya{g+)#- zjv=?J_`A{+-}_13NErJ!McgU>L%0hFClBb(J*WZ<#~+klfq(%lyXb<6f2jnGqBZss z4Nw)d7ckD%E!F@2EY&FT+mNA47*YxjxOfa9cZ!y`Yhi8!r%j2Jx_7n2oCJ0N$9<8^d3lu5O^SX42)IoWaaVjqRDY z)sA=kQ>u{|7c~5DKc|ZJY3>{wxpTBaiO9CYcXnfV$F_ejNh94m2crJz!manIHcqH}$XI(-~_LDbzF zU=#2ZNOf5QE(L!8jb|Um$-i+<9{2;@IttsiK+o2g5{-w{MjJOCRvY<0_b%R?&@n8c z3DQ<0Gu$M;g8nP`J=heF=QRI+wg6-IX)J?{b+mDkP>h;hi$C5c61Zk31l7vE6La&d z|L1jc&m*cO^hNp5kwpsAxZsWPjSLw3YPFxn9X$FPx4E%uN;CGq#(w$6{jpIpuc0IM zo%8nt*5)V$dJu69X%Yt=#b&<{FEpT}j)8S&)oAe*8>%MP zbw6qn`f=104G+dKee_@~kmlkXgqzA_p;nQ2*-Rc;$^;S5I5RQQwWFlysME-}ah)hT zA5|C^4BV|sUJw)k`Y{z*j^#67NqiGr!vS69p3`?K4@PY%i8RMYt)4x=D zZ=%F6E<{QFiu%6-NBU?yA_c2oM{zxkyF|Nh2p+xz11Z>L7tS`pljwx>1Y^}m#ryA3 zY|>GcTqmBJzvfj<2DoG)a~km#uF2x zY96~qRl%*y`n5{0cwX^WpK1#?wvoqmGzL0uuHp#GIl^GJXN*x19}TGC;Vx$LRVss9 zkT8vJ78LCgtX7RV%y^167~|(o*bjQqD8c;i@Lm)63Ri_rkJsrr-p{yj6+C9Xj0GS_ zk5GvVW~e$_%@K?`?BiFh+<4w+l+-SiAgw@+k};~tcsgcOAy<_yM)MsQck~J0nNbDC z=4!}kb;n|}Vgt#d&%m22kq_sX}=tIOK9EcFaxaH548{(l2>8vjy|5jp{}o2C2=^Z`|nQSi^>US1ONG)_>Tfikh}b zl<b|pmGl@MuHLcDQTLa)Y<9k0gd(lMMbL@(u#$A=ssz@(RN zWI`Yqj^JPwqPEOs*|UB)iC2$M=X z{6;BgtW$o5KZSqtB4$F^=VGEI{bOe711jE#B%BJtzcF|oq~q&0LHzLA9;^~TiNYEHkCx4Bh=&7Opvo{&=QQhaWzua@@zShSqE>7}C&Sew&4b2Ke}RRYL81sHNtd-;_QQq+^}a z)0A!k&PHkfz?8E`s+t7G% zHDBqS5RUX^=ndpQ76}r2Z%`S!FQ*vcM?RlTk7U z*x%4+b2wvtVAu_Q*$#;#{@&s0*{bm(!>BeY!$!CRHXIdGW4Rs>5$MsSv0^zo5XFy# zj3yEhL-%CO)=Z6?rb0IG_4!)DBKJVN4y?RzagM;fmhn1&m*9bfMLIJ zNo91;(lC?Qb^yKL8XjMQA5TzEjsN{dY+|RTiH2eqB>fK&f!kATgY~112v}c-)G#*F z?;VFj+Qep81K77fY9b2%P0*rX-|lJ%S1F_>9Qbd-&z?G9Kj?PCeh5+%F8sHNU)*k3 zeudQVSGPQ{Ty{sp@*AWknu|t=8>a&{amC#j9=}6sBA))Rp12v(CPsLg!hR2=CK5z5 z*jqy4r&>KRuxCMPqLsJ__STR#ajz#9_EC@;9*{JLJrNQ=>gtJu{XR%dw8a%nq8+47 z-0vB4Gd#w4ZiYvaXaSF8Nc{e*Cjs_sNDaTtN`Kg|J)}*H^|XS09Hb_0#YIh`10;Sa z*3$;|2Ou^4;B_J_4|>|dGQRw~R9kp!J=|eOJC1-v={UmSc0+2y0>{QWH}gDR57P)WqYCPLNMHx@;nx!REq`GTW2 zJ)BG6ZV8Dl;am!LYe;kh=Q0}(R1yKSedqJ=Xa|Yr?py(P zG9;R~GXQscNHlBbYPdT}mygY4=ohNT;%CPq3pz?}uD ziF=(JA;&v6L(X?@h13@~w*w2EJ0PES?t)z8EQ4I^+zYwHxgYWwXF23DX9W^^4pI}( zI}buGcfJD43P???bRLE~0EzbGtb%(rB-)en2;>^)>ySmxHy~eh9)n!#d>dib=>Qs+ z^BpL~kZ4@a_u$?DsfiNjNyv@P4=hv{8JN2)jyyUEdtZ;q@`LgqS$b-%wArCn( zK)&L<2>Gh>7syKIWymV$70B0|S0Rr$|A2hg`4^IV4-(DUX~Gv&PC7&IbL;OzYT^T@ z1@2Rjn)uLZh5I8&O?>RM>rg&%+M%3whC_bpjD+PgNVI2X6x^Rfq76G8kTp&ht&v(iq$a+1CPMz;Y-i8a z#E;HoC_g#dLtb!pfc)8+0(sHd3G$M&3*;}(Zjiq^yF*@f_JI7&*%R`LGad4GXK%=> z&O0ElIr~EX;mm~m(|IT4U(SJ$=D@^koNU=$_dp4AWkH6!MnOin?t_eUje%_7%7%<` zje~6HdH~Yl8V~7oz7S1!ND`LCD)(uR!*69ftI}sv!HgjzIQvy$(6h^#?0OsSA&{EzyWW8;aJ>gv=sMX49&=qMq0DoA0QY=I^mx~Ya4&{Lk9U0x z_cM^1Sn4_r_p^}b{jSg8ehw17KhSBMEm7a-ItSAxNc2V5*KluxM4xljLGE*X2f5$% zJ?sY{HBs*R5%MM11z0K|(ZO67;eG`Y9nAF$ew9)cS}grkUJ8x zr#lMrF1G_R+wFoJ>-HebI7m(8xEsO!03@bbcN54tZoL_>+F~=aQ^^_ z-tX=S`I9>x@`AfJ6eSA<>&X_rVs z+)W|Tn?2*;j)6pP_B;@VsWTQp|MQH8M=~V(pC=dY_K@gvo<|^W_e_MPC!{8NdnUo1 z0f`Rd$%7p1nF2Y%^Em7iAvN)sXBuRlXF4pCA+ccc%!GW(^As$zAkjxWI;6hBQvd`! zb0AlF=E8e5B&Iyie7M&@YGS8nA>=O4BFNpIC6HyFrI33(%OLl9o`>A$Spm7<6M#J6 zSq)k4Sp)f!=S9d0&pOCMo?@i=3MAT!X9L`abpVaUvk|h&vl;R=&sNBHJlo;@E+pn6 z&kndxLSkv<*#-9pkXTN6${@e??1kkUNVE^ne#l=u<*@t;iE-Xj0rzi^7~wq!A{t@mx$T6Cj9DM=G6iBSDqc1|vjQ#~OKl(CcLG%^K+0j=K zW)37q;OIZ#o(qWqIQlQR=R@LeQAC^YJYppz+Ea80+^eEP%0GX|*4L!}5WhFU- z@-T-Mk?@LeXblp2LN-hY4{>PDgidCM=1%AWcXWasvT;H;vr~&fNT(KykWMWQA)VUI z26_Nw z%w4p41nr{zfS_G8a~oG=7cI0+C)jOmx`cGm!rC}siD=W!+*NDX<`vOZbGGRT=|;$| zS~Nm-)fyvYSFI^RcGY4Ka-NovOtMe%xd!vJe#u`$_D`;Z9FY7SETXCPzX(mK+5+IoSa@HQ5FEM6w6+$>c^&ff>n7AoG)(LC#9P3DTe3JnE71 zgOAv1G(B!+%FJFfqw*W&C**g`_vY`;eu3EoD_rlQ_we8A z|J477ze&Nsf=LC73vQdeW%j^1%?eu--dfnRuy5g@!g~sRg%1^`%nQzYecn6sqUXoY zPo7^s|JwYl1?Lz1upn$<+QNPdpISJ7;pT-apRRd&&Z5POHZMA%FA87$*y0(Be_q^R z$xTaoE*Y`p#0%fO@KDi~q60A_Z2@;Jg<0ZaiI8M@sZ+) z_0IKQuCH5f-r(8LeZy-TKHTudhHo}_N}89nDd|y?v~k47r#61L@$5#=rXic|-L!Di z8=FpSI=v}$bFa;JZhm~r^IM{~PTu;>Ha(|wP3e!NukHF{SI^x8c2C>w-@Rb>zjnX3 z`(jz{-nDzT>^;2q{NBC$+U|d7|A+gBA9&!v~PR zZDv0n)*{MSVf_2Y5f()3E;$H#1qw8NjNh?BlnOusDIwCIWvgQDMODB_VL(m&)An<=pDF`Gww zWU@4vt_F7HA-!OQQs)G|B-QdwV0WG^+H@iiH5qE(X)1QZ;UbVX8TR9(V<{x=kL2{` zeJO)zi`xepB800s4k-Wrhr$(KmmiyKn;4>BGF>$Ng3qt`{ARjrx`NN|_*}*38a{vE z^OxyQ)Z3pX6F#AuMYG~#!zWC$YvK4{oYI{5G}2IpT4Sx5)>OMmi_vb@;Awb!){T6?V{J}LO5;?oJA&iHh}rz<|UY2CCmt-IC(pWE^2iH{eb zbbNZ@(;J@*eD1&}Q|qS<(C*ak(gtZmw82`IHc}g--LLuZ$;M}#HdcE;%hASb4{8&& z3ECu0e^i^SO>A7J9y`WZ@uMvi8`TCc=>gXy z#1gHz>%Hg1YtxuJ=Cj!x6xH*;6Q&Ob%FcV@o%zHer}`CclOQ~zyfi`Mx4 z{EP(N@0Pu)zFW3l`JY!#D*yY+dc}Nop<0Lk-%}aN&v-kZ2VVQD`JOq)zNzjy_EV*% z>F)!#`Ce6zdoKl!d*^%Bo|y01ed1dcN_T}{|LvQ<4gA^3^-9mlXO#!?=6il}a=ynm zywdE_>ha!)_hvKl*4=mydj9e4^~&$x{z#p3>LWGd^f_Po>5tU=QSLqcGxLGGtLFWw zpPOB&f5jV@w>!VBzv4^Xp44Zn^OjVtSyES5TNJ4UU#eO=AnZ5?~4 z-q6{$XJ>n?uB|K9l7_8oYmeR4LA{&W_S{md-?MY=qYW)xZJpie&NZ=z+VDrEtuAOarz{TYyq+eMY{2LD`zx@}=eLmPN}-tCmKWuBj}K zR;{Tli&oaHSyo-PrgUw2Wj+7Pr;ND^|38?I^Ut0#RtHOW+&26>-@&y{7uT%r&KtSP zS3GUpr8e;=pEmw{P7{l$YOWPhExSo`OK$|1<(Ux$AimysqYK&(u__=R#J*lWX<9 zr0S;SZ0EhFjJ@i1e)E*^N_=}}pLs^K65*F$? zs{xEwt4~pNtM@xPNM2Xb_A6d$15ej=NucX~&1bC)=+;WSw1|he=rq=4U&Nz^ws?5% zJ4VU;b`qDMR` zx9=FU0zg&+);3zD)0w*Zj`2ulRzHg}AO4~7ruo(7@b({(illz=BjdQLj;5R+8x0w1 zP3n`2Mv+HNq_m$HTQgLhKlr{eL)XRlw$8u(zOfp>ci%VQIA{;G)g^q z?o__soz;jD;~n6+5xv0%(Cox#YjvRRLYdb97BK+pFme~h?nXxkIQce%Rf*zTt879c zxDb;PWt}p8D=@m0M?lpE+7`SC9NYkKJGjRL=gq>P1~23(8M(Z{V0}nqe`c_S#oML( z3JqSilDXF4hj(hGkn!LJNEJ@Y?sr`T3AvE5Zhbp&O^YG-=40B%UFK8oa6JMlw~CCJz6cWwLwKQU0LG)~MI`D<-Rtf2zaHk;~H4HZgdC zY`|8;)0>N{vUOdt*shMQ-I04^yE`6>bs@vVR3_k{^Wk{yU_kRi9Pl$yY6)!&3hHpS z@D915p7R3H<7e=xZX-y2aagI_wxR*D*~wOpmTB1$FvLf5lVGgQMS#;sn6QJ{6ioWY zC*fZkQqQ`Dsh%b$3&$s_J?GE1P8G`8q()il|c)L}O}N0djehl*BHG zN8dGgBa$ulonnGc@ulxtk(MzD-A3Ta)*m$jU+Kz*^loJr6gk2z{3|rm>TAN_V9L)0 zSy4U$rpH=|pK1!HViHCq!?FwcAA+nNUbH^Mmd|btC>ihuL<<#KNl~fq8VGvoF{46$ zG{nB42Km(xyVD;uBI=x;&434aiN%(93kjpeV#|T?vc(pdg|te$Q2Opd{t;m4`klp! zi-Ll4lNbCONl1txA-gn7QSp@1t2Pu58vIYDv42=lr&CmdUR7(FS4Xhbg;s4Ks!fuA zkXPog$4U@nM3}Se?Rbf?E!)^A#^{TZ79t-rMQRbX?0duvx0CF) zprg@;AZs_8W?FNsfeTjO5fXzfB(Rh3na-v!+Ju~^z_emHnwLC-nH%br>v2Ye_RAJO zKAjcBN5q%|XUu>GZJflrTeE~y8Mq({8}5UGz;+sO;DYYHp`$MdDEgPm#}nxE%;OK|v3c1EuZB#H5-+lj9R6Y+TNDolH5Lfyu(FLR3Ox`&@*^6+!UTH? z)i5plARfv6nZ5$cwy7#6WgnC(C>sfyTXMeuQGrk2Z5zQ{rP6@eBBir!Q|N znXQJ+Oel~U&WZRiv4co+&x>SXKT+{-<+By)clnF??4~-z56@(K|vL&3_nOKhD~%FG2s&JA=AvD@-;}`G_hm7FL>~@1q(63ZUcw!b?Wb}tk*~3rHVzW)b&>A=+_TnJ_`79PO6V!kl3WXd}MwrbA)RR2O zcbG78k_KKR|6a3<0BTorLF6gJ#gA4LHomkqQy=SP?5%ZT>=$NLfB8VwLfJ z!g-z^!=zV042MOs?g}Uz7MzDA=V1})1d_~kMODmx*dR?3Z8#ZcgAwtnrilvnNkKsj zWML(Dn=o1vrH}V7W|q2v^Tn({J;hHiW>4JPj|q6Kp3~T_u+{T}Fep);ra4}x$9o1% zlpHcmKDjS#4>{C%gFpxHa45^}CH1ox@Mmsk`SA+`m`hz=v8L;CP1pSz?D9SN61)1I z?065?is^y;3Y{M0pflYdgz?j$bjjQ>gD&L3lN2;uvVNZs9$9XVYq>ep(W{8zdgb}_ zhQK{QPp4RPIK=`>+R6gHrXsx`${vPU|Y99cBMK_tnaxTOOrLhRTL zF|oOF`g0AT*diTkjIwp!JXj?^8fDdsgt#5AT#a`|1lxB&4I`P`LPqQ4iO~=8<|r#N z@Qa6HKZ5*@61L#svqXe`7*?_XZc~wBm35(a*O@-KO9X%%$#)ft`ayxRAUmy3w0dY1 zMM2UA`(l>VdBFL(5>|M}h$jufam=>Uw&RSL6rCVJc){dBpo?JjA;$-}%R?i=H`+M2 zVYWEUkMQkxusroFKX3;-lYiFgJz@3kw0i&A>TMDddtMM<;dhp@Ir(`$OkuYgCM`zb z>J6^bW>cs=%X>@NO0|l=SIU;huW2%#hv#Yd(ntHOnN}~Lf zzqEwaY&?6rW>`)ZLyh8qS^|%ODtjqcPpb7nQM^ z`^M8KM!VRKIVI%-CAP9weFOgmapjfxaheCo>vimfsWssjOV-<0z zH^Tfj`NTMs<5dU586c1w!ICB@pg2{?$PgaJ!JvTF)(Yn=4yTHhI7Bb#lmorXEROi8 zVjpxvk)Q-282#~FGV%4T*hdU2GQ}|xVWCWk3ImggVxe^RW0pNen3NY$b_gpTBTcf$ zgiYCFWP1>7VK9(pc$1tY2{&0ptj9u;3?fd$0O9{t&gRF*9XVzP*D zu4MCWf!Gr=9~8cm=A~QGUcT?L!nity#?cj$iSuVQ?oq>!YVt%rcg_n$n5hk!j zu4Q7Yr1_3pltl|mPWMfad?)xsCHtl7P5ojSJFey}phYJ>%LoJl$k_0d({ANM)oeFz zPRwtxUH+wnBES-w60F#5193)uQK_)BYzMR4k z+$a9QLUHX`h?g#GuJ?QxXMO=D$9LX}JB2ef%>*@E1hDWHjsY=tuj<|sInoq+9pphq(rEcq%ID20-v}E{d0;5OrfgKAJJ9FMf}SmJM9~T7)cNK%gb3wb``lB z(I#Fi__gJ%Osz|0ufXvzOs6?3dDSGh?$BX~axN+2CVuxyHfMG#g%&KM?@O^0B*a!B zZo1iR<%d=xR<-iiSHc^#ikr>W*~+w1%3d~#+fwrP4q)k9j=nD^Ga#qc-Id7_5)<3h zI<-x$w`^0ZAng?+V`sin>bZ+uh@h37?p_K+nS@C=-@A(CVA=z#SXCLkfH-OOeTjfT z82fQ7x`yRf?F>nK z0G7OO+JYN-(2D!=5WbIG)hPp~>AJuyGQWO43Tgv)41SoabAo$n*+yJVVywGs+1B_F zZ7CfXogu7BR)kH+s+6Ow=g@FH=L9Y)=S79?cO*#O^bjMdM*D^7B&M#)hjf-NWN2dQ$#@5&^{HcZ1qwhBpND2&m(N z{DvSG-9%1j6z4o8&-(FsMeaH_M~$Q^*0E!1RaHqT{yq`EC|F*yq@=p)_8mJa zV@sM_%3^pf+ZC&BZZ3~CFN>8mFR83--qBper*B~Yl9AZJQeSMq+4H%L ztSe>S$&S2l?7-*t8Thz=dj1c{V|lOu delta 315920 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

Ftx? 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 diff --git a/App/HiNC-2025-win-desktop.deps.json b/App/HiNC-2025-win-desktop.deps.json index baeb4d8..b797943 100644 --- a/App/HiNC-2025-win-desktop.deps.json +++ b/App/HiNC-2025-win-desktop.deps.json @@ -11,9 +11,9 @@ "dependencies": { "AvalonEdit": "6.3.0.90", "FontAwesome.Sharp": "6.3.0", - "Hi.WpfPlus": "3.1.90", - "HiNc": "3.1.105", - "HiNc-Resource": "3.1.5", + "Hi.WpfPlus": "3.1.91", + "HiNc": "3.1.107", + "HiNc-Resource": "3.1.7", "runtimepack.Microsoft.NETCore.App.Runtime.win-x64": "10.0.1", "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64": "10.0.1", "runtimepack.Microsoft.AspNetCore.App.Runtime.win-x64": "10.0.1" @@ -1673,36 +1673,36 @@ } } }, - "Hi.WpfPlus/3.1.90": { + "Hi.WpfPlus/3.1.91": { "dependencies": { - "HiDisp": "3.1.92" + "HiDisp": "3.1.93" }, "runtime": { "lib/net10.0-windows7.0/Hi.WpfPlus.dll": { - "assemblyVersion": "3.1.90.0", - "fileVersion": "3.1.90.0" + "assemblyVersion": "3.1.91.0", + "fileVersion": "3.1.91.0" } } }, - "HiCbtr/3.1.90": { + "HiCbtr/3.1.91": { "dependencies": { - "HiDisp": "3.1.92" + "HiDisp": "3.1.93" }, "runtime": { "lib/net10.0/HiCbtr.dll": { - "assemblyVersion": "3.1.90.0", - "fileVersion": "3.1.90.0" + "assemblyVersion": "3.1.91.0", + "fileVersion": "3.1.91.0" } } }, - "HiDisp/3.1.92": { + "HiDisp/3.1.93": { "dependencies": { - "HiGeom": "3.1.84" + "HiGeom": "3.1.85" }, "runtime": { "lib/net10.0/HiDisp.dll": { - "assemblyVersion": "3.1.92.0", - "fileVersion": "3.1.92.0" + "assemblyVersion": "3.1.93.0", + "fileVersion": "3.1.93.0" } }, "native": { @@ -1720,7 +1720,7 @@ } } }, - "HiGeom/3.1.84": { + "HiGeom/3.1.85": { "dependencies": { "Google.Protobuf": "3.28.3", "Grpc.AspNetCore": "2.66.0", @@ -1731,8 +1731,8 @@ }, "runtime": { "lib/net10.0/HiGeom.dll": { - "assemblyVersion": "3.1.84.0", - "fileVersion": "3.1.84.0" + "assemblyVersion": "3.1.85.0", + "fileVersion": "3.1.85.0" } }, "resources": { @@ -1744,27 +1744,16 @@ } } }, - "HiLicense/3.1.84": { - "dependencies": { - "HiGeom": "3.1.84" - }, - "runtime": { - "lib/net10.0/HiLicense.dll": { - "assemblyVersion": "3.1.84.0", - "fileVersion": "3.1.84.0" - } - } - }, - "HiMech/3.1.97": { + "HiMech/3.1.98": { "dependencies": { "CommandLineParser": "2.9.1", - "HiCbtr": "3.1.90", + "HiCbtr": "3.1.91", "Microsoft.CodeAnalysis.CSharp.Scripting": "5.0.0" }, "runtime": { "lib/net10.0/HiMech.dll": { - "assemblyVersion": "3.1.97.0", - "fileVersion": "3.1.97.0" + "assemblyVersion": "3.1.98.0", + "fileVersion": "3.1.98.0" } }, "resources": { @@ -1779,19 +1768,18 @@ } } }, - "HiNc/3.1.105": { + "HiNc/3.1.107": { "dependencies": { "Google.Protobuf": "3.28.3", "Grpc.AspNetCore": "2.66.0", "Grpc.Net.Client": "2.66.0", - "HiLicense": "3.1.84", - "HiMech": "3.1.97", - "HiUniNc": "3.1.94" + "HiMech": "3.1.98", + "HiUniNc": "3.1.95" }, "runtime": { "lib/net10.0/HiNc.dll": { - "assemblyVersion": "3.1.105.0", - "fileVersion": "3.1.105.0" + "assemblyVersion": "3.1.107.0", + "fileVersion": "3.1.107.0" } }, "resources": { @@ -1803,22 +1791,22 @@ } } }, - "HiNc-Resource/3.1.5": { + "HiNc-Resource/3.1.7": { "runtime": { "lib/net10.0/HiNc-Resource.dll": { - "assemblyVersion": "3.1.5.0", - "fileVersion": "3.1.5.0" + "assemblyVersion": "3.1.7.0", + "fileVersion": "3.1.7.0" } } }, - "HiUniNc/3.1.94": { + "HiUniNc/3.1.95": { "dependencies": { - "HiMech": "3.1.97" + "HiMech": "3.1.98" }, "runtime": { "lib/net10.0/HiUniNc.dll": { - "assemblyVersion": "3.1.94.0", - "fileVersion": "3.1.94.0" + "assemblyVersion": "3.1.95.0", + "fileVersion": "3.1.95.0" } } }, @@ -2191,68 +2179,61 @@ "path": "grpc.net.common/2.66.0", "hashPath": "grpc.net.common.2.66.0.nupkg.sha512" }, - "Hi.WpfPlus/3.1.90": { + "Hi.WpfPlus/3.1.91": { "type": "package", "serviceable": true, - "sha512": "sha512-MVIkUMQe83udwxvfSg2JbVuntJOwUeywH8IMZp7sL+qZ5XIeqrAaQ7pRDQH8BgSXqd0uQ2VGp+gyPrFCWEDWQg==", - "path": "hi.wpfplus/3.1.90", - "hashPath": "hi.wpfplus.3.1.90.nupkg.sha512" + "sha512": "sha512-SgsB6ncLdcOXwlMbeCF9hjf98Kas25HrcmupIROmkR+7ku7OeowEe6vBDELjqeOuJaREr1mimuhnGDWoKMuJZg==", + "path": "hi.wpfplus/3.1.91", + "hashPath": "hi.wpfplus.3.1.91.nupkg.sha512" }, - "HiCbtr/3.1.90": { + "HiCbtr/3.1.91": { "type": "package", "serviceable": true, - "sha512": "sha512-IQCsKABhWAecySEsH7OLqY1wU+nDxLP8wDfgh56UNsahic0JWFLCTP89bNSU0NUrTgFZrrFMvJRItQNI1bFLpA==", - "path": "hicbtr/3.1.90", - "hashPath": "hicbtr.3.1.90.nupkg.sha512" + "sha512": "sha512-jdqMrOTASmyXmCsqu8ThA4WgGBX+NJbyFl/rF+TJG31YCs+Y2rebIkGgmUdSvbhdUAOG2ZKDmiyWaGs2b3Cd/g==", + "path": "hicbtr/3.1.91", + "hashPath": "hicbtr.3.1.91.nupkg.sha512" }, - "HiDisp/3.1.92": { + "HiDisp/3.1.93": { "type": "package", "serviceable": true, - "sha512": "sha512-TUm7UMea2B0DfpAQXIreVs6C/68ODNfHaxvFwl00tStGNoEYWzwlE46qhlQ/uqCH5Vg1reSFmiezxZvFgyOFRA==", - "path": "hidisp/3.1.92", - "hashPath": "hidisp.3.1.92.nupkg.sha512" + "sha512": "sha512-d0saKagSwOM3evfJgRvX5oec8xcPmWWxQNe1lmbqK44dpuR+X3F1D9TjbHs8YJOjD0AS5aLulIIeHfNmaqmgdg==", + "path": "hidisp/3.1.93", + "hashPath": "hidisp.3.1.93.nupkg.sha512" }, - "HiGeom/3.1.84": { + "HiGeom/3.1.85": { "type": "package", "serviceable": true, - "sha512": "sha512-/ee3T+Azuu4z/1onghk3S7FSqtlzX2fqnMm8kfNxgzlRBFSr2se8QQ9mgfZdHHlCdasPfCn0LHA7kLE68MPgUg==", - "path": "higeom/3.1.84", - "hashPath": "higeom.3.1.84.nupkg.sha512" + "sha512": "sha512-dY96yEYcSNRqIbsboCyJYs95TFK+rfAM6qE5ta37xd6Pu3/x7PqDBEI9kEHfeG2WJNWwpM4aWDtKQpPNVEIP/g==", + "path": "higeom/3.1.85", + "hashPath": "higeom.3.1.85.nupkg.sha512" }, - "HiLicense/3.1.84": { + "HiMech/3.1.98": { "type": "package", "serviceable": true, - "sha512": "sha512-AJbBhoZySX6NTlfuHYGYfsI9o7Au2YrldumzHM0NIl5JiT+moaEqUSk0c0BcFC7tL/kDA4lVOjjXyPEUKJWBrg==", - "path": "hilicense/3.1.84", - "hashPath": "hilicense.3.1.84.nupkg.sha512" + "sha512": "sha512-Ycy2o4g2zg8Jm1YYPgWn048sDfzNlwepTqF+7ZgjqFpwUtafs1EfDwok9K20HdtVVa2ygAg/XsP78ANKJ8IwQw==", + "path": "himech/3.1.98", + "hashPath": "himech.3.1.98.nupkg.sha512" }, - "HiMech/3.1.97": { + "HiNc/3.1.107": { "type": "package", "serviceable": true, - "sha512": "sha512-AfD+D0FDnmCNRJNkMJSOFN0o6SvztfnkeSGGXZ30+c4qmZlcKD7ack2mwHiQD+cfeiIx0MErj6FcKOc9K1XV/w==", - "path": "himech/3.1.97", - "hashPath": "himech.3.1.97.nupkg.sha512" + "sha512": "sha512-vL3z0yqm3rWqkV3ALSUMSZyRAF8Ma7ggWM7GkrskNnsGflKWCEpmY7YVLF1qR5KVN7j6aJG+vsjAhABiilfzrw==", + "path": "hinc/3.1.107", + "hashPath": "hinc.3.1.107.nupkg.sha512" }, - "HiNc/3.1.105": { + "HiNc-Resource/3.1.7": { "type": "package", "serviceable": true, - "sha512": "sha512-RyD3IijJGtdFPq5UwWFxjxyVyzVACrytJi79Dia/IjEP1BZhw+UfeoztxkwGSQyx8cttd73g56MEkFl/Pj9FQw==", - "path": "hinc/3.1.105", - "hashPath": "hinc.3.1.105.nupkg.sha512" + "sha512": "sha512-cteACkvJUNHyIHS6SMJp/Spn51WLMUuOsywFZvhcZylCs1QMxypSn4pnC8vbu5zrSUNvlh4Ed4nHo966fqKwZg==", + "path": "hinc-resource/3.1.7", + "hashPath": "hinc-resource.3.1.7.nupkg.sha512" }, - "HiNc-Resource/3.1.5": { + "HiUniNc/3.1.95": { "type": "package", "serviceable": true, - "sha512": "sha512-jb16uq6aDo8xBCa877eL0Bmk5ICj0WF2Q14l4tj97zz7MopV+ae8yyTPWzgyt98abCvFPJl2D0Ioz6SxRzEDOg==", - "path": "hinc-resource/3.1.5", - "hashPath": "hinc-resource.3.1.5.nupkg.sha512" - }, - "HiUniNc/3.1.94": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Y3U6tHfUeYZ223x4aCufL0kzFKCABxJL6j6vOWvK/9Yxj8NP9rQiPpTbxJ+Kbv9KXQYOlkK9lEtPydoMXO3fJQ==", - "path": "hiuninc/3.1.94", - "hashPath": "hiuninc.3.1.94.nupkg.sha512" + "sha512": "sha512-gpQa7SfSJ0IH8YUzLzEOvYMs0Mv2YQXYGSkwFxmHhI90J+75QspKxmP2FlvVR0SwadCFLX8m/14fFStA0Ks4CA==", + "path": "hiuninc/3.1.95", + "hashPath": "hiuninc.3.1.95.nupkg.sha512" }, "MathNet.Numerics/5.0.0": { "type": "package", diff --git a/App/HiNC-2025-win-desktop.dll b/App/HiNC-2025-win-desktop.dll index 8bef0adc4104cd8f493a368372b140f687435b38..46e2a1bb1172594099825dea369e4df9b7a2b7d5 100644 GIT binary patch delta 12561 zcmYk?2YeLO_Q3JGnNT7T2|+{PK{iw)YT(hN$>tF$A_5}%kTyIJ5(EVSF(B*$@gI6s zM^SMDp_mmVw53Hhum}XDw}8MRK`AyKqM#!0&YU0l>*vGgJLlYU?!7ZRGimzvH1q9g zHh+5b)Bl{ke!=Wd%0)6`)w5Ra(n@U?Ww{buXBRDSO^k0=J6gGvQWcddKR;Mr^;lbO zQJO1dTIZ;o&QY#l=cuU1vf8!vyHwrDO0CjPzob;%USnU)e0kUy-KQGQh*H_3bgp+V zwfs|!4KA2#47<f1Hl_j@~xvG>Jd3ZjLne#MjV|g?IrgOqcqm_#95gJS@iRSbc`>^Xf~VW*=yW zVGe$ZyYK|w!Q`3J*9l+3Ik*u|;~lI!OZqx$tzSMes(C*qvk!m4gxONr5_@76uENu3 z%#r#Q_%bfW<5+F3)U_AADu+Z7p2h0(q_7K4z-@RF8_$=zVK^O&@EX=%Aa(!7d5-!f zC?atUA6_Vh{ctvJ$D7!Ak<<;v#dr{}uc=Gg!rv`u6y$)@$E=%Sjx;D(^~RI=+UV;01i(JvNFa&c;H#h}9NLeFw~1 zth~Fvfo%`F~*!7GuJPGTtAT;T5d0M8=<9;+2D`BvxP%Uc#u4 zq^>Du;M=$lZ(|$3)DOq$xE9ahEiVVPbETmRj>I={J)XnLOQpUozJOV1;U+wVH}Jk? z((g^-;91PT>9_~K!KgfGY=p1kdsu`Qu)=bwe+awbFwv`KkXVL=cmn^##w%o^;h2N# z@f^mjl)C2F6MeWGPde)7{}zdQtE90#{s(8`r+64|VZ)E5uNRKMxA7~ilrMD;VP9MO z`JYE(C*H&c0cl9X-sr>CcnV#gNPT_mi4!mncVa~AJpXa4rLi6Mz;S5dcD#UpVuMem zzblTx_i!g(!OEXWebdi){`-=cgWK>T#;uWt$8ZuB;025=U?VslKfo{XCO)**D-FHZ ziaz`dPvKvfv`*?e;w$(*?!lW_YrWJzfur$5-0S7wB9_}A4G-eKaW-zp?=fkk)c3?m zxDiXx2ufW$9FE?(9Bjl>7_~_nn&Uv+iV2%#d>C%Sd$&lw1HOohFpO74ud1?D8rtAc zd>@bCJ=>(NEe^+bun@n+xI(E<#U3~kXE|EGt}-TgKiDp{VZ4ELLy{kWvvCui!`oP| zNa{P`i#Q)Q;1RqndX;;JH1@)AxD<==4z}DW^ZI3GX7BX}E=zm)#2I0jeYe*6h*e#J}B^OZCX z!`T?b(|8AK@0a=~@CBTPpJFlIK=%RZ>w>Qy;3c?_#AdvKwGT=|Cmf4Q@hCV_(d{Rk#Bqcnj+vmHr;+L+?rs_T!&e=a@94 z<9M8hoAEsUf%T6|Uw6zz3pe0J(W`zZQSF2@w!?myji2N1m~>L=yI>CP#vd`NMCz(w zZA^94&wpnU&*N~MfI0XPZpTt|ostC-u?aqnqi_)x;C@^C`M*S>@@bhU1=Fz)j>C6w z1Ad7=V&$)8o=30~4#4sFk=A+sw~{Eq-!T4+O!OGOfL>gJhwv&^J}Z5x_$*GuCAjS@ z&wmMtYgp}^Owbhjq8BaPfIndMi1ana-Z&9I#6mn1@k)a_FV@3<;UFB3?_(HG;jj4M zH!{y~%)v0;!p0Y*ZjzUSHMkG2qN`L2t70m4#%FOfPQwpy4Hn^TtaVZ5^)}+5Ek1(- zaSATOefT|A`Bo-M!KW|-XW&XK#{Y_5RsB1epec68Oq_rVaXAL@0DgzYC7CY?TVq!o zfTJAs^KbuJ(f(CH0E_S>{)o3R?y}U^!*m>u+4vSN$8C5Jf3~%s|9h{ zFdz5fC5-t)CTM`2a0tGMOK~Sg(DkSE*Va1Ee|r-Ba1t)Yt#}e|;RCm2qL%n9j>Cnx z4iDlrto#?xf9hW{(Nj1QXJP>N;AJd-NBSCKI=+ZgaT$j2JpOdYD---lqPG5vl>N0J z9miol9>AMe!zJ||%*1yvjK5;TD5>v<)4d#Q!o&D8);6S}2TsI%Jc;*2OWnix3})jN z{0^&^lX`Ch4%*@~XyRy`gmZ8SuEVfn2UX(ORV9|U7wDy$Irdd)j)T?HjxRAjrYZ*$ z)l_F-nwn~rY&MeO7V0pf)~S_^ly3NhhO6|J-`rO50*2xNcc} zwiqkp9;x6`p7H_plGfC&u;R8FNrUX>yowi8qk1kCswi`ZD(bm)K2$N@bzYZ8D$3-g z)TtOfxgJ+Bl6MokiR;D4d>%V*E!b*&=Gt$iZ8MT$>{)%WdR8lQn=xKz&)?0OmF;Xy zp|MhD3kr<{r#5n*ojp`&{FZn{Z^Vda!FbuIJKnws=Rc>~6R)d-uIw zFt$6FJyM%bqqa;DscjDz?KB#;vR6uT%SxtO%1pPEnQmRC&u0qb?qtp<**>4-@ZIxC zwr5KV8|_o<+044kQdeg25&OzwyZqy@(XfeK9;wgX>a(}{vZ!hxdDTGjs)60++GV6V zZSDuz%Y!oPeo)#x6L*8TOtjGj?;eBduhSNGld;&7!UE#`dDuc02b++@8B9(%Q~8*`wF6 zKLcMIY4Wv^CSMzSc=R5llXE8ydR%tqdz`YzDSO;5E7@bDIxXE9m0PUeKS!<2#rh&WYLyi04}H27w@;6KW3}3+x8Lp_{g&x0 z7a@YGOF+GAjoxQ$*LO&hFS)RhuJ*h=zcgB=UDr)%-K5FvCfhN)$##6iK4L$yzbv+= z+54rD+NxV6{YZ7Ey*us1K4L$yzbv-fn|x)YrhTm2Jv{>|I#y59lWBS~4Y7~dPwX#? z?P+qqGFmnnsM`nil9LJbl4(M{WSR(Zq%5}EV)h&DGoANAZ&vNis>HssSeNU!jK4P* zSpUUntzJ$&7f@06x>WLWlK1Giw~o_@&F7f+IX$mcu-`~c#4&E(0E>MQd8RfrnHBMLuIkO+O30z*ICUySjydl*$lC# zESA;H!LqtP-OxgiGN69fc{P&#==cT8byUAAwphtWjfAKg)vVS>jRDR_8qt4SbH49+g^N6j zi$3aZtao7*9W{nIAE|3Bla7@#_gE=&kCn}O$a~0p?7TJTn9L?+r@S;vh|&LiTVEW`fEGVGu1OnRI> z_@>IRZz{vY{<7FE?|DMs#4YaEmv@Gghi0%CafDdSlyNmv#??%_J?5k_(AkVRTZYZq zGHlMaho_u0lAH_To5N=2uo+^1S!|c@J;~!8nJeXyxol>xJ)B%(G<0SQ&6nZOe1?f5 zWwBj8T9+qI*Qe%Nz@3Gm1p#%|Dk#yfnr08^8)zY)HF_2X)J*GqiSdf_Jh|VJ#oTYn zV(z!}>)OZ&9XSYs-kBmciH~C0kz1AJFUNDp0!d=8%cdq67_E03#iH3i1rJuS{zVu zHS}&4vzx{2hS*aU%UPP_P4ebq`_kr~Hd0gi=xIXwPu2Eg6?&gff;dtZ+vT@T>vz*e zUGD!dpvu?OZQ4HCh<1fmEs<%|60R|^o7h9_DT~=1d6T@kMDo5RTrvzTS!R9qwb3f= zmR`)A8&GNg(C;Vh3aw9Dp_blEu52QbE1OVD+0@dzv3)KnXN*pRUex9OWisqvCc`1( zP+2T{i7b=7s60NWJpE-<_q&NbI*zZc?Qv%hU5OI6s=1 z`2m%$V}CxY=W~+8A>uIg5%Ll8k$l;u3UJbafVysPhqzuq*6|Rh2QJi+g-Hydz(<^I z$JXd``nJAqf06q{e}-;-n%V_grT_1ht6KMJPIon@OY9*|UtP&%->)Wllf1dwz6_Vo z83Vm($$Hu~0X0jj3Igh=)~&5oM=z@#stsw^Ya`k}v}&y^tJcc0Zen*?ESDpDtt_9u zPJU+aujBHr*adY!*m>i*_emnyW<?6+hlJJwrBMuRVi6g|N#L=5s z2-9&0W@8?Pu@uv{O24<1gXnEci0L>4v(dkeD?=P24ilH6D&!t1l+QZ4Q08}&cT3)@ z+=cR)*P|dE%|iKk)GU+*hmg<4JPczgnx9v4?y2bQoDh1p%RK4CrW5Pm-VGt)qri`0 z@}(FZVnR&EA?ORq8T&$V#@Xck52pPcx&nkRz!S1OKw`tO;X`K@B~zkBq*O2PT9Vjr%0e?9LL ze<@eD9#Q)2rs;pphR3RA)}gMk3FU(NFlhbIHMVY*603jVp!l7ggAKgx4#n4*Yq_6_ pea%hw(r;w-T$2MgQ_lB)tnK}+jn{hwi=K*Y>?Yg3uxYN;3tT5M`24kT7>3j);H*hyuP-wSU^T9&2TNwfEWkoKw|Rl?MFV zI{UYEp7DD0#G^-ZxmK8bJPCwL59#nP9IS)xykB4Oex{1Pu<(^qAJUib{o#w~aT zZ+uPa@4*6`jO!eI>FNlHs7cb$5eK3V=V1kYgAHGozB_R!zJg0|KVCxjWZmb}m%fL6 zpv}jrSca?d1gbZrz7_rpN8;PK4o_gzo6^@3duYvH-!~fjmXi4rFXBy8q@yDa#!0vi zPvMPIrT#%I!cXxRY&K2m@B6VGG6k3k@ zCfG}&-dj?bj!)oxJcRKxrS1VN!sWOhf5oI(Qhz^=!uM?Ln_vrxGnn+YGz`L-_!)kS z_1}@YRQxx-jvMeCHZ!HZ9~NtU_T9IV#5qiTR|*H>n^=LrVbW}=>yA(0JgmfDu=yOR zAB@Fwl+U^SSCKe^E$2$%NL+zGW6C@k&&MTr5$}0V#wX%-yo|Tcm+{>BJ~?=mgoRtN z8XLYZby+wDm*O$J#ge*gEWi@nh*fyi$3dG?Y3z-8I1@MGS!}XE>eFyAjztsK;sN{# zV-`xk?+y;KumBh1W~|1#WzyIWUqA~h@EeT%uhid$J#d8RQxi$d!_{~c;}^*U*_e+r zaU-6`#*3xCBM!r23}Tg|e*TRQq@fvRU?EP$6V6F1^9 zG&W0pE6l{Fa2Bq_WB8ZoQ~#`x2?pQps!_j+q3BF6>0A9sbd!?a2PQX=o z8XN4Bx-1-rWq1JN_Dfwi9OdI+GA_aOcpBrsl*X=@kCU(zH(?bz;CLWiG((o~S89&AycoyrQkiI+c z5qufv;+hjY|9eUNf(=i~1YPkl9E-E?3%rE!Vd?9PkKju<4>#b+uumF{YB2>pI0#?F zg}4?EVx3dcpN;vr5UVi$wA2m3={^pY;tmYs1*~5qjjizx?2G@waX1|(ze1w!4>IvT zuqQr`OYkJtJtOsLI0XIp0Up3}SpP@qYpZph|DGg<<3xN9H{c<>hzVz9qK?=LAIDd* z3^(BkynL4D|K^`$qC44A#9M^R&cF9ERg@wvU4~_$B^~H~cIU-G*71j}y?s^>_q-!^XeJJRR^M z^c8aOIF;*Ee*Swq2kFX>b8#IW!r$@6%d*g2*dNDW39iIFcph)~L;Bm> z+RuM45+iXkF2$|*9oG6&CTNBCV;)Yx1-J>rcomyn;rUP32lhXP4#6UvgF&pq-|(iZ z(su_Az|r^?F2}ui7VBT*`M>p=Ow=0-@eN#z+wg0w{g?EmVkYL|M0_7ZxEqiD<&z1n zl1SD6BV}KS0XP{y!b5l&lU-8Z6Q9F{co1txNnJV?py}ga1@6JC*ujv-M{qI*@q4Tn zEp?r6IL^k;@eoBZVsl~S{?RvG$Oju_myOx=q))|RO`}L^Dwa^*O zK(8yHs?6MV#^QvyI(oQvK>bVW)xK&btv8Z$m+7vunA56m3zrJT$lReAJ-5z>Vj8(Z zx;(7^S=e5)hB_6yQ`xJjSjoGI-NY?oWj>FcH)pRmmg_xcZ!nT$?OFYCdRBAv2IG01 z{r-B^Ti?zmlpBjv?4m94GIcnf(~Xxch2!nA!{x>$*LHK?MkCRwPHiOBo<>sbX(ZL2 zM!Gr}yUB=mId!LRk~)Wcw*8Y(ItV zr?CALyDYoX=-$?z+nXxG-c%X(6Z<2vUB05yXx+)#ivCwg=T2$KR$A&|{b{OJl2@%H zuUgq{v7Z?ooHlnG8FsgkVRsv8^N{zD_t<%}@H19(x1+5cZS80y?;-E8^XBHyj4sY6 zGNHYky47CVt@hGxwYSTXJ~z5Mm(|-*hP@qS*xS(_9{ssd;0&ufWmw%Q!|G0Z_=4_E zvG3FHoqX(fao^r0vD=Q#ep`*!N%rkuO1kncxqYL%Xw8zXT>fyHED}y*k*+M-^?GbC zdU>mnEN9l0Go#F+%<5{FrESxT+Mkj?U1ss8%PjtMd$?$uk)>~#&D*$P{P)_~>TN~` zr^(Y@nmpa5$;kaPIZtP=*YLGGsWEVGqyVZgg>OGtd2W-!H>n zVs9k2%P(&?hB@U{4=J~LFdK0w65HhycIflXiP1N){vRd#uJogo6;P|p%{%l{b%R;G z!|38FFq3xb$7Qpbu~R3Tnz=iTMA!3X(N1HNb7434k{QCiWZ`fxSvcIwUMS}aJ;i>r z?gK}tw?OQr|mL2WW281 zJ^cdev^`Bfrs>Bt#C~Fn*owsVG)s2rz29qA@6vB`=Lzo58TRK4``c9syN&MsocF;% z78%GQ#QsRE%k=|q4dj9i45*Sg{Q?*iP}SO$L6Z0AxU*Thn^kj3`v=MN{y}A@RwN!m`V>ht}y*mGBg1%*m{W@M}rhI8kl22l!?8ZBi-Hc@Qk*q#4ppqKu)rmto zE;6gXG!hdI>$G~3)t?NgG&A;qk$lVSMtU*Qx#-u!mm8V)9WWkqKEUu(vTFD#F6q-; z;-|02dKc#Q14e;*5P$t>Y6^;W|}?R_OQ{~nJqL!hC?$LCJskp zySzx3>sNj0Vg1%Ax6iOdu5uXFTLIO`+^2_Kh35B%ji;OwanF*u-LqtF_bhv^(MOC# z-=>@NB<}=NbfW%+ug%sfGoWT^-6n0Ow0Vd<#9m@=B-YdFH>cm^CfD;E)ALxwAq?w$ z>znm@=0da1Q6nMg86CLal_n2*-wmj8v(r%{IVUDb?{RiO4b_IV|JABF0d-#Mp2HsJ zut#D~B$hpS$$QCr=h&BE$x)+2+q-Yk)6eDV&*kb9ha<6F?mA|4DSTU(Tki$b*LIus z?k0Ly+E=w|zD%R$bD@dd#2#W#BxZNyz2v>~?d3|38GSOU^tA5MfO0q0&%gFntzY|% zHe4#pg-c~QwSeUpT#xN(IvqE%+GhSk?|PvOTMK14L>!95&Z@`td!a;^yUX}Q$^z#@`#^Jj zA8Kc6!`dTSwNh45`v3jy-?eUHcO;gxFJ4*CWq+;ATqWP#tyNsjRb0(gt9;J)&QK&F zjnSXTEW=8y!RXb@zgquyhJ8IVNfZYqwu17xl@W)CD~ZFz zHN;$j~Oi$oc5h`5qCOk6`8y_SVA6Z5bb%diq_Fmt{1`)W9d z-oS*IiFsIz)&{N&afrB*xCT`@_ei;X*3soMzni>U@;>D*m(RQf1)1nAm%kT!%Vohl z^2Jz&l~{w`jrE*+DtZ$qgq}?@PbRU~iR&npXD7^lr}eKZ`&Ou7JUT=_W?~-tLvn)t zkepyKd5gS7-U`Y2l`&q4HK;b9k^OEy?Q`zM7Mo?^O!RJ+3*pCN@?}_wVJ4~}j;`PY zFcb5z7|XD-qMkI=*a>rVjd9MkKbZTq@s}&st-mRUzYnPC!NPBi^tMTb>hC`7P}`J^F#kE$0J|2_PO`CvkHV$y*BGn_K(@8QSHmlL9gxgMExJRv%GJfYSd z!y8;X+;8lLQ%5ou<^FJ{wDhlpp!>O6M<)cEUaB=_L2&x)+D9$3Yuv$r(SSvTHLJ-yB6G*@vCw@*f&aV`xX5Y_jsI&>m3(4BmH(%jr31z{WD#UO^=M3 z?+=Z;sqw@8Gy7LP_Vl9@^D-VRy?NaKjQ!-#fo9L%abw-rv$k6zhA5;AsAdQG? z(4bZXX{6PVsyjg%d2LD610anow5RH2AdPHxplUymM%JyP>dhdH+;*qxhaineZKi59 z1_X_)-Ab)^fp7p{s_p@4q&R@8t3evc4WjBBAdN6WsX7j%5fV++ydaI7jiKrskVX>X zsX7g$k+QQ?eIKL|y$q^02WezQ0fSmuS3s@Yx=Ga!KpNq=P1Qmmjf7ND^+AwEA|6n6 z97rR{4OE>4(#W=Es@@CINLm|JUj}I;@HJH*0O5uXP&F?|BgW%YZ8uJ1z>3W`YGo}* zBcYR2eH5gTl0Q^k1JXz;D;?^55FTm{sx}2_WC<5l+k!N*g`cVeKpJTgrs^(`M#Sb& zwGs$FVo9nl1>pwC(+LA^5d@8Nt5O?2gEZo+N!4K>jnwHsZq>(jlRJ|Fbk*{7*beR9ywq$m8Qw z{R*TJgOgNk3DStkIjXh?X~Zjys(nEk@yw#?T_7AFm#Y0h8u2Nh>Hv^NhKs3s5~PuD zWmL^zy-BUysiamKKpJtVrfPSPM(plUwF^iitPNDn57J1`6RM5^;lQm_y$ghU+)35+ zE~-8^K-JkG^<%73rF?)kqWS93VUTYSe;0qv|J78Fh1lr)?aU<3|LUpnBIGf2LGe{BR$ZwXbZ||K=n<~5Ht|`VLINsi*FrC8=CZO?MYGkuWNQ zYM=&aCfbIMqP**<@v7j|a-J}#pZ(NgO`fl(Hh%?e$RBjU2C80!nxJb@cQgPEMHA3u zv=A*tAE8gt_vkRn=0?rT!@!V3RZ(Nq65W9ALEF$d?lf|N>4CK&Lz}3HCeYs~n+Mh5 zMMY3aR1uwr>Y__L;Q4PuEO5mRbw=IL|InRiAh?`_q0wk8%I-<^%~4l$3mT2)q3gY< zF~`wLFztVLfI)0Yr8f<{iz@q2^$|1|y^dC+FVS}>E4*8xS{a_}}lgS|O_tJSEMQzay=q~Ug(|uY-ib7~)87V_2 zLFQ!{q3@%%a-s_81+-(TA4+W%MdeY3F2))#i|H^^lP)7F2dEviKoeqtu0VgHv`DHy z6Xi!mQA^Yf-G=T*-=ktt)LwRIBm?3S9{3U|KTOr#peY$b$5G!SRA(<5hEfMJCDB-4 zM<1c>=tp$TQEJQ~^ghZ7?+df>SlPt!I92aE4$prxau`<3$Z>QKrS6#-8N+(!392?g z?a>YBR{uH&_ z3G@lbZU$XdLDfN<}q;6Jn}4y+DyAd z$%)Pa7m!ov3$zy%$)@^B;6gn7LP8yWAz@(WAR33BL~o))sA>*1vJicbGK6!fmISJR zMxu{U;XG=qE;@*End&S-pQ4lKT=-Oxk9RMh=$2ArlF$@16U}2_6rpA4 z9rOX(gg!?*(SDSEn_#LL#xq2RP-Lz|A^Y&r|K=} zKJ*lN4Q)jGP~!*G$n{_$-qJz_5ow?iL*jyNLaDcNhQu3cLJFGx{v;NWCr~dUFHq`@ z(IUdrOeuse0E?LJz7fu8M5sB9@GYVddGm~_`_LJ!RLu~s>UWO)AhmjBaXWA9?`2h5mj^_22YR z{z0XCsd^b2iPHP1P9*vR^?OHka?y|IFI23b>MubH&^zd>et3SCFx|!yk~&HaEgGXN zLkH0@@b5kN!Bn$-`Cp$GYHc!?sUyc!YcbXOe`^NpU<@nT#0s@X*P&*^L3_suSz_>(ugYAiu$1`XeOG67NKQm6WRw( zEu~Del@gDi)ND~`45&sD&}1}?l0jbLN;f)yenuxyo=IvqIdE#Z!E}Hdr1dwobp%w$ zo34&GU7dWx&L5Pz>FR{K>FR{-4@^20cTupG97Xr$zrFIdE_!$jFzL-XdT*w zwxOR;ItQJUGtDz~n0ds8lTI|rDv){6B)QWa1|heYcDqHoc&HuzplrN!qD6R6A#^S( zi>jbns2;imHAh3x7&HORMDx%hw2YUo1qZl;EBDb6)Pe8s?bRZup{~H2SV2l=(Gz7P z#29nQlUZ~!m&_NWv_@Uf`>2Hw)elAs&~8*%7{{ag(W_u3&R$7+X8%3v)MF)1+{Nfb zoE%5f&{9ef@(AKK)8i&itiJgJ9yJ20DTt}PHcPPIc)%Qo! z&dMxSE(yLDr)C(FT-Hh3cP1 zYtfhJd^l4mMYf|wU^U*9Y7(kJ^^-OJKHAbGA3D;c4<+-cS_IvJ_M)>iss23F2CQMa zV>RUad}^!yg1>ic>JCVgrT<^Y;{Wc3P#Lls4M(Y)T#GlkmN+e{ys{wqyaX| z5lyR{T7=#NaYr7pS(Wi_KZ`sfZc8|_7Bn^RkD(Im7RRk5J@JJEgUP4p{jVF_Dh zNgx&EEO-xZ{yk!2Pt^}WdD3M+^^=n){kT4aj-!*P$0}-^4;q3-pr_FaRC_fwW&;|E ziaSu9Q)n^j=ty;rqc!L_s_X=PTjERwi30C4J<9jVX&0(*;!3#|-H9^L6KFnKgFbV` zJG4y!e+?Dz*HD3ot)~+OB8@7c^U$TJ3)+CbM;C0M#(SViXdOC%s<_d~1H6?F$g@rO zT-!*9A|6qZ?C_vN9f=-ApMiCFlsfX&JJDWFoUy`( zPLxO)`WAhU4x?Yu->A@5YUBd+0$PODqMhhZ)N>m(G5|e{tnl@M5-~!zGBD1d zg=hs>&-C-ECl~yv9Y)Y^pfcg~rxZYEqf)3M8iq!ru^{uJOcJqw7ESkOP!r|g%5C%> z+J*L`L#WMeYGggy4Nfh}M0gL?cR+WcC(&ZG3Vn+9p?U$-_-*Jw0G$CVW`R_TfySem z=ymh~`U@4?OO13#1JOt{3B8N9p8!ATjiCl#G_2wcTsavSMuew(@kh5Lz&cQxr=`v6E330 zRL^IsSN^NH$u_9Di9Z^Q7Nd932DAlj2d5Tp@`tJuJ(UIVON1xHEr(8?5C+IYV$nqO zEZT&2q5bF>`U4fn{X1_9-k%ndn@=aa)xB070W96(;O5#%FV(4A-i8j41uN6~on40-{*gx)}JqfKZV+K+yrWDxFa z)M4aM1CV*)BP;*E&LJF`P)sM!@TNZ_jW?(n*vlySP*GG0RYEmUJ#;C^Pb^V|B#f)z z)Y8iIc<_^171U74#8s-A3d$;Qp@zqH-U*X?$OB$rpM_838U1&dQ z(?oS#Q4iDy^+gY&ao{3hl7lOS=sola`Uw?orY6!xmw;1?Fj?L_^_wP43US*Ll>5ow z5mVz{;@x^lbe>VOB!Qgx^$#a`g!NOj7ac}fTB$KSs3fY2E&>UWeNHE@NF&Hj1YUp) zVhJ&|a1cAFIY`344xJ=J4R0IUDb>;Ws3E!xwL({-&gcfz3*CnLqrqr6dI(*03?m6m zK{L@j^cq@@)}Rm37W5_h7X5&Zwog5(bi(?Qy2;$AD|!=cMde>nTTRgjv;eI_ThKm~ z>oqk}7Ii?Q(0k|vs?PP(=QaNL zUz6xQYUGS}luJ=d)D7K+2BF~~E14gMQ3B2&6(AcC>ZkNTeNbO?FB;a5kJ}Jp z&>XY_eUF9=&`Ag0s173ak($v0WFc!l(y24>qAVm9*Ds(|Xx-E{#!R9-`1elEB$`b1 zu79-%iGW&!oMGw|GSwBhwVtUn&Qx1}`a8chY5rF)C&EK?vYbK0sUUKwDyog@qf5c5 zWjR^?ub%4IlGXn@w#0?0j)K~jNPhmi@6`BZBpEu($R(z}6t&5OR6xsw)S?g3SLoYB zE^RsW?Zf}~M5Z|26vvyAAlPb3sPU%c?dL=nZSloNu=W4$W=2Y&Z$@sRHE2EBjCP{~ ziN)G-4F8e8hcqW)O!Yyg`WRDvim5)&R9|AMuQ1i6O!aN1`uC2$*upVuS;tGbqq+uzuJg&Ky5@mgW7~;jBYhOzcz6k`+G2LlFd~AV5&EM`QMmp zOf}~?{{AtviQhOiaWFWwXp;!0`UupjB>rDVjXeEVs}tdgzk8{ZHUDZ2lKijMBoj=v z*4Mw|HOWS*p89L7MNYs9ob5%=qgm)>v<75ev`9VnpZx1C!3h+bN^~d()_QMB0}H)&L&0d{?*bXlBs^gRP!@_{M|vC z*f7=1{hR;#GGvIU*7*5%Um3E6slLQicQMs-CjX9~dMsth%1JTm?A<2VAWwGx+bmCt zC#Rkr%47(-%47oljk5isI=rX|IJGDfNv2wnsh-DF>q4zemi+5X?JGvopd&_ZfTE=F z-&Rou(fj@P0HWjwQ~mm1%|$f-{2jwZoSEwVO!Y;kx`C;-g};4M3m5ssRBNzMeSCIu zlL%a)hH;Z;Otlv6@6Oz0^S_#hJo#7i5@k9odoDa1h)Ux4IF=KezIle|LW6JJ@u>2Pip>cn3|5C3_ypUuyg+1VX8k1zOG`0 z41_r4o7%uA6HP_U_LMpW3 z(%QV=fh><({-9L4c?$n^`lH^@Fb)b9+VelA*bM~0e-9nraR7X?WQ2s zLergxa0REx)Xzn9y0ri|0f*vknTIgXtZ zX#Dinpv1+n_1O;^IgOn&X!7*d?8F_^RvI0yXr-1kG#zCj;fblRbqx<4uG6EI95fe& z|M8Ic_^~MC=PWv0s6#DR(IQkBWg-8;pUx7jucM{Y{qnhVQik^LzIPFgYQ5eVf`3wobLZO zpH7;weuB14_w(Ve(KD=D(YEP+%OdKm4E~ z-%j@{R?Es*M-_ak_{fp6bGKuvs^!Ic>>j=DoV4+r6P#OyVd1W!2#An5o87LbH zueQhFtOwRJQO@bU+i^I7fHe=wJKbLu52ydI7C>iB_azeGtP|G4sK|7`IvGxc!|`De zL+4CyXitF)5U`d&C8ztosqi&4)-uzb&6)6pC)V=Qo$!nB-5S!<#>ckEPf$pB^Olf=(>4wwmtvK*t8_<@&jZK zJf8IJs4n#@G)3 zy>SBmZgfD32*L{~{1-=ENJ|YGafT#|;J@ub&a|SDQ;;6^G*Swg;6Nj7kO$Y%$OPm^ zcX+QR1ZRpi!-cMp(OY4ENLD}CAM$Mg><{?@-tCk^UI~T$h2S)zW;9FyjrtgvKp3u^ ziH8Xw`{5dEXUP9DU;@YxxPJH)|LuwAd{*b%ia>6zd2Au?dg9)IKKM50v(n$|oVy6rFh!uXhAiX%~ zBoJ~37oD7fJjG8ZrI0MJPaCAw96FhRd@c#6^=88XhrFN(`$K-!g?%9h zm%#p1TEhMeC|)?h1ds>aU;_9ft+*K`fRxz*6F{B}h6x~7ABG7ayJKJi$VqtdZiDnb z3Hw9(orC@1#>A(={*WiKV1LMjT-YD-Q~~^hlqiAyAr)@Ie|T(zVz3e>fDDK4RYc(3 zz`lDh0i<>VOaPhn1SWty(Fzkl%6Gv8kaYv_ceIL~?EeT)u4;C|2PZ14YT3y<>V)N8 zc4GL6PK+ThVRDc=km0b-24@tj?z5AlpW)|k{EVHLkHH4WGmuq~A0bIAJ6ZJwCV_{kZcpM9nuQ23i2o?t*$Elm!%pJi+=6s3 zJ5h$y2OA+nAk!cpLv}$*!>Ix3K6YXWxe;w_>MyrhN?a*)fARj}?zy+p!#1SI(cHw0d}$S3#)2GaNwd^xigUZKKa!(qrO$YMw` z#7^3&KI9_m6ZL0y@(h!M^gtTJ`ZD+wZTy*o*h7ZH`bp|j^)U3|!?H2tHOMN+&(w$K z5q6>gAC`?FH$a9%a>9q?s*y$T1Wqx&^WUy}uMVl{XR-z_5N1@)2n{n!~VtdW6Gm z=C22g@132Z4r+XIktxDS&0l7jD;P+N$5t8VN}h^7{WT`rq_p8@w5|4mKSM%mqJ!>~ z|M~fA|K#pq#+OU{j>_q$CyEZ+93$5f60=nN7p2`RkrC=hh#viR_rSXN<;987C467+ z{rLT6kNVYsk*Lcij+I)oR22u@V`&Tvg&1MJ<7bD5*I!8zq5r1Eoc&ss2mi@E-xjX^z23o9!!{xMFki#lO~DLCp-8oggU^YY zBddLc`8pXaZR7XGM%{#DoXb8|e!b#ZHF1UUEnk@}LTae}s>!w(pKv#gtj~iUodU7u zHK*I2<*{n+=-+NHU}e06L$f16{(YCRYI;+jxrx|uuE4fkskE71{j;%+sB>K z-F$#$k6~?^WnUya8~1tBX3u%Y6b3d0*(_T*Grx7Q<&(Zz0q7@bZ9JGM$Y#H`qu6(K z5Tn9fJ3><5;`~!Fp~bmQTZ1H!rM_9VFs!OkZ+}>=;~|R+6FM@%nhzH2ximSRXoSL>OqZVcQuEz zhh(BY<1o+NSMzN*W{l}x5FCD7)}*j?#&xS7CLVS{UycSg=|361? zJ-m{1Ol!fMCI9KPWCjQ-IX-6H{l;*3q>4zq^I9S^mvOj%>lf?Y+UF8@N*sy;+}0K9 zZ*BI8SaU4YN&ms&+77RZ!w-L4y1VMo#Bh+T?q>3`elK~#Qr>vhJU8~*UBS;BN7ZNV z=yOh1%;PmO8044nwTfP@UDt5RwT9gO!3uuI!>%o3UD`E>!t)c;>gX*yVotvPw@c)$wiCSgT9}WYV!S;k3TY~dLVY<(I>Gj z@5P>o&1~iFTP!8Uc>L=0my@(r42NUsE(&XoaP%$Xb-&pE{qiY`JDLuQ3T00oopdy4 z@?)9fqIOA8&4eDtb!d5?)YHi0Rle?{D(C4#am`N;o|Am>N~1y7TQKMtU&(crP#w0( z40@+=^nbLpL$|JY-`E(clX6qqBA`Y--QZ}c;HHL}2!1pArd2L;{T9CS;QHdw!iaL} zaoA?+6?u#=OZc{jM(;?(3*GmMyN}T<6nA}BlyDMy{Ov&8T$fw7wmYsrz0H9w$Kc@} zkEL$)-1~;RlZw;V`nNPSr8s&B?WF0O>B#0uCi&0hlj$1R7cx=h7xLxUpNV_6$!Elt zo-Wf&U8w4^a_hIyMO>!VcWe#P1NUls)iP!pyzXY1dn9z((Ngy>^s9ny-aO^DhMG3D z=kz4a?iIOC8i@w)Te5tfec0rlvtRn_Ov9hEvSsExa+T|?dciCG!qP~v(D%dT;e}G= zaXI~_OIw?dGq4)2P6wk6=RycE3@1k&)y}utdYb=fEITpK=ez$D9qp4<+ z)E^CorRlhLh==st9nFQZZ(4?O{UQ(O-(2yvF68mHi|mU0mOUI@`-azT+xod=eBk2q zXGcSia=2KJUf+G#yCbVW$VKA)x!>VEIoIpqZT@B^n(f{Sux9H^^Ui3~MHDEi>Cr4ZmK$@b`cBN4tIFx-K1R zuWDoqn;2LWF7;@J*?4*=zlLFMd(N@|JG$J7qYk-U&1+1|ZLj`(zDMTB9sDtnw~!YFjvJ|AsqC*O_s)ncO0d4i1Wc?AXvuN98iioewuGs|B* z-ZvCw60<#oGg94cP1f1c`{;ihu5#LYAn5*Hl@gw2} z@u|Z1SjbCp?*T5|XKjqV!3Q_73d#vR_can)cdx|lqK%OyT{3KMZ2I)cD1P3?-Qk_d-*Tks-9`FG$%La9RG*(t^|hp2B)K$i*wkx zH*YT&yc^j2gx@ZwPG+T1#>-75^}ExoKI^jC9e(!1i>_3dcSLNll}S>1gtp_u;illT zfl6=l=5X6vAMe)O`0Q{SDLC?lH6xolFs#?JDf~!VJAc5vy1XNnhR>vyUeg+QMKi4U z`m9#m#Vbu@(?niW)mThliZ`QCdqh@lOqfMwOZjZ+`)fNQ`Enk~Pj32V*17VHLy}LG znaPG8z1N&oanJb8Z6nyvrK)DS)C_w>uw+-QbC}`3KXc`nfON*HkB@F{jPSoPT$Chm zZhwb~zwV%bSoK~bV;8Gu-xx;vAI=+Bdf)AvoAsx5W`Y*K%DCG?Gnct>+`)`}*-7pK zV|8Eei7j*Yujkh8sHwSrD9x)%bbZ}29{Bun$qKqNg|J-?h5G>BjXVzVH3$A=+#Vu1^(7Tt;^XwoiC@L~#|wjlDZWm)spL z`|Q2(O_j*Ix6>0`>)%}T8&_`N=vlA4LS3=lcfFQwn{M}s6%xiDA1Nqp{CdAtbm*7g zGns&}0P_M~i#;}Ow>!dP6IZ-myvE{LfXHFf!3{l@s^htJ!nzl{H>4MGd2rucens+2 z^kwaIM)q-&`wlrbo~jK>Z(e=&jmE%@`3vVJe@hvb`>irjQ?kV5Pt9f>;Rm5(K5i|u zTi2{Jy*xOcHF>r6&`v|q({B#^$mC|_C_CcWqxxm9&ByYeoXMZ1--#Vu?6N7tgD20Y=qLR}Fh@{<-G9KZXg(2pZYWxLen)O?hgj$EnYQ|Gk=6V^ zHBKxq-7V!Mn=q?xmXuJuNX@bco5DT_l-02=cbPjkoJaWy<6Di^TkZ?n zuZrsEaOn>%Z4a_3Q!d#yLy9+bkz=g>;n*61`$>$Z(b&s!f?PL>w#VIxsO#v?@a<~% zuDK_wD74V)YIc*X!7l4cb2mAKyc3%r^91^HJ_*b@t*^?Z^K?Y-)7w$bbsvR_!-`g% z-?ZC5#x25h$IkgHq2&0xjA*J+hbPWOXbx1{eDuk%{Jvi@$MVRFIe`o z6kThz%#upj-8SY-o5#0%r0JDNSh#vcX7S~j^L86QE?>Vlmg}}i$xC*pRJZy4-Hg$v zvEHZ7-mclFzyGkC_vwaGjH~MMfguu=( zu{(Bd`6co^xVYIg{{u&BMX>(q#htXTs$AY`x?B4B?9Plt7Ds5^ezPM~$Gf=Yu^w&J zQ{U~mCkMhk9SnH9G;%IwxoiEWG1@J*f9$k}+p@>B@r>0b`ioa_`LJi^K9e_EesZNu$kWQ9GTTMpK-9dQxwA_kzVyUpM{t z{wIF{W5w>is+j5kv(tTPG+CYJJ%avQhlf1b{3W%==ACUjJUYgG)#HJ3n)=W8@u8eX z50yUV*!#~C%k<_GP09THGJol5gLIk!!>Z%Y`h${;67G>WJ-yv`BkyM}an0y|vz_)J z@J&d~@pGr%_l|r?7Hf)>yHw#v>yS4uEVmxC4hT-Nqw_mCR z<4(j|_DhvZi(J=iJG-4Dj@{~;tpt1Tqgz!xZhY%5K000&*e#I28_(0XNMK+3zN(w= z#JzbshvQp^4<^5y`Tmo7?{1;R|7i)=aXU}Qxadu8<6T|isgzdz07Pr;pLBRd%flgxpz@>DdTPL4d0;ph?nmbmO1jqejC-fIY0Ql z@SxknTCU#$9fRzf=lr<5M|PHK#d#Uc_J~=LMzcjHvTU_oYMoMdosnw$I9%|M>zK=9 zb#Bo{SGHRs#=B)wwbF_>eS z&HNbGJr*LStkE|dJsx(^L?eTOZ_SuD=aAA%J*&xeA?7)!cV^P08OO697@T>e7Ov?P zu_YilUcjT}x35svdMnrJVf}+f3fE6g(iR2Zi;~))*Ql_+RP9{Rm)7+gKlCkJH`;bD zQO1k!rHwFOn|XoZL)R4Bf>z1AIcfe~#UJi-zxLj-J-Mv?&HTu6yo{#0vH4ubV&e^mZ8$6WXZ_mPpzLL9k~t(R=eTv*fWU7N zz5tV%JvTc{5-fJynGu^7@oeq@PtNs=I~TnXwAP5()nzPL{wk!YHaa#tR)O(bvOO=4 z_UuEP!TH^$v!mZG7T>V-ocQB)hYH>fYU<0LZ00wND0_TT#;Q>HG>cx*M*aMN**mjD zF3pi#bY!2u!S{Wx2Cdd`tBFl@{4&OWh*s=d3KY(R^4@>Tx%u zTeWirA?`}KjmsuGiAu|o^So%d9vYD(&t&5jTM{95m$ z=GaiXQ&*DKBkA zC0hK9l*2aOZR$C@C2ioW5NCVMdV{*GDz4);4`Mg(4EerhX8@z4bH3-fara5H8@--} z@y!=Fzk1h@IV$OLVBxnB|rF))Ztku3Y`{#4I=N}iHW0kd^0z4Q7`y}G~g+spj{&~IFH*h4sqguSH z*+q(F!xFP@KD)c8G(~&r^(rHyxUM>ncSWS!$X&7a(mr>2orTJBhVN+1xEJ)wY(dl;h^yTkrYm;$T#h47b8;4?VLj1H*UaJ#>X;Uzr$_ zAMKV4$Fa-_u9zVLh@j$pwvPU0Tjc8XeF36}|ULVkL)W!1;Fh-LWFai&>E?%1ClXSPOAeY0ygWfn)R&IY%Af+?jUyCTN-=gNE zHted;s_Vt6WhULtP#Qh;De9Bii$+t0PoMSbyq`6=)ft@Pk{X|UBquLc%T*9Bo%kT} z_KOgHC!tMqy||oOqMkk#J9ewTo3C}-0oJ9gOF3H8~iv75!y1g~6|JQHMknkU0zxsQop(fs(>X2}Byn`8|887>0h;_?N?f38ZD zuUvIft^UZC>sm!KBD(9;%tOxVEGyPqr7PyQSHhL`!*+!{;qGO>S$Uo)9g&Ir*2`^e z6T9z4?YF!yoLl4FXSt=XAKtGapIODdMB46hVixxv-ioS_ED2l7?cvWG$}jd8-EbM2 zRoOM3E__>ue?aL(!$^O62IIkIO$E1QT`CT(%QW|7T#(8(7Tf+QQT11KLzeH>3bjSw zD~0U*wDp!*u_@%Ksft~iQDFI5a1)EgN&StV;gp1LSkUqvRe?!)A4g^gI&BE+^{^0L zIIMGBde4r4=+!c#oL|%L&EKWlES=|ZWsTe_7C&A^#zJ?qoUR$iH_1!82r-O?Yf^ax zCc;G*zxMZ34ys$WCg`T*#qp$-|Gl{Qf_HrWWtrB*NekW}u8n6Vl9Rvh)az0_b1Ri6 zJEXtnn6BAkQxTJGJ=}{!Hy$tVeY9Pblk+6QRwlq_mE#em89zDLW^iz|b4nE-%aC@= z_&wX&kle23m1*B6?3i0})VAhQ#bd@g<)^PSHePjeR_BW0_Hg7|!m&gClgpo3X7>i1 z41xkJR{T)(>0Y_4(@O0F&DB+tWhG~{;#ww!0ZH>Du(z$d;3D!Tdw`v+#EauzwT^%?J=-8i$JfBB}6YM#f1YfpIbuUVAJ zpzYrDCThq(!N^{=ZqMt0@^!9Oi)S#_7Nw$g>}HTJ@E{?PapAvt;X1EWhe91$saILGCQPJy7s0%I=O!38~^ z{M@SS+iVZd+2!NY@cxs^2WdeS{+0Qh;(M*0k6q+qk8b?XDsa>}J~txJMC{>xh4tzw zO*R%M&%C5>{HPjQIwUVq&+#$TC{mp*adr#MVc)Z0%@l@rc&Ny>0>$$iF8#>1T;=@d zy?0sNxurD^WrS!FV?r8djRfB@&f3*wOs=>zBWm>?e%cj#3%$+J3ulZ6g{Hr?ITD&$#9lU98x)e{Dd)$m|FPD8JyQ$&WXz8AZts?WH4tl>S`zjDNSNZuRt&>8VL_av5m$2IBv-)0{ zOxz9`6Z^Pyt{)5Bz6(DT$x+LeP5zOovFd`C(S%6^=is#&SyK6fjPP6fuGzxNTW&U+ z+FQn2e|MN@b+?{>rOBTbedzhc&>?QK)S>=c{@LmQ5nPiqt{g2`=h)ot7o#@s^;l_* zDB;Ip^wGciZfg`ewg;iO`0@ zfo(4Q0wvDzT%rs44maNIW+a%+tom50Zj*fS%BYe^%7IG3OGkA(&pw^6!s6|@b>^N$fmjo$N?v!p&xPulzCp~2isbk+Nz>FnLXAEHmvu04Kh{&A4L_~;%+&hP6_ z!Rk1yq1F}G@5w{n4g-bOAtAF;mLw>huBt`y0hcspvGYDM2N{BF6E z?u9ZCDbUQU=2@v#0z#SL+8R!TXp@GbJrZ+aaCw2)i1H&6baeBN8)g} zWJ&$JGp0(R;zNDxpPpYBn$XFa7iY-5PS}fM$?vB}M$~-lddkYf3_eO!yuS5Q!P@

Q^--53L!h^rp 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 Rz#Aus2SUprzm~M^_kXD;AH4to delta 35975 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 diff --git a/App/HiNc-Resource.dll b/App/HiNc-Resource.dll index 6f63a52353c6ab668a5456e3fbae473516ab1f6d..c43eb82c7ffb6b798b0c343db0d989661ae5da3f 100644 GIT binary patch delta 301 zcmZqJ!Q8Nec|r%vL9Nu?8+$yM8QC{qWq!{nP$TdziuKQAhkb8kSXPAo@R@vt^|QIT zo&f`cF(ZSXv7VuxxptCKl4X*GMT%i!iiwfAVWO!?nx%=Qp>d*-QL0H=nxRo*s#%)3 zLE7YhY*H*zlcrysEW;ikaP|JtVD^taPW#JG3tv8L6Fs?x-A@53_^BQ$2vi*y?v}A< zgVh!;FQ20xlN}jVHuG`JImgM)z{tSNz`(%1dGoc8jEv@+m)=H3zdzf$TJ(ya^B+G8hA8jesx}ESd%sF#?LDGME9?m@^nKq)pDh UWy)&KpvPdadE+gA#)$?T0M9d9egFUf delta 301 zcmZqJ!Q8Nec|r%vVG+I$8+$yM8Cf@9Wq!{nux+2$6ssyO-v;4jE2eDI>6mMc==haqS4VYZR?xz41Je~y=1gcj0v~*tT zCbu%T=(&!$lN}jVHuG`JImgM$z{tSNz`($|dGoc8jEtt6m)>oTmFm_4LATT=vzYo diff --git a/App/HiNc.dll b/App/HiNc.dll index cbda74aa060993ede274e536bc24c3e0a5b6c10a..8ce9c9a002521582ebc9f19ed3cb10a695f36743 100644 GIT binary patch delta 145874 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 z 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 delta 145680 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 diff --git a/App/HiUniNc.dll b/App/HiUniNc.dll index b4b06fd67c0de7f2ae09c31fff29bb2d099d22fb..672b7c933c2b24c94b7edc7f5a5b2878c95b886c 100644 GIT binary patch delta 2111 zcma)-eQXnD7{K4>dfhrlXvf$_+f~Zefn&5>d)MAI8^eutTQmf4E;vEwR)!K1hvAR$ z;n?avm@=aSx07s$xR61R_y@rYB1D|IufFS7V z{shQHaV{<%CV&&kp2$Qnk=nHCMCb?9nv!4u@jwz}P#k;=hJrL}I`;)fFslo6KE|bU zCpbc;5s6P;U?v$zsW^q@+_i!j=im;RQi!e{O9rzEK2Zm!LIr4Qh85PrA+^N{y>L{W zX@e@XZL~onD(~5#8Z>Qr3gB~9t(pc0;kuTX3N-+u+M4Mg1N^M*NrUwO=hU6ov_WS^N&n( z$gq#bwGdo`On87Dt#?5ehsKhGh2*kCjWL{z)s4;3wWu4m(stjP1re6u8S-PPkzipK z)~~A#SuD9Tse)`Mo3Lpq*&t$|7V+SEVdO`)UUL0eBXVsHII)h0DZON=n=0F9n7kg+ zOXgJ?F8w)BgK?Xt?I!I^*=5nS)Y)L?S#yq&C#qN=HYa~BL~tIlxoqF;ii;z2A-75A zXQ!Pcu6pVjBU{WKa*{kZK|22m+SWD3Z92ad>8mXUeTd{~GUy1>sW%KdjWpb1&`rR& zR)faTR^B#2YE2%ib4mIzY3(pvUP}Lltb5aN*_nsSt@FpzM@e(1p*)L9tmpv~TF$)q zA{_KWZdm85>^J_^wHsulhX&%B^3ng;elu*U)yI;CeXLteKGv$6y#NL$*n!gxhS9s8dcQ4XY5pjL?>M-sjTTWkqU|lA^19YoM&+nh`4k-Gp<7K^0xsy*<}ZO=$*J_N zm;xqmI_H6@mi;yl&gaVW5Y2?m>Y@h7hRxc`4Uoj4d~G9aq?gRCO>iv$yTbaHkbpoTBHr%l%%t-(+TX!+IEm<#j%?IA(8sW%sP+X43vEq$}MJH z8*GO?=B!Yps7Ndc7JEaAEO;fkG~_LoMA<7SvLuxH{c=RD>BKsmZ^HvQTL{RaEDByB zpcH#0A*^`Aiz1R&mWqo5MM_CPD3;Xl5M=!?$1OupXzK}1UD32mf4XN)sDIyE^+D~_ z5R7<~pidw~0y1Cp`F-JFo+3s?ITRA>0s%#-35&I%=<2XPD#`xZXrNA6wJPeDgc`9{ zJAD%_k0n)Oe@s|swRY$;?jAr;JMcNT94dk&k0?YWQT)jyghM2CB!EM~QA5JWwWy7f t)%f3!QbIpJ>Z0gVhd!%tL{TFV0sYZitvt>J%|YTLg4T7Ms|Wm6{|#QbO=185 delta 2118 zcma)-Yitx%6vywGou#{$uvqix6AU`Ri$TO@b^-h`NmDypJBMqno0231)<0sNpU zMm|y$1#nrii1OdtvVz0BK8>}h2g+cFz9DllZDd)!K^k=#i)=h zoDm3_OwNk&bM+(zDG|G{Lb#b56|BNBT>?>Qe>~`Q@TM{_2}+?uNio4XcuQ$CK^Jr? z)67tg+9os9VdDcctbz`@A_4H~SIQ^DQ8-QG5+MR`n68}yL4W~zFbUQJe5fR)z(VLz zDpQ~l`jn9rsLxi#92|F(omFGEq1!MYX~!6;Vi;*Rr%tR%`&4|Vs+cU0Ws<~wfc>A& z;#v$#l@bfophhiFXH&&@z(h(NF^zee$O~h%R9Rx>S%$6HM^*8pvZ^WHrNR!ADn8N8 zBttG1*GO;<(%=zRw8jSQ0*XZw=8@|X6QkG}lO2nr(n>pQXXU;<9l|`pQu0HwmSElt z9KWh;n8A~$8cWH>k}-`Yq=OFwY1o1Dg^}-@yU5SWw8(WCkc#7YoX|xU+gW4FRGrg7 zy2$J@&E-%AL@;ji*6kQu3Fi_6^NtUp7v+DxONdKpNV##!J|UBYMOQ&6pjV zgriQ#l2x(XGV-sgjgWJlED+~Zto)Dmo2Dry7f&j?c(v+Xyjoo`LtStKU#QICMZ0IY zOFFt(&UVb1V7*JOj8h8I%5F`|WZF0_w%#LO@7J^z>+j@)cQra`9VJ)B=^;|Zftc29 zFrwlPwR#azUnG!&z$_sNojTAB`|jpGzbyH8pVY1&GpYZ@udZoWGE-H?UbaF6W? z>FL!xFQw_>{5ajW>A`(?Oj8m(yi7SB2;vfzpVq@am#7{l9$}tr1HJ9xCG3ltFFbtX zg}uCz89u&Y_xN~YqQt2&W=190fyJ)(Lsl7E;T9NQ;o<_l1%ABB`+~eLAV`^MfpW4%5>opdz8@uZd@QL3N;N$Dzh7Jed z7q-Dqg!ovlhL}kI3W2OMeI)jZufmi&EJ2HbDkZs4hgo~Y^{|#VvV-DsE)1}hGZ&7d zS(wMi`&AxK^G6sl|12qGvo<+ol+=V>qwixO8K{)3KNiH`b5|BAQm&YYb*#U1=RZx=Uh|lAerHDT$hk_B0ELT;_K2OB$ zU0u1la!nvoO)uVp>%+zhERzn0TS1R~COiO;Xy50;3MiFGHVF_fslq!*BqHM-AwJ?E zZu}?Ve?PX%B!tfhwlcknRO6HRM9|AiR+CEpTZ5S*q*^IECHVCcaS=CdKPA)vezN}t DQerw( diff --git a/App/en/HiGeom.resources.dll b/App/en/HiGeom.resources.dll index 5d567035c561fa715f8778d578bc766e7978275b..0886f0bebb7b422ff917f34a725f24059d531b8e 100644 GIT binary patch delta 231 zcmZorX;7Ka!J^sv`1-~kCuYXb&F7hUnFMAwSiLsuly={;%F9jp6sy+cH>`gxO!W*H z7)%%$^o{il^(;)a4K0ie(u|EQOwG(Kj8ZKVQ_Rhi5=~RhEzFIR%~LH6jSNhZOn|bR z71?u{IYSv38JHOu7(zEs=MrXOG~K+Kr=Bs`ltG)pkimk%h{1p%jlmcQEf`E0%oxnU zVyO(442cXWK%O~65|CxekP4PD2dYa3vOw~NV7(?lc@v1<$+di@tfmZl3Ak{*#;aaUe#83L!bH!2 zfx(24LEl)me5CZ# zx+mw#0dPsUs7h0M*B7ay;b5a?Gmf6QirhrYruH1F5WRRW?9xknmmLcTIRHtoC*K*l zH0#Xh&Y=&{sS#no2(U{3++eKa)iNq2Mx$wU8|@!_P#^v}qPN#S47a#F9kv`w3>Ig_ IG*R(Odu2~K^#A|> delta 231 zcmW-YF-inM5Ji8_xQK!{f_j3@7RKtSo+&4EJ%MdNm);hj)v$$G5n8x*eCs=jU>-sP -

+

Gets a sub-list view of the specified list within the given index range.

+
@@ -2001,23 +2002,28 @@ with the list items.

Parameters

src IList<TItem>
-
+

The source list.

+
beginIndex int
-
+

The starting index (inclusive).

+
endIndex int
-
+

The ending index (exclusive).

+

Returns

SubList<TItem>
-
+

A sub-list view of the specified range.

+

Type Parameters

TItem
-
+

The type of items in the list.

+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.SortedListUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.SortedListUtil.html index 45ee9a4..c77b95e 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.SortedListUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.SortedListUtil.html @@ -287,7 +287,8 @@ If return value is
+

Gets the ceil list index by seeking with the specified direction.

+
@@ -297,30 +298,37 @@ If return value is Parameters
src SortedList<TKey, V>
-
+

The source sorted list.

+
key TKey
-
+

The key to search for.

+
ceilListIndex int
-
+

The output ceil list index.

+
seekingStartListIndex int
-

start list index for seeking.

+

Start list index for seeking.

seekDirection SeekDirection
-
+

The seek direction. Default is Free.

+

Returns

SearchResult
-
+

The search result.

+

Type Parameters

TKey
-
+

The type of keys in the sorted list.

+
V
-
+

The type of values in the sorted list.

+
@@ -656,7 +664,8 @@ If return value is
+

Gets the floor list index by seeking with the specified direction.

+
@@ -666,30 +675,37 @@ If return value is Parameters
src SortedList<TKey, V>
-
+

The source sorted list.

+
key TKey
-
+

The key to search for.

+
floorListIndex int
-
+

The output floor list index.

+
seekingStartListIndex int
-

start list index for seeking.

+

Start list index for seeking.

seekDirection SeekDirection
-
+

The seek direction. Default is Free.

+

Returns

SearchResult
-
+

The search result.

+

Type Parameters

TKey
-
+

The type of keys in the sorted list.

+
V
-
+

The type of values in the sorted list.

+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.SubList-1.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.SubList-1.html index 61481fc..63b54a5 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.SubList-1.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.SubList-1.html @@ -6,7 +6,7 @@ - + @@ -97,7 +97,8 @@ Class SubList<T>
Assembly
HiGeom.dll
-
+

Represents a sub-list view of a source list within a specified index range.

+
@@ -109,7 +110,8 @@ Class SubList<T>

Type Parameters

T
-
+

The type of elements in the list.

+
@@ -258,7 +260,8 @@ Class SubList<T> -
+

Initializes a new instance.

+
@@ -268,11 +271,14 @@ Class SubList<T>

Parameters

source IList<T>
-
+

The source list.

+
beginIndex int
-
+

The starting index (inclusive).

+
endIndex int
-
+

The ending index (exclusive).

+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.html index 0fb45cf..a957677 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.html @@ -131,7 +131,8 @@ Classes
SubList<T>
-
+

Represents a sub-list view of a source list within a specified index range.

+
SynList<T>
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.CutterLocations.ClStrips.ClStrip.html b/App/wwwroot/HiAPI-docsite/api/Hi.CutterLocations.ClStrips.ClStrip.html index 0b20427..a15e76a 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.CutterLocations.ClStrips.ClStrip.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.CutterLocations.ClStrips.ClStrip.html @@ -954,7 +954,8 @@ A value of -1 indicates that the display should follow the end of the strip.

-
+

Limits the chart range based on the time range of the strip positions.

+
@@ -964,7 +965,8 @@ A value of -1 indicates that the display should follow the end of the strip.

Parameters

isLocked bool
-
+

Whether the strip positions are locked.

+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.MathUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.MathUtil.html index c145479..a987f1e 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.MathUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.MathUtil.html @@ -2447,7 +2447,8 @@ Otherwise, interpolate by ratio.

-
+

Returns the larger of two values.

+
@@ -2457,21 +2458,25 @@ Otherwise, interpolate by ratio.

Parameters

a T
-
+

The first value to compare.

+
b T
-
+

The second value to compare.

+

Returns

T
-
+

The larger of the two values.

+

Type Parameters

T
-
+

The type of values to compare.

+
@@ -2490,7 +2495,8 @@ Otherwise, interpolate by ratio.

-
+

Returns the smaller of two values.

+
@@ -2500,21 +2506,25 @@ Otherwise, interpolate by ratio.

Parameters

a T
-
+

The first value to compare.

+
b T
-
+

The second value to compare.

+

Returns

T
-
+

The smaller of the two values.

+

Type Parameters

T
-
+

The type of values to compare.

+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.ProxyProjectService.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.ProxyProjectService.html index 68f489b..81ad147 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.ProxyProjectService.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.ProxyProjectService.html @@ -290,37 +290,6 @@ Apply relative file path from - -

- MachiningProjectPath - -

- -
-
- -
-
public string MachiningProjectPath { get; set; }
-
- - - - - -

Property Value

-
-
string
-
-
- - - - - - - -

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeApi.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeApi.html index 0b60d3c..78bf405 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeApi.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeApi.html @@ -350,39 +350,6 @@ public static NcOptimizationEmbeddedLogMode EmbeddedLogMode { get; set; } - - -

- EnableAutoMapOnSelectionEnd - -

- -

Gets or sets whether to automatically map selections when they end.

-
-
- -
-
[JsAce]
-public bool EnableAutoMapOnSelectionEnd { get; set; }
-
- - - - - -

Property Value

-
-
bool
-
-
- - - - - - - -

@@ -449,6 +416,39 @@ public static bool EnableIndividualStepAdjustmentLog { get; set; } + + +

+ EnableMapOnSelectionEnd + +

+ +

Gets or sets whether to automatically map selections when they end.

+
+
+ +
+
[JsAce]
+public bool EnableMapOnSelectionEnd { get; set; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + + +

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.CsvNcStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.CsvNcStep.html index 7063a60..7a8b9e9 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.CsvNcStep.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.CsvNcStep.html @@ -264,38 +264,6 @@ Class CsvNcStep - - -

- ActualTimeTag - -

- -

Gets or sets the column title for time in the CSV.

-
-
- -
-
public static string ActualTimeTag { get; set; }
-
- - - - - -

Property Value

-
-
string
-
-
- - - - - - - -

@@ -360,102 +328,6 @@ Class CsvNcStep - - -

- FileNoTag - -

- -

Gets or sets the column title for file number in the CSV.

-
-
- -
-
public static string FileNoTag { get; set; }
-
- - - - - -

Property Value

-
-
string
-
-
- - - - - - - - - - -

- LineNoTag - -

- -

Gets or sets the column title for line number in the CSV.

-
-
- -
-
public static string LineNoTag { get; set; }
-
- - - - - -

Property Value

-
-
string
-
-
- - - - - - - - - - -

- McTag - -

- -

Gets or sets the column title for machine coordinates in the CSV.

-
-
- -
-
public static string McTag { get; set; }
-
- - - - - -

Property Value

-
-
string
-
-
- - - - - - - -

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.MappingUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.MappingUtil.html new file mode 100644 index 0000000..a1aee9c --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.MappingUtil.html @@ -0,0 +1,674 @@ + + + + + Class MappingUtil | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class MappingUtil +

+ +
+
Namespace
Hi.Mapping
+
Assembly
HiMech.dll
+
+ +
+
+ +
+
public static class MappingUtil
+
+ + + + +
+
Inheritance
+
+ +
MappingUtil
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Fields +

+ + + +

+ ActualTimeTag + +

+ +

Gets or sets the column title for actual time in the CSV. +The actual time basically obtained by the external data from controller.

+
+
+ +
+
public const string ActualTimeTag = "ActualTime"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ CutterLocationPrefix + +

+ +

Cutter Location Prefix Tag for CSV Parsing.

+
+
+ +
+
public const string CutterLocationPrefix = "CL."
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ DurationTag + +

+ +

Duration tag for CSV parsing.

+
+
+ +
+
public const string DurationTag = "StepDuration"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ FeedrateTag_mmdmin + +

+ +

Feedrate for Simulator Tag for CSV Parsing.

+
+
+ +
+
public const string FeedrateTag_mmdmin = "Feedrate_mmdmin"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ FileNoTag + +

+ +

Gets or sets the column title for file number in the CSV.

+
+
+ +
+
public const string FileNoTag = "FileNo"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ HolderMomentPrefix + +

+ +
+
+ +
+
public const string HolderMomentPrefix = "Holder.M"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ LineBeginCsScriptTag + +

+ +

LineBeginCsScript Tag for CSV Parsing.

+
+
+ +
+
public const string LineBeginCsScriptTag = "LineBeginCsScript"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ LineEndCsScriptTag + +

+ +

LineEndCsScript Tag for CSV Parsing.

+
+
+ +
+
public const string LineEndCsScriptTag = "LineEndCsScript"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ LineNoTag + +

+ +

Gets or sets the column title for line number in the CSV.

+
+
+ +
+
public const string LineNoTag = "LineNo"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ MachineCoordinatePrefix + +

+ +

Machine Coordinate Prefix Tag for CSV Parsing.

+
+
+ +
+
public const string MachineCoordinatePrefix = "MC."
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ SpindleDirectionTag + +

+ +

Spindle direction Tag for CSV Parsing.

+
+
+ +
+
public const string SpindleDirectionTag = "Spd.Dir."
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ SpindleSpeedTag_rpm + +

+ +

Spindle speed for Simulator Tag for CSV Parsing.

+
+
+ +
+
public const string SpindleSpeedTag_rpm = "SpindleSpeed_rpm"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ TimeTag + +

+ +

Gets or sets the column title for time in the CSV. +The time generally obtained by the simulated data.

+
+
+ +
+
public const string TimeTag = "Time"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ ToolForcePrefix + +

+ +
+
+ +
+
public const string ToolForcePrefix = "Tool.F"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ ToolIdTag + +

+ +

Tool ID Tag for CSV Parsing.

+
+
+ +
+
public const string ToolIdTag = "ToolId"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ WorkpieceForcePrefix + +

+ +
+
+ +
+
public const string WorkpieceForcePrefix = "Workpiece.F"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.html index 78584d9..2a817a3 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.html @@ -105,6 +105,10 @@ Classes This class manages the loading and caching of time shot data from measurement files.

+
+
MappingUtil
+
+
StepTimeShotUtil

Utility methods for working with time-based shots (measurements) and mapping them to machining steps.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html index 63e71cf..8930725 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html @@ -280,10 +280,10 @@ Class CsvRunnerConfig - + -

- CutterLocationPrefixTag +

+ CutterLocationPrefix

@@ -292,7 +292,7 @@ Class CsvRunnerConfig
-
public string CutterLocationPrefixTag { get; set; }
+
public string CutterLocationPrefix { get; set; }
@@ -440,10 +440,10 @@ Class CsvRunnerConfig - + -

- MachineCoordinatePrefixTag +

+ MachineCoordinatePrefix

@@ -452,7 +452,7 @@ Class CsvRunnerConfig
-
public string MachineCoordinatePrefixTag { get; set; }
+
public string MachineCoordinatePrefix { get; set; }
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Parallels.DistributedQueueTaskStarter.html b/App/wwwroot/HiAPI-docsite/api/Hi.Parallels.DistributedQueueTaskStarter.html index 5155968..bca5877 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Parallels.DistributedQueueTaskStarter.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Parallels.DistributedQueueTaskStarter.html @@ -254,7 +254,8 @@ Class DistributedQueueTaskStarter -
+

Gets or sets the thread priority for executing tasks. Default is BelowNormal.

+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.WinForm.Disp.RenderingCanvas.html b/App/wwwroot/HiAPI-docsite/api/Hi.WinForm.Disp.RenderingCanvas.html index 01acfaa..2e36f22 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.WinForm.Disp.RenderingCanvas.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.WinForm.Disp.RenderingCanvas.html @@ -1617,7 +1617,7 @@ Class RenderingCanvas -

Processes Windows messages.

+

Processes Windows messages, handling touch input and forwarding other messages to the base class.

@@ -1628,7 +1628,7 @@ Class RenderingCanvas

Parameters

m Message
-

The Windows Message to process.

+

The Windows message to process.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.WinForm.Disp.RenderingForm.html b/App/wwwroot/HiAPI-docsite/api/Hi.WinForm.Disp.RenderingForm.html index ce7a35d..38c64c4 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.WinForm.Disp.RenderingForm.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.WinForm.Disp.RenderingForm.html @@ -1789,7 +1789,8 @@ This class is usually used for debug due to its simplicity.

-
+

Gets or sets the displayee object for rendering.

+
diff --git a/App/wwwroot/HiAPI-docsite/api/toc.html b/App/wwwroot/HiAPI-docsite/api/toc.html index 46e017e..a91aae6 100644 --- a/App/wwwroot/HiAPI-docsite/api/toc.html +++ b/App/wwwroot/HiAPI-docsite/api/toc.html @@ -1397,6 +1397,9 @@
  • ITimeShot
  • +
  • + MappingUtil +
  • StepTimeShotUtil
  • diff --git a/App/wwwroot/HiAPI-docsite/api/toc.json b/App/wwwroot/HiAPI-docsite/api/toc.json index e4f6630..0fa7240 100644 --- a/App/wwwroot/HiAPI-docsite/api/toc.json +++ b/App/wwwroot/HiAPI-docsite/api/toc.json @@ -1,2 +1,2 @@ -{"items":[{"name":"Hi.Cbtr","href":"Hi.Cbtr.html","topicHref":"Hi.Cbtr.html","topicUid":"Hi.Cbtr","type":"Namespace","items":[{"name":"CachedTris","href":"Hi.Cbtr.CachedTris.html","topicHref":"Hi.Cbtr.CachedTris.html","topicUid":"Hi.Cbtr.CachedTris","type":"Class"},{"name":"CachedTris.SweepingMode","href":"Hi.Cbtr.CachedTris.SweepingMode.html","topicHref":"Hi.Cbtr.CachedTris.SweepingMode.html","topicUid":"Hi.Cbtr.CachedTris.SweepingMode","type":"Enum"},{"name":"CbtrPickable","href":"Hi.Cbtr.CbtrPickable.html","topicHref":"Hi.Cbtr.CbtrPickable.html","topicUid":"Hi.Cbtr.CbtrPickable","type":"Class"},{"name":"CubeTree","href":"Hi.Cbtr.CubeTree.html","topicHref":"Hi.Cbtr.CubeTree.html","topicUid":"Hi.Cbtr.CubeTree","type":"Class"},{"name":"CubeTree.diff_response_func_t","href":"Hi.Cbtr.CubeTree.diff_response_func_t.html","topicHref":"Hi.Cbtr.CubeTree.diff_response_func_t.html","topicUid":"Hi.Cbtr.CubeTree.diff_response_func_t","type":"Delegate"},{"name":"CubeTreeFile","href":"Hi.Cbtr.CubeTreeFile.html","topicHref":"Hi.Cbtr.CubeTreeFile.html","topicUid":"Hi.Cbtr.CubeTreeFile","type":"Class"},{"name":"DiffAttachment","href":"Hi.Cbtr.DiffAttachment.html","topicHref":"Hi.Cbtr.DiffAttachment.html","topicUid":"Hi.Cbtr.DiffAttachment","type":"Class"},{"name":"GeomBoolCache","href":"Hi.Cbtr.GeomBoolCache.html","topicHref":"Hi.Cbtr.GeomBoolCache.html","topicUid":"Hi.Cbtr.GeomBoolCache","type":"Class"},{"name":"GeomBoolCacheEnum","href":"Hi.Cbtr.GeomBoolCacheEnum.html","topicHref":"Hi.Cbtr.GeomBoolCacheEnum.html","topicUid":"Hi.Cbtr.GeomBoolCacheEnum","type":"Enum"},{"name":"IGetInitStickConvex","href":"Hi.Cbtr.IGetInitStickConvex.html","topicHref":"Hi.Cbtr.IGetInitStickConvex.html","topicUid":"Hi.Cbtr.IGetInitStickConvex","type":"Interface"},{"name":"InitStickConvex","href":"Hi.Cbtr.InitStickConvex.html","topicHref":"Hi.Cbtr.InitStickConvex.html","topicUid":"Hi.Cbtr.InitStickConvex","type":"Class"},{"name":"LsStl","href":"Hi.Cbtr.LsStl.html","topicHref":"Hi.Cbtr.LsStl.html","topicUid":"Hi.Cbtr.LsStl","type":"Class"},{"name":"Substraction","href":"Hi.Cbtr.Substraction.html","topicHref":"Hi.Cbtr.Substraction.html","topicUid":"Hi.Cbtr.Substraction","type":"Class"},{"name":"UnhighlightablePickable","href":"Hi.Cbtr.UnhighlightablePickable.html","topicHref":"Hi.Cbtr.UnhighlightablePickable.html","topicUid":"Hi.Cbtr.UnhighlightablePickable","type":"Class"},{"name":"UnmanagedSubstraction","href":"Hi.Cbtr.UnmanagedSubstraction.html","topicHref":"Hi.Cbtr.UnmanagedSubstraction.html","topicUid":"Hi.Cbtr.UnmanagedSubstraction","type":"Class"},{"name":"node_diff_t","href":"Hi.Cbtr.node_diff_t.html","topicHref":"Hi.Cbtr.node_diff_t.html","topicUid":"Hi.Cbtr.node_diff_t","type":"Struct"}]},{"name":"Hi.Collision","href":"Hi.Collision.html","topicHref":"Hi.Collision.html","topicUid":"Hi.Collision","type":"Namespace","items":[{"name":"AnchoredCollidableLeaf","href":"Hi.Collision.AnchoredCollidableLeaf.html","topicHref":"Hi.Collision.AnchoredCollidableLeaf.html","topicUid":"Hi.Collision.AnchoredCollidableLeaf","type":"Class"},{"name":"AnchoredCollidablePair","href":"Hi.Collision.AnchoredCollidablePair.html","topicHref":"Hi.Collision.AnchoredCollidablePair.html","topicUid":"Hi.Collision.AnchoredCollidablePair","type":"Class"},{"name":"CollidableStl","href":"Hi.Collision.CollidableStl.html","topicHref":"Hi.Collision.CollidableStl.html","topicUid":"Hi.Collision.CollidableStl","type":"Class"},{"name":"CollisionFlag","href":"Hi.Collision.CollisionFlag.html","topicHref":"Hi.Collision.CollisionFlag.html","topicUid":"Hi.Collision.CollisionFlag","type":"Enum"},{"name":"CollisionIndexPair","href":"Hi.Collision.CollisionIndexPair.html","topicHref":"Hi.Collision.CollisionIndexPair.html","topicUid":"Hi.Collision.CollisionIndexPair","type":"Class"},{"name":"CollisionUtil","href":"Hi.Collision.CollisionUtil.html","topicHref":"Hi.Collision.CollisionUtil.html","topicUid":"Hi.Collision.CollisionUtil","type":"Class"},{"name":"FuncAnchoredCollidable","href":"Hi.Collision.FuncAnchoredCollidable.html","topicHref":"Hi.Collision.FuncAnchoredCollidable.html","topicUid":"Hi.Collision.FuncAnchoredCollidable","type":"Class"},{"name":"IAnchoredCollidableBased","href":"Hi.Collision.IAnchoredCollidableBased.html","topicHref":"Hi.Collision.IAnchoredCollidableBased.html","topicUid":"Hi.Collision.IAnchoredCollidableBased","type":"Interface"},{"name":"IAnchoredCollidableLeaf","href":"Hi.Collision.IAnchoredCollidableLeaf.html","topicHref":"Hi.Collision.IAnchoredCollidableLeaf.html","topicUid":"Hi.Collision.IAnchoredCollidableLeaf","type":"Interface"},{"name":"IAnchoredCollidableNode","href":"Hi.Collision.IAnchoredCollidableNode.html","topicHref":"Hi.Collision.IAnchoredCollidableNode.html","topicUid":"Hi.Collision.IAnchoredCollidableNode","type":"Interface"},{"name":"IAnchoredCollidableStem","href":"Hi.Collision.IAnchoredCollidableStem.html","topicHref":"Hi.Collision.IAnchoredCollidableStem.html","topicUid":"Hi.Collision.IAnchoredCollidableStem","type":"Interface"},{"name":"ICollidable","href":"Hi.Collision.ICollidable.html","topicHref":"Hi.Collision.ICollidable.html","topicUid":"Hi.Collision.ICollidable","type":"Interface"},{"name":"ICollidee","href":"Hi.Collision.ICollidee.html","topicHref":"Hi.Collision.ICollidee.html","topicUid":"Hi.Collision.ICollidee","type":"Interface"},{"name":"ICollisionArena","href":"Hi.Collision.ICollisionArena.html","topicHref":"Hi.Collision.ICollisionArena.html","topicUid":"Hi.Collision.ICollisionArena","type":"Interface"},{"name":"ICollisionIndex","href":"Hi.Collision.ICollisionIndex.html","topicHref":"Hi.Collision.ICollisionIndex.html","topicUid":"Hi.Collision.ICollisionIndex","type":"Interface"},{"name":"IGetAnchoredCollidablePairs","href":"Hi.Collision.IGetAnchoredCollidablePairs.html","topicHref":"Hi.Collision.IGetAnchoredCollidablePairs.html","topicUid":"Hi.Collision.IGetAnchoredCollidablePairs","type":"Interface"},{"name":"IGetCollidable","href":"Hi.Collision.IGetCollidable.html","topicHref":"Hi.Collision.IGetCollidable.html","topicUid":"Hi.Collision.IGetCollidable","type":"Interface"},{"name":"IGetCollisionIndexPairs","href":"Hi.Collision.IGetCollisionIndexPairs.html","topicHref":"Hi.Collision.IGetCollisionIndexPairs.html","topicUid":"Hi.Collision.IGetCollisionIndexPairs","type":"Interface"},{"name":"IGetDefaultCollidablePairs","href":"Hi.Collision.IGetDefaultCollidablePairs.html","topicHref":"Hi.Collision.IGetDefaultCollidablePairs.html","topicUid":"Hi.Collision.IGetDefaultCollidablePairs","type":"Interface"},{"name":"IGetTriTree","href":"Hi.Collision.IGetTriTree.html","topicHref":"Hi.Collision.IGetTriTree.html","topicUid":"Hi.Collision.IGetTriTree","type":"Interface"},{"name":"MechCollisionResult","href":"Hi.Collision.MechCollisionResult.html","topicHref":"Hi.Collision.MechCollisionResult.html","topicUid":"Hi.Collision.MechCollisionResult","type":"Class"},{"name":"MechCollisionUtil","href":"Hi.Collision.MechCollisionUtil.html","topicHref":"Hi.Collision.MechCollisionUtil.html","topicUid":"Hi.Collision.MechCollisionUtil","type":"Class"},{"name":"TriTree","href":"Hi.Collision.TriTree.html","topicHref":"Hi.Collision.TriTree.html","topicUid":"Hi.Collision.TriTree","type":"Class"}]},{"name":"Hi.Collisions","href":"Hi.Collisions.html","topicHref":"Hi.Collisions.html","topicUid":"Hi.Collisions","type":"Namespace","items":[{"name":"AnchoredCollidabled","href":"Hi.Collisions.AnchoredCollidabled.html","topicHref":"Hi.Collisions.AnchoredCollidabled.html","topicUid":"Hi.Collisions.AnchoredCollidabled","type":"Class"},{"name":"IAnchoredCollidabled","href":"Hi.Collisions.IAnchoredCollidabled.html","topicHref":"Hi.Collisions.IAnchoredCollidabled.html","topicUid":"Hi.Collisions.IAnchoredCollidabled","type":"Interface"}]},{"name":"Hi.Coloring","href":"Hi.Coloring.html","topicHref":"Hi.Coloring.html","topicUid":"Hi.Coloring","type":"Namespace","items":[{"name":"ColorUtil","href":"Hi.Coloring.ColorUtil.html","topicHref":"Hi.Coloring.ColorUtil.html","topicUid":"Hi.Coloring.ColorUtil","type":"Class"},{"name":"DictionaryColorGuide","href":"Hi.Coloring.DictionaryColorGuide.html","topicHref":"Hi.Coloring.DictionaryColorGuide.html","topicUid":"Hi.Coloring.DictionaryColorGuide","type":"Class"},{"name":"DiscreteQuantityColorGuide","href":"Hi.Coloring.DiscreteQuantityColorGuide.html","topicHref":"Hi.Coloring.DiscreteQuantityColorGuide.html","topicUid":"Hi.Coloring.DiscreteQuantityColorGuide","type":"Class"},{"name":"FilteredColorGuide","href":"Hi.Coloring.FilteredColorGuide.html","topicHref":"Hi.Coloring.FilteredColorGuide.html","topicUid":"Hi.Coloring.FilteredColorGuide","type":"Class"},{"name":"FuncRangeColorGuide","href":"Hi.Coloring.FuncRangeColorGuide.html","topicHref":"Hi.Coloring.FuncRangeColorGuide.html","topicUid":"Hi.Coloring.FuncRangeColorGuide","type":"Class"},{"name":"IColorGuide","href":"Hi.Coloring.IColorGuide.html","topicHref":"Hi.Coloring.IColorGuide.html","topicUid":"Hi.Coloring.IColorGuide","type":"Interface"},{"name":"IColorGuideProperty","href":"Hi.Coloring.IColorGuideProperty.html","topicHref":"Hi.Coloring.IColorGuideProperty.html","topicUid":"Hi.Coloring.IColorGuideProperty","type":"Interface"},{"name":"IGetColorGuide","href":"Hi.Coloring.IGetColorGuide.html","topicHref":"Hi.Coloring.IGetColorGuide.html","topicUid":"Hi.Coloring.IGetColorGuide","type":"Interface"},{"name":"IGetRangeColorRule","href":"Hi.Coloring.IGetRangeColorRule.html","topicHref":"Hi.Coloring.IGetRangeColorRule.html","topicUid":"Hi.Coloring.IGetRangeColorRule","type":"Interface"},{"name":"IGetRgb","href":"Hi.Coloring.IGetRgb.html","topicHref":"Hi.Coloring.IGetRgb.html","topicUid":"Hi.Coloring.IGetRgb","type":"Interface"},{"name":"IGetRgbWithPriority","href":"Hi.Coloring.IGetRgbWithPriority.html","topicHref":"Hi.Coloring.IGetRgbWithPriority.html","topicUid":"Hi.Coloring.IGetRgbWithPriority","type":"Interface"},{"name":"PlainColorGuide","href":"Hi.Coloring.PlainColorGuide.html","topicHref":"Hi.Coloring.PlainColorGuide.html","topicUid":"Hi.Coloring.PlainColorGuide","type":"Class"},{"name":"QuantityColorGuide","href":"Hi.Coloring.QuantityColorGuide.html","topicHref":"Hi.Coloring.QuantityColorGuide.html","topicUid":"Hi.Coloring.QuantityColorGuide","type":"Class"},{"name":"RangeColorRule","href":"Hi.Coloring.RangeColorRule.html","topicHref":"Hi.Coloring.RangeColorRule.html","topicUid":"Hi.Coloring.RangeColorRule","type":"Class"},{"name":"RatioRgbFuncEnum","href":"Hi.Coloring.RatioRgbFuncEnum.html","topicHref":"Hi.Coloring.RatioRgbFuncEnum.html","topicUid":"Hi.Coloring.RatioRgbFuncEnum","type":"Enum"},{"name":"RgbSeed","href":"Hi.Coloring.RgbSeed.html","topicHref":"Hi.Coloring.RgbSeed.html","topicUid":"Hi.Coloring.RgbSeed","type":"Class"}]},{"name":"Hi.Common","href":"Hi.Common.html","topicHref":"Hi.Common.html","topicUid":"Hi.Common","type":"Namespace","items":[{"name":"BinIoUtil","href":"Hi.Common.BinIoUtil.html","topicHref":"Hi.Common.BinIoUtil.html","topicUid":"Hi.Common.BinIoUtil","type":"Class"},{"name":"BitUtil","href":"Hi.Common.BitUtil.html","topicHref":"Hi.Common.BitUtil.html","topicUid":"Hi.Common.BitUtil","type":"Class"},{"name":"BlockingTimer","href":"Hi.Common.BlockingTimer.html","topicHref":"Hi.Common.BlockingTimer.html","topicUid":"Hi.Common.BlockingTimer","type":"Class"},{"name":"BytesUtil","href":"Hi.Common.BytesUtil.html","topicHref":"Hi.Common.BytesUtil.html","topicUid":"Hi.Common.BytesUtil","type":"Class"},{"name":"ConcurrentTimeCounter","href":"Hi.Common.ConcurrentTimeCounter.html","topicHref":"Hi.Common.ConcurrentTimeCounter.html","topicUid":"Hi.Common.ConcurrentTimeCounter","type":"Class"},{"name":"ConsoleUtil","href":"Hi.Common.ConsoleUtil.html","topicHref":"Hi.Common.ConsoleUtil.html","topicUid":"Hi.Common.ConsoleUtil","type":"Class"},{"name":"CppLogUtil","href":"Hi.Common.CppLogUtil.html","topicHref":"Hi.Common.CppLogUtil.html","topicUid":"Hi.Common.CppLogUtil","type":"Class"},{"name":"CppLogUtil.LogDelegate","href":"Hi.Common.CppLogUtil.LogDelegate.html","topicHref":"Hi.Common.CppLogUtil.LogDelegate.html","topicUid":"Hi.Common.CppLogUtil.LogDelegate","type":"Delegate"},{"name":"CultureUtil","href":"Hi.Common.CultureUtil.html","topicHref":"Hi.Common.CultureUtil.html","topicUid":"Hi.Common.CultureUtil","type":"Class"},{"name":"DebugUtil","href":"Hi.Common.DebugUtil.html","topicHref":"Hi.Common.DebugUtil.html","topicUid":"Hi.Common.DebugUtil","type":"Class"},{"name":"DuplicateUtil","href":"Hi.Common.DuplicateUtil.html","topicHref":"Hi.Common.DuplicateUtil.html","topicUid":"Hi.Common.DuplicateUtil","type":"Class"},{"name":"EnumUtil","href":"Hi.Common.EnumUtil.html","topicHref":"Hi.Common.EnumUtil.html","topicUid":"Hi.Common.EnumUtil","type":"Class"},{"name":"EnumerablePlayer","href":"Hi.Common.EnumerablePlayer.html","topicHref":"Hi.Common.EnumerablePlayer.html","topicUid":"Hi.Common.EnumerablePlayer","type":"Class"},{"name":"ExceptionUtil","href":"Hi.Common.ExceptionUtil.html","topicHref":"Hi.Common.ExceptionUtil.html","topicUid":"Hi.Common.ExceptionUtil","type":"Class"},{"name":"IAbstractNote","href":"Hi.Common.IAbstractNote.html","topicHref":"Hi.Common.IAbstractNote.html","topicUid":"Hi.Common.IAbstractNote","type":"Interface"},{"name":"IBinaryIo","href":"Hi.Common.IBinaryIo.html","topicHref":"Hi.Common.IBinaryIo.html","topicUid":"Hi.Common.IBinaryIo","type":"Interface"},{"name":"IClearCache","href":"Hi.Common.IClearCache.html","topicHref":"Hi.Common.IClearCache.html","topicUid":"Hi.Common.IClearCache","type":"Interface"},{"name":"IDuplicate","href":"Hi.Common.IDuplicate.html","topicHref":"Hi.Common.IDuplicate.html","topicUid":"Hi.Common.IDuplicate","type":"Interface"},{"name":"IGetQuantityByKey","href":"Hi.Common.IGetQuantityByKey.html","topicHref":"Hi.Common.IGetQuantityByKey.html","topicUid":"Hi.Common.IGetQuantityByKey","type":"Interface"},{"name":"IGetSelectionName","href":"Hi.Common.IGetSelectionName.html","topicHref":"Hi.Common.IGetSelectionName.html","topicUid":"Hi.Common.IGetSelectionName","type":"Interface"},{"name":"INameNote","href":"Hi.Common.INameNote.html","topicHref":"Hi.Common.INameNote.html","topicUid":"Hi.Common.INameNote","type":"Interface"},{"name":"IPreferredFileName","href":"Hi.Common.IPreferredFileName.html","topicHref":"Hi.Common.IPreferredFileName.html","topicUid":"Hi.Common.IPreferredFileName","type":"Interface"},{"name":"ISourceFile","href":"Hi.Common.ISourceFile.html","topicHref":"Hi.Common.ISourceFile.html","topicUid":"Hi.Common.ISourceFile","type":"Interface"},{"name":"IUpdateByContent","href":"Hi.Common.IUpdateByContent.html","topicHref":"Hi.Common.IUpdateByContent.html","topicUid":"Hi.Common.IUpdateByContent","type":"Interface"},{"name":"IUriGetter","href":"Hi.Common.IUriGetter.html","topicHref":"Hi.Common.IUriGetter.html","topicUid":"Hi.Common.IUriGetter","type":"Interface"},{"name":"IWriteBin","href":"Hi.Common.IWriteBin.html","topicHref":"Hi.Common.IWriteBin.html","topicUid":"Hi.Common.IWriteBin","type":"Interface"},{"name":"IndexSegment","href":"Hi.Common.IndexSegment.html","topicHref":"Hi.Common.IndexSegment.html","topicUid":"Hi.Common.IndexSegment","type":"Class"},{"name":"IntegerKeyDictionaryConverter","href":"Hi.Common.IntegerKeyDictionaryConverter.html","topicHref":"Hi.Common.IntegerKeyDictionaryConverter.html","topicUid":"Hi.Common.IntegerKeyDictionaryConverter","type":"Class"},{"name":"IntegerKeyDictionaryConverter","href":"Hi.Common.IntegerKeyDictionaryConverter-1.html","topicHref":"Hi.Common.IntegerKeyDictionaryConverter-1.html","topicUid":"Hi.Common.IntegerKeyDictionaryConverter`1","type":"Class"},{"name":"InternalException","href":"Hi.Common.InternalException.html","topicHref":"Hi.Common.InternalException.html","topicUid":"Hi.Common.InternalException","type":"Class"},{"name":"InvokeUtil","href":"Hi.Common.InvokeUtil.html","topicHref":"Hi.Common.InvokeUtil.html","topicUid":"Hi.Common.InvokeUtil","type":"Class"},{"name":"JsonUtil","href":"Hi.Common.JsonUtil.html","topicHref":"Hi.Common.JsonUtil.html","topicUid":"Hi.Common.JsonUtil","type":"Class"},{"name":"LooseRunner","href":"Hi.Common.LooseRunner.html","topicHref":"Hi.Common.LooseRunner.html","topicUid":"Hi.Common.LooseRunner","type":"Class"},{"name":"LooseRunner.MergedCancellationTokenRun","href":"Hi.Common.LooseRunner.MergedCancellationTokenRun.html","topicHref":"Hi.Common.LooseRunner.MergedCancellationTokenRun.html","topicUid":"Hi.Common.LooseRunner.MergedCancellationTokenRun","type":"Delegate"},{"name":"ManualUtil","href":"Hi.Common.ManualUtil.html","topicHref":"Hi.Common.ManualUtil.html","topicUid":"Hi.Common.ManualUtil","type":"Class"},{"name":"MaskUtil","href":"Hi.Common.MaskUtil.html","topicHref":"Hi.Common.MaskUtil.html","topicUid":"Hi.Common.MaskUtil","type":"Class"},{"name":"NameUtil","href":"Hi.Common.NameUtil.html","topicHref":"Hi.Common.NameUtil.html","topicUid":"Hi.Common.NameUtil","type":"Class"},{"name":"PacePlayee","href":"Hi.Common.PacePlayee.html","topicHref":"Hi.Common.PacePlayee.html","topicUid":"Hi.Common.PacePlayee","type":"Class"},{"name":"PacePlayer","href":"Hi.Common.PacePlayer.html","topicHref":"Hi.Common.PacePlayer.html","topicUid":"Hi.Common.PacePlayer","type":"Class"},{"name":"Pair","href":"Hi.Common.Pair-2.html","topicHref":"Hi.Common.Pair-2.html","topicUid":"Hi.Common.Pair`2","type":"Class"},{"name":"Range","href":"Hi.Common.Range-1.html","topicHref":"Hi.Common.Range-1.html","topicUid":"Hi.Common.Range`1","type":"Class"},{"name":"ResourceUtil","href":"Hi.Common.ResourceUtil.html","topicHref":"Hi.Common.ResourceUtil.html","topicUid":"Hi.Common.ResourceUtil","type":"Class"},{"name":"RoutineBlocker","href":"Hi.Common.RoutineBlocker.html","topicHref":"Hi.Common.RoutineBlocker.html","topicUid":"Hi.Common.RoutineBlocker","type":"Class"},{"name":"RoutineBlocker0","href":"Hi.Common.RoutineBlocker0.html","topicHref":"Hi.Common.RoutineBlocker0.html","topicUid":"Hi.Common.RoutineBlocker0","type":"Class"},{"name":"SearchResult","href":"Hi.Common.SearchResult.html","topicHref":"Hi.Common.SearchResult.html","topicUid":"Hi.Common.SearchResult","type":"Enum"},{"name":"SeqPairUtil","href":"Hi.Common.SeqPairUtil.html","topicHref":"Hi.Common.SeqPairUtil.html","topicUid":"Hi.Common.SeqPairUtil","type":"Class"},{"name":"SeqPair","href":"Hi.Common.SeqPair-1.html","topicHref":"Hi.Common.SeqPair-1.html","topicUid":"Hi.Common.SeqPair`1","type":"Class"},{"name":"ServerFileExplorerConfig","href":"Hi.Common.ServerFileExplorerConfig.html","topicHref":"Hi.Common.ServerFileExplorerConfig.html","topicUid":"Hi.Common.ServerFileExplorerConfig","type":"Class"},{"name":"Slice","href":"Hi.Common.Slice.html","topicHref":"Hi.Common.Slice.html","topicUid":"Hi.Common.Slice","type":"Class"},{"name":"StringLocalizer","href":"Hi.Common.StringLocalizer.html","topicHref":"Hi.Common.StringLocalizer.html","topicUid":"Hi.Common.StringLocalizer","type":"Class"},{"name":"StringUtil","href":"Hi.Common.StringUtil.html","topicHref":"Hi.Common.StringUtil.html","topicUid":"Hi.Common.StringUtil","type":"Class"},{"name":"TaskUtil","href":"Hi.Common.TaskUtil.html","topicHref":"Hi.Common.TaskUtil.html","topicUid":"Hi.Common.TaskUtil","type":"Class"},{"name":"TimeCounter","href":"Hi.Common.TimeCounter.html","topicHref":"Hi.Common.TimeCounter.html","topicUid":"Hi.Common.TimeCounter","type":"Class"}]},{"name":"Hi.Common.Collections","href":"Hi.Common.Collections.html","topicHref":"Hi.Common.Collections.html","topicUid":"Hi.Common.Collections","type":"Namespace","items":[{"name":"DictionaryUtil","href":"Hi.Common.Collections.DictionaryUtil.html","topicHref":"Hi.Common.Collections.DictionaryUtil.html","topicUid":"Hi.Common.Collections.DictionaryUtil","type":"Class"},{"name":"EnumerableUtil","href":"Hi.Common.Collections.EnumerableUtil.html","topicHref":"Hi.Common.Collections.EnumerableUtil.html","topicUid":"Hi.Common.Collections.EnumerableUtil","type":"Class"},{"name":"FixedSizeConcurrentLinkedListUtil","href":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil.html","topicHref":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil.html","topicUid":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil","type":"Class"},{"name":"ListIndexBasedEnumerable","href":"Hi.Common.Collections.ListIndexBasedEnumerable-1.html","topicHref":"Hi.Common.Collections.ListIndexBasedEnumerable-1.html","topicUid":"Hi.Common.Collections.ListIndexBasedEnumerable`1","type":"Class"},{"name":"ListIndexBasedIEnumerator","href":"Hi.Common.Collections.ListIndexBasedIEnumerator-1.html","topicHref":"Hi.Common.Collections.ListIndexBasedIEnumerator-1.html","topicUid":"Hi.Common.Collections.ListIndexBasedIEnumerator`1","type":"Class"},{"name":"ListUtil","href":"Hi.Common.Collections.ListUtil.html","topicHref":"Hi.Common.Collections.ListUtil.html","topicUid":"Hi.Common.Collections.ListUtil","type":"Class"},{"name":"ListUtil.OuterPolationMode","href":"Hi.Common.Collections.ListUtil.OuterPolationMode.html","topicHref":"Hi.Common.Collections.ListUtil.OuterPolationMode.html","topicUid":"Hi.Common.Collections.ListUtil.OuterPolationMode","type":"Enum"},{"name":"SearchTargetMode","href":"Hi.Common.Collections.SearchTargetMode.html","topicHref":"Hi.Common.Collections.SearchTargetMode.html","topicUid":"Hi.Common.Collections.SearchTargetMode","type":"Enum"},{"name":"SeekDirection","href":"Hi.Common.Collections.SeekDirection.html","topicHref":"Hi.Common.Collections.SeekDirection.html","topicUid":"Hi.Common.Collections.SeekDirection","type":"Enum"},{"name":"SortedListUtil","href":"Hi.Common.Collections.SortedListUtil.html","topicHref":"Hi.Common.Collections.SortedListUtil.html","topicUid":"Hi.Common.Collections.SortedListUtil","type":"Class"},{"name":"SubList","href":"Hi.Common.Collections.SubList-1.html","topicHref":"Hi.Common.Collections.SubList-1.html","topicUid":"Hi.Common.Collections.SubList`1","type":"Class"},{"name":"SynList","href":"Hi.Common.Collections.SynList-1.html","topicHref":"Hi.Common.Collections.SynList-1.html","topicUid":"Hi.Common.Collections.SynList`1","type":"Class"}]},{"name":"Hi.Common.CsvUtils","href":"Hi.Common.CsvUtils.html","topicHref":"Hi.Common.CsvUtils.html","topicUid":"Hi.Common.CsvUtils","type":"Namespace","items":[{"name":"CsvInputKit","href":"Hi.Common.CsvUtils.CsvInputKit.html","topicHref":"Hi.Common.CsvUtils.CsvInputKit.html","topicUid":"Hi.Common.CsvUtils.CsvInputKit","type":"Class"},{"name":"CsvOutputKit","href":"Hi.Common.CsvUtils.CsvOutputKit.html","topicHref":"Hi.Common.CsvUtils.CsvOutputKit.html","topicUid":"Hi.Common.CsvUtils.CsvOutputKit","type":"Class"},{"name":"CsvUtil","href":"Hi.Common.CsvUtils.CsvUtil.html","topicHref":"Hi.Common.CsvUtils.CsvUtil.html","topicUid":"Hi.Common.CsvUtils.CsvUtil","type":"Class"},{"name":"ICsvRowIo","href":"Hi.Common.CsvUtils.ICsvRowIo.html","topicHref":"Hi.Common.CsvUtils.ICsvRowIo.html","topicUid":"Hi.Common.CsvUtils.ICsvRowIo","type":"Interface"},{"name":"IGetCsvDictionary","href":"Hi.Common.CsvUtils.IGetCsvDictionary.html","topicHref":"Hi.Common.CsvUtils.IGetCsvDictionary.html","topicUid":"Hi.Common.CsvUtils.IGetCsvDictionary","type":"Interface"}]},{"name":"Hi.Common.FileLines","href":"Hi.Common.FileLines.html","topicHref":"Hi.Common.FileLines.html","topicUid":"Hi.Common.FileLines","type":"Namespace","items":[{"name":"FileBeginEventArgs","href":"Hi.Common.FileLines.FileBeginEventArgs.html","topicHref":"Hi.Common.FileLines.FileBeginEventArgs.html","topicUid":"Hi.Common.FileLines.FileBeginEventArgs","type":"Class"},{"name":"FileEndEventArgs","href":"Hi.Common.FileLines.FileEndEventArgs.html","topicHref":"Hi.Common.FileLines.FileEndEventArgs.html","topicUid":"Hi.Common.FileLines.FileEndEventArgs","type":"Class"},{"name":"FileLineIndex","href":"Hi.Common.FileLines.FileLineIndex.html","topicHref":"Hi.Common.FileLines.FileLineIndex.html","topicUid":"Hi.Common.FileLines.FileLineIndex","type":"Class"},{"name":"FileLinePipingKit","href":"Hi.Common.FileLines.FileLinePipingKit.html","topicHref":"Hi.Common.FileLines.FileLinePipingKit.html","topicUid":"Hi.Common.FileLines.FileLinePipingKit","type":"Class"},{"name":"FileLineUtil","href":"Hi.Common.FileLines.FileLineUtil.html","topicHref":"Hi.Common.FileLines.FileLineUtil.html","topicUid":"Hi.Common.FileLines.FileLineUtil","type":"Class"},{"name":"FileUtil","href":"Hi.Common.FileLines.FileUtil.html","topicHref":"Hi.Common.FileLines.FileUtil.html","topicUid":"Hi.Common.FileLines.FileUtil","type":"Class"},{"name":"IFileChangedEventSupport","href":"Hi.Common.FileLines.IFileChangedEventSupport.html","topicHref":"Hi.Common.FileLines.IFileChangedEventSupport.html","topicUid":"Hi.Common.FileLines.IFileChangedEventSupport","type":"Interface"},{"name":"IFileLine","href":"Hi.Common.FileLines.IFileLine.html","topicHref":"Hi.Common.FileLines.IFileLine.html","topicUid":"Hi.Common.FileLines.IFileLine","type":"Interface"},{"name":"IFileLineIndex","href":"Hi.Common.FileLines.IFileLineIndex.html","topicHref":"Hi.Common.FileLines.IFileLineIndex.html","topicUid":"Hi.Common.FileLines.IFileLineIndex","type":"Interface"},{"name":"IGetFileLineIndex","href":"Hi.Common.FileLines.IGetFileLineIndex.html","topicHref":"Hi.Common.FileLines.IGetFileLineIndex.html","topicUid":"Hi.Common.FileLines.IGetFileLineIndex","type":"Interface"},{"name":"IGetIndexedFileLine","href":"Hi.Common.FileLines.IGetIndexedFileLine.html","topicHref":"Hi.Common.FileLines.IGetIndexedFileLine.html","topicUid":"Hi.Common.FileLines.IGetIndexedFileLine","type":"Interface"},{"name":"IIndexedFileLine","href":"Hi.Common.FileLines.IIndexedFileLine.html","topicHref":"Hi.Common.FileLines.IIndexedFileLine.html","topicUid":"Hi.Common.FileLines.IIndexedFileLine","type":"Interface"},{"name":"ILineChangedEventSupport","href":"Hi.Common.FileLines.ILineChangedEventSupport.html","topicHref":"Hi.Common.FileLines.ILineChangedEventSupport.html","topicUid":"Hi.Common.FileLines.ILineChangedEventSupport","type":"Interface"},{"name":"IndexedFile","href":"Hi.Common.FileLines.IndexedFile.html","topicHref":"Hi.Common.FileLines.IndexedFile.html","topicUid":"Hi.Common.FileLines.IndexedFile","type":"Class"},{"name":"IndexedFileLine","href":"Hi.Common.FileLines.IndexedFileLine.html","topicHref":"Hi.Common.FileLines.IndexedFileLine.html","topicUid":"Hi.Common.FileLines.IndexedFileLine","type":"Class"},{"name":"LineBeginEventArgs","href":"Hi.Common.FileLines.LineBeginEventArgs.html","topicHref":"Hi.Common.FileLines.LineBeginEventArgs.html","topicUid":"Hi.Common.FileLines.LineBeginEventArgs","type":"Class"},{"name":"LineEndEventArgs","href":"Hi.Common.FileLines.LineEndEventArgs.html","topicHref":"Hi.Common.FileLines.LineEndEventArgs.html","topicUid":"Hi.Common.FileLines.LineEndEventArgs","type":"Class"}]},{"name":"Hi.Common.Messages","href":"Hi.Common.Messages.html","topicHref":"Hi.Common.Messages.html","topicUid":"Hi.Common.Messages","type":"Namespace","items":[{"name":"BootstrapTheme","href":"Hi.Common.Messages.BootstrapTheme.html","topicHref":"Hi.Common.Messages.BootstrapTheme.html","topicUid":"Hi.Common.Messages.BootstrapTheme","type":"Enum"},{"name":"IMessageHost","href":"Hi.Common.Messages.IMessageHost.html","topicHref":"Hi.Common.Messages.IMessageHost.html","topicUid":"Hi.Common.Messages.IMessageHost","type":"Interface"},{"name":"MessageBoardUtil","href":"Hi.Common.Messages.MessageBoardUtil.html","topicHref":"Hi.Common.Messages.MessageBoardUtil.html","topicUid":"Hi.Common.Messages.MessageBoardUtil","type":"Class"},{"name":"MessageFlag","href":"Hi.Common.Messages.MessageFlag.html","topicHref":"Hi.Common.Messages.MessageFlag.html","topicUid":"Hi.Common.Messages.MessageFlag","type":"Enum"},{"name":"MessageHost","href":"Hi.Common.Messages.MessageHost.html","topicHref":"Hi.Common.Messages.MessageHost.html","topicUid":"Hi.Common.Messages.MessageHost","type":"Class"},{"name":"MessageHostUtil","href":"Hi.Common.Messages.MessageHostUtil.html","topicHref":"Hi.Common.Messages.MessageHostUtil.html","topicUid":"Hi.Common.Messages.MessageHostUtil","type":"Class"},{"name":"MultiTagMessage","href":"Hi.Common.Messages.MultiTagMessage.html","topicHref":"Hi.Common.Messages.MultiTagMessage.html","topicUid":"Hi.Common.Messages.MultiTagMessage","type":"Class"},{"name":"ShowMessageBoardDelegate","href":"Hi.Common.Messages.ShowMessageBoardDelegate.html","topicHref":"Hi.Common.Messages.ShowMessageBoardDelegate.html","topicUid":"Hi.Common.Messages.ShowMessageBoardDelegate","type":"Delegate"}]},{"name":"Hi.Common.MinMaxUtils","href":"Hi.Common.MinMaxUtils.html","topicHref":"Hi.Common.MinMaxUtils.html","topicUid":"Hi.Common.MinMaxUtils","type":"Namespace","items":[{"name":"IndexedMinMaxPos","href":"Hi.Common.MinMaxUtils.IndexedMinMaxPos-2.html","topicHref":"Hi.Common.MinMaxUtils.IndexedMinMaxPos-2.html","topicUid":"Hi.Common.MinMaxUtils.IndexedMinMaxPos`2","type":"Class"},{"name":"MinMaxUtil","href":"Hi.Common.MinMaxUtils.MinMaxUtil.html","topicHref":"Hi.Common.MinMaxUtils.MinMaxUtil.html","topicUid":"Hi.Common.MinMaxUtils.MinMaxUtil","type":"Class"}]},{"name":"Hi.Common.NativeProgresses","href":"Hi.Common.NativeProgresses.html","topicHref":"Hi.Common.NativeProgresses.html","topicUid":"Hi.Common.NativeProgresses","type":"Namespace","items":[{"name":"IProgressReport","href":"Hi.Common.NativeProgresses.IProgressReport.html","topicHref":"Hi.Common.NativeProgresses.IProgressReport.html","topicUid":"Hi.Common.NativeProgresses.IProgressReport","type":"Interface"},{"name":"NativeProgressReport","href":"Hi.Common.NativeProgresses.NativeProgressReport.html","topicHref":"Hi.Common.NativeProgresses.NativeProgressReport.html","topicUid":"Hi.Common.NativeProgresses.NativeProgressReport","type":"Class"},{"name":"ProgressReport","href":"Hi.Common.NativeProgresses.ProgressReport.html","topicHref":"Hi.Common.NativeProgresses.ProgressReport.html","topicUid":"Hi.Common.NativeProgresses.ProgressReport","type":"Class"},{"name":"progress_monitor_t","href":"Hi.Common.NativeProgresses.progress_monitor_t.html","topicHref":"Hi.Common.NativeProgresses.progress_monitor_t.html","topicUid":"Hi.Common.NativeProgresses.progress_monitor_t","type":"Struct"},{"name":"report_progress_func_t","href":"Hi.Common.NativeProgresses.report_progress_func_t.html","topicHref":"Hi.Common.NativeProgresses.report_progress_func_t.html","topicUid":"Hi.Common.NativeProgresses.report_progress_func_t","type":"Delegate"}]},{"name":"Hi.Common.ParallelBulkUtils","href":"Hi.Common.ParallelBulkUtils.html","topicHref":"Hi.Common.ParallelBulkUtils.html","topicUid":"Hi.Common.ParallelBulkUtils","type":"Namespace","items":[{"name":"ParallelBulkReader","href":"Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ParallelBulkReader`1","type":"Class"},{"name":"ParallelBulkWriter","href":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter`1","type":"Class"},{"name":"ReadBulkDelegate","href":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate`1","type":"Delegate"},{"name":"SequentialBulkReader","href":"Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html","topicHref":"Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html","topicUid":"Hi.Common.ParallelBulkUtils.SequentialBulkReader`1","type":"Class"}]},{"name":"Hi.Common.PathUtils","href":"Hi.Common.PathUtils.html","topicHref":"Hi.Common.PathUtils.html","topicUid":"Hi.Common.PathUtils","type":"Namespace","items":[{"name":"ExtendedNamedPath","href":"Hi.Common.PathUtils.ExtendedNamedPath.html","topicHref":"Hi.Common.PathUtils.ExtendedNamedPath.html","topicUid":"Hi.Common.PathUtils.ExtendedNamedPath","type":"Class"},{"name":"HttpUtil","href":"Hi.Common.PathUtils.HttpUtil.html","topicHref":"Hi.Common.PathUtils.HttpUtil.html","topicUid":"Hi.Common.PathUtils.HttpUtil","type":"Class"},{"name":"Lang","href":"Hi.Common.PathUtils.Lang.html","topicHref":"Hi.Common.PathUtils.Lang.html","topicUid":"Hi.Common.PathUtils.Lang","type":"Class"},{"name":"NamedPath","href":"Hi.Common.PathUtils.NamedPath.html","topicHref":"Hi.Common.PathUtils.NamedPath.html","topicUid":"Hi.Common.PathUtils.NamedPath","type":"Class"},{"name":"PathUtil","href":"Hi.Common.PathUtils.PathUtil.html","topicHref":"Hi.Common.PathUtils.PathUtil.html","topicUid":"Hi.Common.PathUtils.PathUtil","type":"Class"}]},{"name":"Hi.Common.QueueCacheUtils","href":"Hi.Common.QueueCacheUtils.html","topicHref":"Hi.Common.QueueCacheUtils.html","topicUid":"Hi.Common.QueueCacheUtils","type":"Namespace","items":[{"name":"QueueCacherHost","href":"Hi.Common.QueueCacheUtils.QueueCacherHost-1.html","topicHref":"Hi.Common.QueueCacheUtils.QueueCacherHost-1.html","topicUid":"Hi.Common.QueueCacheUtils.QueueCacherHost`1","type":"Class"},{"name":"QueueCacher","href":"Hi.Common.QueueCacheUtils.QueueCacher-1.html","topicHref":"Hi.Common.QueueCacheUtils.QueueCacher-1.html","topicUid":"Hi.Common.QueueCacheUtils.QueueCacher`1","type":"Class"}]},{"name":"Hi.Common.XmlUtils","href":"Hi.Common.XmlUtils.html","topicHref":"Hi.Common.XmlUtils.html","topicUid":"Hi.Common.XmlUtils","type":"Namespace","items":[{"name":"GenMode","href":"Hi.Common.XmlUtils.GenMode.html","topicHref":"Hi.Common.XmlUtils.GenMode.html","topicUid":"Hi.Common.XmlUtils.GenMode","type":"Enum"},{"name":"IMakeXmlSource","href":"Hi.Common.XmlUtils.IMakeXmlSource.html","topicHref":"Hi.Common.XmlUtils.IMakeXmlSource.html","topicUid":"Hi.Common.XmlUtils.IMakeXmlSource","type":"Interface"},{"name":"IToXElement","href":"Hi.Common.XmlUtils.IToXElement.html","topicHref":"Hi.Common.XmlUtils.IToXElement.html","topicUid":"Hi.Common.XmlUtils.IToXElement","type":"Interface"},{"name":"SetFileDelegate","href":"Hi.Common.XmlUtils.SetFileDelegate.html","topicHref":"Hi.Common.XmlUtils.SetFileDelegate.html","topicUid":"Hi.Common.XmlUtils.SetFileDelegate","type":"Delegate"},{"name":"XFactory","href":"Hi.Common.XmlUtils.XFactory.html","topicHref":"Hi.Common.XmlUtils.XFactory.html","topicUid":"Hi.Common.XmlUtils.XFactory","type":"Class"},{"name":"XFactory.GenByXElementDelegate","href":"Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html","topicHref":"Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html","topicUid":"Hi.Common.XmlUtils.XFactory.GenByXElementDelegate","type":"Delegate"},{"name":"XFactory.XmlExceptionDelegate","href":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html","topicHref":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html","topicUid":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate","type":"Delegate"},{"name":"XmlSourceAndFile","href":"Hi.Common.XmlUtils.XmlSourceAndFile-1.html","topicHref":"Hi.Common.XmlUtils.XmlSourceAndFile-1.html","topicUid":"Hi.Common.XmlUtils.XmlSourceAndFile`1","type":"Class"},{"name":"XmlUtil","href":"Hi.Common.XmlUtils.XmlUtil.html","topicHref":"Hi.Common.XmlUtils.XmlUtil.html","topicUid":"Hi.Common.XmlUtils.XmlUtil","type":"Class"}]},{"name":"Hi.CutterLocations","href":"Hi.CutterLocations.html","topicHref":"Hi.CutterLocations.html","topicUid":"Hi.CutterLocations","type":"Namespace","items":[{"name":"IGetProgramCl","href":"Hi.CutterLocations.IGetProgramCl.html","topicHref":"Hi.CutterLocations.IGetProgramCl.html","topicUid":"Hi.CutterLocations.IGetProgramCl","type":"Interface"},{"name":"SimpleCl","href":"Hi.CutterLocations.SimpleCl.html","topicHref":"Hi.CutterLocations.SimpleCl.html","topicUid":"Hi.CutterLocations.SimpleCl","type":"Class"}]},{"name":"Hi.CutterLocations.ClPath","href":"Hi.CutterLocations.ClPath.html","topicHref":"Hi.CutterLocations.ClPath.html","topicUid":"Hi.CutterLocations.ClPath","type":"Namespace","items":[{"name":"ClCircleArc","href":"Hi.CutterLocations.ClPath.ClCircleArc.html","topicHref":"Hi.CutterLocations.ClPath.ClCircleArc.html","topicUid":"Hi.CutterLocations.ClPath.ClCircleArc","type":"Class"},{"name":"ClLinear","href":"Hi.CutterLocations.ClPath.ClLinear.html","topicHref":"Hi.CutterLocations.ClPath.ClLinear.html","topicUid":"Hi.CutterLocations.ClPath.ClLinear","type":"Class"},{"name":"IClPath","href":"Hi.CutterLocations.ClPath.IClPath.html","topicHref":"Hi.CutterLocations.ClPath.IClPath.html","topicUid":"Hi.CutterLocations.ClPath.IClPath","type":"Interface"}]},{"name":"Hi.CutterLocations.ClStrips","href":"Hi.CutterLocations.ClStrips.html","topicHref":"Hi.CutterLocations.ClStrips.html","topicUid":"Hi.CutterLocations.ClStrips","type":"Namespace","items":[{"name":"ClStrip","href":"Hi.CutterLocations.ClStrips.ClStrip.html","topicHref":"Hi.CutterLocations.ClStrips.ClStrip.html","topicUid":"Hi.CutterLocations.ClStrips.ClStrip","type":"Class"},{"name":"ClStripPos","href":"Hi.CutterLocations.ClStrips.ClStripPos.html","topicHref":"Hi.CutterLocations.ClStrips.ClStripPos.html","topicUid":"Hi.CutterLocations.ClStrips.ClStripPos","type":"Class"},{"name":"RgbFunc","href":"Hi.CutterLocations.ClStrips.RgbFunc.html","topicHref":"Hi.CutterLocations.ClStrips.RgbFunc.html","topicUid":"Hi.CutterLocations.ClStrips.RgbFunc","type":"Delegate"}]},{"name":"Hi.Disp","href":"Hi.Disp.html","topicHref":"Hi.Disp.html","topicUid":"Hi.Disp","type":"Namespace","items":[{"name":"Bind","href":"Hi.Disp.Bind.html","topicHref":"Hi.Disp.Bind.html","topicUid":"Hi.Disp.Bind","type":"Class"},{"name":"Box3dDispUtil","href":"Hi.Disp.Box3dDispUtil.html","topicHref":"Hi.Disp.Box3dDispUtil.html","topicUid":"Hi.Disp.Box3dDispUtil","type":"Class"},{"name":"Box3dDispUtil.BoxableExpandToBox3dDel","href":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel.html","topicHref":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel.html","topicUid":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel","type":"Delegate"},{"name":"DelegateFuncDisplayee","href":"Hi.Disp.DelegateFuncDisplayee.html","topicHref":"Hi.Disp.DelegateFuncDisplayee.html","topicUid":"Hi.Disp.DelegateFuncDisplayee","type":"Class"},{"name":"DispEngine","href":"Hi.Disp.DispEngine.html","topicHref":"Hi.Disp.DispEngine.html","topicUid":"Hi.Disp.DispEngine","type":"Class"},{"name":"DispEngine.ImageRequestedDelegate","href":"Hi.Disp.DispEngine.ImageRequestedDelegate.html","topicHref":"Hi.Disp.DispEngine.ImageRequestedDelegate.html","topicUid":"Hi.Disp.DispEngine.ImageRequestedDelegate","type":"Delegate"},{"name":"DispEngineConfig","href":"Hi.Disp.DispEngineConfig.html","topicHref":"Hi.Disp.DispEngineConfig.html","topicUid":"Hi.Disp.DispEngineConfig","type":"Class"},{"name":"DispFrameUtil","href":"Hi.Disp.DispFrameUtil.html","topicHref":"Hi.Disp.DispFrameUtil.html","topicUid":"Hi.Disp.DispFrameUtil","type":"Class"},{"name":"DispList","href":"Hi.Disp.DispList.html","topicHref":"Hi.Disp.DispList.html","topicUid":"Hi.Disp.DispList","type":"Class"},{"name":"DispUtil","href":"Hi.Disp.DispUtil.html","topicHref":"Hi.Disp.DispUtil.html","topicUid":"Hi.Disp.DispUtil","type":"Class"},{"name":"Drawing","href":"Hi.Disp.Drawing.html","topicHref":"Hi.Disp.Drawing.html","topicUid":"Hi.Disp.Drawing","type":"Class"},{"name":"FuncDisplayee","href":"Hi.Disp.FuncDisplayee.html","topicHref":"Hi.Disp.FuncDisplayee.html","topicUid":"Hi.Disp.FuncDisplayee","type":"Class"},{"name":"GL","href":"Hi.Disp.GL.html","topicHref":"Hi.Disp.GL.html","topicUid":"Hi.Disp.GL","type":"Class"},{"name":"IDisplayee","href":"Hi.Disp.IDisplayee.html","topicHref":"Hi.Disp.IDisplayee.html","topicUid":"Hi.Disp.IDisplayee","type":"Interface"},{"name":"IGetDispEngine","href":"Hi.Disp.IGetDispEngine.html","topicHref":"Hi.Disp.IGetDispEngine.html","topicUid":"Hi.Disp.IGetDispEngine","type":"Interface"},{"name":"IGetPickable","href":"Hi.Disp.IGetPickable.html","topicHref":"Hi.Disp.IGetPickable.html","topicUid":"Hi.Disp.IGetPickable","type":"Interface"},{"name":"IGlContextDirver","href":"Hi.Disp.IGlContextDirver.html","topicHref":"Hi.Disp.IGlContextDirver.html","topicUid":"Hi.Disp.IGlContextDirver","type":"Interface"},{"name":"MatStack","href":"Hi.Disp.MatStack.html","topicHref":"Hi.Disp.MatStack.html","topicUid":"Hi.Disp.MatStack","type":"Class"},{"name":"MatStack.ItemDisposable","href":"Hi.Disp.MatStack.ItemDisposable.html","topicHref":"Hi.Disp.MatStack.ItemDisposable.html","topicUid":"Hi.Disp.MatStack.ItemDisposable","type":"Class"},{"name":"MvpBoxRelation","href":"Hi.Disp.MvpBoxRelation.html","topicHref":"Hi.Disp.MvpBoxRelation.html","topicUid":"Hi.Disp.MvpBoxRelation","type":"Enum"},{"name":"Pickable","href":"Hi.Disp.Pickable.html","topicHref":"Hi.Disp.Pickable.html","topicUid":"Hi.Disp.Pickable","type":"Class"},{"name":"PopModelMat","href":"Hi.Disp.PopModelMat.html","topicHref":"Hi.Disp.PopModelMat.html","topicUid":"Hi.Disp.PopModelMat","type":"Class"},{"name":"PushModelMat","href":"Hi.Disp.PushModelMat.html","topicHref":"Hi.Disp.PushModelMat.html","topicUid":"Hi.Disp.PushModelMat","type":"Class"},{"name":"Segment3dDispUtil","href":"Hi.Disp.Segment3dDispUtil.html","topicHref":"Hi.Disp.Segment3dDispUtil.html","topicUid":"Hi.Disp.Segment3dDispUtil","type":"Class"},{"name":"ShowEventPickable","href":"Hi.Disp.ShowEventPickable.html","topicHref":"Hi.Disp.ShowEventPickable.html","topicUid":"Hi.Disp.ShowEventPickable","type":"Class"},{"name":"Stamp","href":"Hi.Disp.Stamp.html","topicHref":"Hi.Disp.Stamp.html","topicUid":"Hi.Disp.Stamp","type":"Enum"},{"name":"StringDrawing","href":"Hi.Disp.StringDrawing.html","topicHref":"Hi.Disp.StringDrawing.html","topicUid":"Hi.Disp.StringDrawing","type":"Class"},{"name":"Tri3dDispUtil","href":"Hi.Disp.Tri3dDispUtil.html","topicHref":"Hi.Disp.Tri3dDispUtil.html","topicUid":"Hi.Disp.Tri3dDispUtil","type":"Class"},{"name":"WrappedDisplayee","href":"Hi.Disp.WrappedDisplayee.html","topicHref":"Hi.Disp.WrappedDisplayee.html","topicUid":"Hi.Disp.WrappedDisplayee","type":"Class"}]},{"name":"Hi.Disp.Flag","href":"Hi.Disp.Flag.html","topicHref":"Hi.Disp.Flag.html","topicUid":"Hi.Disp.Flag","type":"Namespace","items":[{"name":"ColorScaleBar","href":"Hi.Disp.Flag.ColorScaleBar.html","topicHref":"Hi.Disp.Flag.ColorScaleBar.html","topicUid":"Hi.Disp.Flag.ColorScaleBar","type":"Class"},{"name":"CoordinateDrawing","href":"Hi.Disp.Flag.CoordinateDrawing.html","topicHref":"Hi.Disp.Flag.CoordinateDrawing.html","topicUid":"Hi.Disp.Flag.CoordinateDrawing","type":"Class"},{"name":"CubicalFlagDrawing","href":"Hi.Disp.Flag.CubicalFlagDrawing.html","topicHref":"Hi.Disp.Flag.CubicalFlagDrawing.html","topicUid":"Hi.Disp.Flag.CubicalFlagDrawing","type":"Class"},{"name":"DimensionBar","href":"Hi.Disp.Flag.DimensionBar.html","topicHref":"Hi.Disp.Flag.DimensionBar.html","topicUid":"Hi.Disp.Flag.DimensionBar","type":"Class"},{"name":"DispCoverUtil","href":"Hi.Disp.Flag.DispCoverUtil.html","topicHref":"Hi.Disp.Flag.DispCoverUtil.html","topicUid":"Hi.Disp.Flag.DispCoverUtil","type":"Class"}]},{"name":"Hi.Disp.Treat","href":"Hi.Disp.Treat.html","topicHref":"Hi.Disp.Treat.html","topicUid":"Hi.Disp.Treat","type":"Namespace","items":[{"name":"LineWidthSwap","href":"Hi.Disp.Treat.LineWidthSwap.html","topicHref":"Hi.Disp.Treat.LineWidthSwap.html","topicUid":"Hi.Disp.Treat.LineWidthSwap","type":"Class"},{"name":"LineWidthTreat","href":"Hi.Disp.Treat.LineWidthTreat.html","topicHref":"Hi.Disp.Treat.LineWidthTreat.html","topicUid":"Hi.Disp.Treat.LineWidthTreat","type":"Class"},{"name":"PointSizeSwap","href":"Hi.Disp.Treat.PointSizeSwap.html","topicHref":"Hi.Disp.Treat.PointSizeSwap.html","topicUid":"Hi.Disp.Treat.PointSizeSwap","type":"Class"},{"name":"PointSizeTreat","href":"Hi.Disp.Treat.PointSizeTreat.html","topicHref":"Hi.Disp.Treat.PointSizeTreat.html","topicUid":"Hi.Disp.Treat.PointSizeTreat","type":"Class"},{"name":"RgbSwap","href":"Hi.Disp.Treat.RgbSwap.html","topicHref":"Hi.Disp.Treat.RgbSwap.html","topicUid":"Hi.Disp.Treat.RgbSwap","type":"Class"},{"name":"RgbTreat","href":"Hi.Disp.Treat.RgbTreat.html","topicHref":"Hi.Disp.Treat.RgbTreat.html","topicUid":"Hi.Disp.Treat.RgbTreat","type":"Class"},{"name":"RgbWrapper","href":"Hi.Disp.Treat.RgbWrapper.html","topicHref":"Hi.Disp.Treat.RgbWrapper.html","topicUid":"Hi.Disp.Treat.RgbWrapper","type":"Class"},{"name":"TransformationWrapper","href":"Hi.Disp.Treat.TransformationWrapper.html","topicHref":"Hi.Disp.Treat.TransformationWrapper.html","topicUid":"Hi.Disp.Treat.TransformationWrapper","type":"Class"}]},{"name":"Hi.Fanuc","href":"Hi.Fanuc.html","topicHref":"Hi.Fanuc.html","topicUid":"Hi.Fanuc","type":"Namespace","items":[{"name":"FanucVarTable","href":"Hi.Fanuc.FanucVarTable.html","topicHref":"Hi.Fanuc.FanucVarTable.html","topicUid":"Hi.Fanuc.FanucVarTable","type":"Class"},{"name":"FanucVarValue","href":"Hi.Fanuc.FanucVarValue.html","topicHref":"Hi.Fanuc.FanucVarValue.html","topicUid":"Hi.Fanuc.FanucVarValue","type":"Struct"}]},{"name":"Hi.Geom","href":"Hi.Geom.html","topicHref":"Hi.Geom.html","topicUid":"Hi.Geom","type":"Namespace","items":[{"name":"ArrayUtil","href":"Hi.Geom.ArrayUtil.html","topicHref":"Hi.Geom.ArrayUtil.html","topicUid":"Hi.Geom.ArrayUtil","type":"Class"},{"name":"AxisAngle4d","href":"Hi.Geom.AxisAngle4d.html","topicHref":"Hi.Geom.AxisAngle4d.html","topicUid":"Hi.Geom.AxisAngle4d","type":"Class"},{"name":"Box2d","href":"Hi.Geom.Box2d.html","topicHref":"Hi.Geom.Box2d.html","topicUid":"Hi.Geom.Box2d","type":"Class"},{"name":"Box2d.NoInit","href":"Hi.Geom.Box2d.NoInit.html","topicHref":"Hi.Geom.Box2d.NoInit.html","topicUid":"Hi.Geom.Box2d.NoInit","type":"Class"},{"name":"Box3d","href":"Hi.Geom.Box3d.html","topicHref":"Hi.Geom.Box3d.html","topicUid":"Hi.Geom.Box3d","type":"Class"},{"name":"Box3d.NoInit","href":"Hi.Geom.Box3d.NoInit.html","topicHref":"Hi.Geom.Box3d.NoInit.html","topicUid":"Hi.Geom.Box3d.NoInit","type":"Class"},{"name":"Cylindroid","href":"Hi.Geom.Cylindroid.html","topicHref":"Hi.Geom.Cylindroid.html","topicUid":"Hi.Geom.Cylindroid","type":"Class"},{"name":"DVec3d","href":"Hi.Geom.DVec3d.html","topicHref":"Hi.Geom.DVec3d.html","topicUid":"Hi.Geom.DVec3d","type":"Class"},{"name":"Dir","href":"Hi.Geom.Dir.html","topicHref":"Hi.Geom.Dir.html","topicUid":"Hi.Geom.Dir","type":"Enum"},{"name":"ExtendedCylinder","href":"Hi.Geom.ExtendedCylinder.html","topicHref":"Hi.Geom.ExtendedCylinder.html","topicUid":"Hi.Geom.ExtendedCylinder","type":"Class"},{"name":"Flat3d","href":"Hi.Geom.Flat3d.html","topicHref":"Hi.Geom.Flat3d.html","topicUid":"Hi.Geom.Flat3d","type":"Class"},{"name":"GeomCombination","href":"Hi.Geom.GeomCombination.html","topicHref":"Hi.Geom.GeomCombination.html","topicUid":"Hi.Geom.GeomCombination","type":"Class"},{"name":"GeomUtil","href":"Hi.Geom.GeomUtil.html","topicHref":"Hi.Geom.GeomUtil.html","topicUid":"Hi.Geom.GeomUtil","type":"Class"},{"name":"IExpandToBox2d","href":"Hi.Geom.IExpandToBox2d.html","topicHref":"Hi.Geom.IExpandToBox2d.html","topicUid":"Hi.Geom.IExpandToBox2d","type":"Interface"},{"name":"IExpandToBox3d","href":"Hi.Geom.IExpandToBox3d.html","topicHref":"Hi.Geom.IExpandToBox3d.html","topicUid":"Hi.Geom.IExpandToBox3d","type":"Interface"},{"name":"IFlat3d","href":"Hi.Geom.IFlat3d.html","topicHref":"Hi.Geom.IFlat3d.html","topicUid":"Hi.Geom.IFlat3d","type":"Interface"},{"name":"IGenStl","href":"Hi.Geom.IGenStl.html","topicHref":"Hi.Geom.IGenStl.html","topicUid":"Hi.Geom.IGenStl","type":"Interface"},{"name":"IGeomProperty","href":"Hi.Geom.IGeomProperty.html","topicHref":"Hi.Geom.IGeomProperty.html","topicUid":"Hi.Geom.IGeomProperty","type":"Interface"},{"name":"IGetStl","href":"Hi.Geom.IGetStl.html","topicHref":"Hi.Geom.IGetStl.html","topicUid":"Hi.Geom.IGetStl","type":"Interface"},{"name":"IGetZrContour","href":"Hi.Geom.IGetZrContour.html","topicHref":"Hi.Geom.IGetZrContour.html","topicUid":"Hi.Geom.IGetZrContour","type":"Interface"},{"name":"IGetZrList","href":"Hi.Geom.IGetZrList.html","topicHref":"Hi.Geom.IGetZrList.html","topicUid":"Hi.Geom.IGetZrList","type":"Interface"},{"name":"IStlSource","href":"Hi.Geom.IStlSource.html","topicHref":"Hi.Geom.IStlSource.html","topicUid":"Hi.Geom.IStlSource","type":"Interface"},{"name":"ITri3d","href":"Hi.Geom.ITri3d.html","topicHref":"Hi.Geom.ITri3d.html","topicUid":"Hi.Geom.ITri3d","type":"Interface"},{"name":"IVec","href":"Hi.Geom.IVec-1.html","topicHref":"Hi.Geom.IVec-1.html","topicUid":"Hi.Geom.IVec`1","type":"Interface"},{"name":"IZrListSourceProperty","href":"Hi.Geom.IZrListSourceProperty.html","topicHref":"Hi.Geom.IZrListSourceProperty.html","topicUid":"Hi.Geom.IZrListSourceProperty","type":"Interface"},{"name":"Mat4d","href":"Hi.Geom.Mat4d.html","topicHref":"Hi.Geom.Mat4d.html","topicUid":"Hi.Geom.Mat4d","type":"Class"},{"name":"Mat4d.IndexFlag","href":"Hi.Geom.Mat4d.IndexFlag.html","topicHref":"Hi.Geom.Mat4d.IndexFlag.html","topicUid":"Hi.Geom.Mat4d.IndexFlag","type":"Enum"},{"name":"MathNetUtil","href":"Hi.Geom.MathNetUtil.html","topicHref":"Hi.Geom.MathNetUtil.html","topicUid":"Hi.Geom.MathNetUtil","type":"Class"},{"name":"MathUtil","href":"Hi.Geom.MathUtil.html","topicHref":"Hi.Geom.MathUtil.html","topicUid":"Hi.Geom.MathUtil","type":"Class"},{"name":"NativeStl","href":"Hi.Geom.NativeStl.html","topicHref":"Hi.Geom.NativeStl.html","topicUid":"Hi.Geom.NativeStl","type":"Class"},{"name":"NativeTopoStld","href":"Hi.Geom.NativeTopoStld.html","topicHref":"Hi.Geom.NativeTopoStld.html","topicUid":"Hi.Geom.NativeTopoStld","type":"Class"},{"name":"NativeTopoStlfr","href":"Hi.Geom.NativeTopoStlfr.html","topicHref":"Hi.Geom.NativeTopoStlfr.html","topicUid":"Hi.Geom.NativeTopoStlfr","type":"Class"},{"name":"PairZr","href":"Hi.Geom.PairZr.html","topicHref":"Hi.Geom.PairZr.html","topicUid":"Hi.Geom.PairZr","type":"Class"},{"name":"PairZrUtil","href":"Hi.Geom.PairZrUtil.html","topicHref":"Hi.Geom.PairZrUtil.html","topicUid":"Hi.Geom.PairZrUtil","type":"Class"},{"name":"Polar3d","href":"Hi.Geom.Polar3d.html","topicHref":"Hi.Geom.Polar3d.html","topicUid":"Hi.Geom.Polar3d","type":"Class"},{"name":"Segment3d","href":"Hi.Geom.Segment3d.html","topicHref":"Hi.Geom.Segment3d.html","topicUid":"Hi.Geom.Segment3d","type":"Class"},{"name":"Stl","href":"Hi.Geom.Stl.html","topicHref":"Hi.Geom.Stl.html","topicUid":"Hi.Geom.Stl","type":"Class"},{"name":"Stl.StlType","href":"Hi.Geom.Stl.StlType.html","topicHref":"Hi.Geom.Stl.StlType.html","topicUid":"Hi.Geom.Stl.StlType","type":"Enum"},{"name":"StlFile","href":"Hi.Geom.StlFile.html","topicHref":"Hi.Geom.StlFile.html","topicUid":"Hi.Geom.StlFile","type":"Class"},{"name":"StlFuncHost","href":"Hi.Geom.StlFuncHost.html","topicHref":"Hi.Geom.StlFuncHost.html","topicUid":"Hi.Geom.StlFuncHost","type":"Class"},{"name":"StlUtil","href":"Hi.Geom.StlUtil.html","topicHref":"Hi.Geom.StlUtil.html","topicUid":"Hi.Geom.StlUtil","type":"Class"},{"name":"TransformationGeom","href":"Hi.Geom.TransformationGeom.html","topicHref":"Hi.Geom.TransformationGeom.html","topicUid":"Hi.Geom.TransformationGeom","type":"Class"},{"name":"Tri3d","href":"Hi.Geom.Tri3d.html","topicHref":"Hi.Geom.Tri3d.html","topicUid":"Hi.Geom.Tri3d","type":"Class"},{"name":"Tri3dUtil","href":"Hi.Geom.Tri3dUtil.html","topicHref":"Hi.Geom.Tri3dUtil.html","topicUid":"Hi.Geom.Tri3dUtil","type":"Class"},{"name":"UnnullableDVec3d","href":"Hi.Geom.UnnullableDVec3d.html","topicHref":"Hi.Geom.UnnullableDVec3d.html","topicUid":"Hi.Geom.UnnullableDVec3d","type":"Class"},{"name":"Vec2d","href":"Hi.Geom.Vec2d.html","topicHref":"Hi.Geom.Vec2d.html","topicUid":"Hi.Geom.Vec2d","type":"Class"},{"name":"Vec2i","href":"Hi.Geom.Vec2i.html","topicHref":"Hi.Geom.Vec2i.html","topicUid":"Hi.Geom.Vec2i","type":"Class"},{"name":"Vec3d","href":"Hi.Geom.Vec3d.html","topicHref":"Hi.Geom.Vec3d.html","topicUid":"Hi.Geom.Vec3d","type":"Class"},{"name":"Vec3dUtil","href":"Hi.Geom.Vec3dUtil.html","topicHref":"Hi.Geom.Vec3dUtil.html","topicUid":"Hi.Geom.Vec3dUtil","type":"Class"}]},{"name":"Hi.Geom.Resolution","href":"Hi.Geom.Resolution.html","topicHref":"Hi.Geom.Resolution.html","topicUid":"Hi.Geom.Resolution","type":"Namespace","items":[{"name":"IPolarResolution2d","href":"Hi.Geom.Resolution.IPolarResolution2d.html","topicHref":"Hi.Geom.Resolution.IPolarResolution2d.html","topicUid":"Hi.Geom.Resolution.IPolarResolution2d","type":"Interface"},{"name":"IPolarResolution2dSourceProperty","href":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html","topicHref":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html","topicUid":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty","type":"Interface"},{"name":"PolarResolution2d","href":"Hi.Geom.Resolution.PolarResolution2d.html","topicHref":"Hi.Geom.Resolution.PolarResolution2d.html","topicUid":"Hi.Geom.Resolution.PolarResolution2d","type":"Class"}]},{"name":"Hi.Geom.Solvers","href":"Hi.Geom.Solvers.html","topicHref":"Hi.Geom.Solvers.html","topicUid":"Hi.Geom.Solvers","type":"Namespace","items":[{"name":"BinarySolverUtil","href":"Hi.Geom.Solvers.BinarySolverUtil.html","topicHref":"Hi.Geom.Solvers.BinarySolverUtil.html","topicUid":"Hi.Geom.Solvers.BinarySolverUtil","type":"Class"},{"name":"BinarySolvingEntry","href":"Hi.Geom.Solvers.BinarySolvingEntry.html","topicHref":"Hi.Geom.Solvers.BinarySolvingEntry.html","topicUid":"Hi.Geom.Solvers.BinarySolvingEntry","type":"Class"},{"name":"DeepSolvingStatus","href":"Hi.Geom.Solvers.DeepSolvingStatus.html","topicHref":"Hi.Geom.Solvers.DeepSolvingStatus.html","topicUid":"Hi.Geom.Solvers.DeepSolvingStatus","type":"Class"},{"name":"NumericalSolver","href":"Hi.Geom.Solvers.NumericalSolver.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.html","topicUid":"Hi.Geom.Solvers.NumericalSolver","type":"Class"},{"name":"NumericalSolver.GetRepondsDelegate","href":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate.html","topicUid":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate","type":"Delegate"},{"name":"NumericalSolver.SetParasDelegate","href":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate.html","topicUid":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate","type":"Delegate"},{"name":"SolverUtil","href":"Hi.Geom.Solvers.SolverUtil.html","topicHref":"Hi.Geom.Solvers.SolverUtil.html","topicUid":"Hi.Geom.Solvers.SolverUtil","type":"Class"},{"name":"SolvingResult","href":"Hi.Geom.Solvers.SolvingResult.html","topicHref":"Hi.Geom.Solvers.SolvingResult.html","topicUid":"Hi.Geom.Solvers.SolvingResult","type":"Class"},{"name":"SolvingStatus","href":"Hi.Geom.Solvers.SolvingStatus.html","topicHref":"Hi.Geom.Solvers.SolvingStatus.html","topicUid":"Hi.Geom.Solvers.SolvingStatus","type":"Enum"},{"name":"SolvingTerm","href":"Hi.Geom.Solvers.SolvingTerm.html","topicHref":"Hi.Geom.Solvers.SolvingTerm.html","topicUid":"Hi.Geom.Solvers.SolvingTerm","type":"Enum"}]},{"name":"Hi.Geom.UnitUtils","href":"Hi.Geom.UnitUtils.html","topicHref":"Hi.Geom.UnitUtils.html","topicUid":"Hi.Geom.UnitUtils","type":"Namespace","items":[{"name":"PhysicsUnit","href":"Hi.Geom.UnitUtils.PhysicsUnit.html","topicHref":"Hi.Geom.UnitUtils.PhysicsUnit.html","topicUid":"Hi.Geom.UnitUtils.PhysicsUnit","type":"Enum"},{"name":"StringValueAttribute","href":"Hi.Geom.UnitUtils.StringValueAttribute.html","topicHref":"Hi.Geom.UnitUtils.StringValueAttribute.html","topicUid":"Hi.Geom.UnitUtils.StringValueAttribute","type":"Class"},{"name":"UnitConvertUtil","href":"Hi.Geom.UnitUtils.UnitConvertUtil.html","topicHref":"Hi.Geom.UnitUtils.UnitConvertUtil.html","topicUid":"Hi.Geom.UnitUtils.UnitConvertUtil","type":"Class"}]},{"name":"Hi.Grpcs","href":"Hi.Grpcs.html","topicHref":"Hi.Grpcs.html","topicUid":"Hi.Grpcs","type":"Namespace","items":[{"name":"ClStripService","href":"Hi.Grpcs.ClStripService.html","topicHref":"Hi.Grpcs.ClStripService.html","topicUid":"Hi.Grpcs.ClStripService","type":"Class"},{"name":"ClStripService.ClStripServiceBase","href":"Hi.Grpcs.ClStripService.ClStripServiceBase.html","topicHref":"Hi.Grpcs.ClStripService.ClStripServiceBase.html","topicUid":"Hi.Grpcs.ClStripService.ClStripServiceBase","type":"Class"},{"name":"ClStripService.ClStripServiceClient","href":"Hi.Grpcs.ClStripService.ClStripServiceClient.html","topicHref":"Hi.Grpcs.ClStripService.ClStripServiceClient.html","topicUid":"Hi.Grpcs.ClStripService.ClStripServiceClient","type":"Class"},{"name":"ClStripServiceReflection","href":"Hi.Grpcs.ClStripServiceReflection.html","topicHref":"Hi.Grpcs.ClStripServiceReflection.html","topicUid":"Hi.Grpcs.ClStripServiceReflection","type":"Class"},{"name":"ClStripServiceRunner","href":"Hi.Grpcs.ClStripServiceRunner.html","topicHref":"Hi.Grpcs.ClStripServiceRunner.html","topicUid":"Hi.Grpcs.ClStripServiceRunner","type":"Class"},{"name":"DictionaryStep","href":"Hi.Grpcs.DictionaryStep.html","topicHref":"Hi.Grpcs.DictionaryStep.html","topicUid":"Hi.Grpcs.DictionaryStep","type":"Class"},{"name":"PlayerService","href":"Hi.Grpcs.PlayerService.html","topicHref":"Hi.Grpcs.PlayerService.html","topicUid":"Hi.Grpcs.PlayerService","type":"Class"},{"name":"PlayerService.PlayerServiceBase","href":"Hi.Grpcs.PlayerService.PlayerServiceBase.html","topicHref":"Hi.Grpcs.PlayerService.PlayerServiceBase.html","topicUid":"Hi.Grpcs.PlayerService.PlayerServiceBase","type":"Class"},{"name":"PlayerService.PlayerServiceClient","href":"Hi.Grpcs.PlayerService.PlayerServiceClient.html","topicHref":"Hi.Grpcs.PlayerService.PlayerServiceClient.html","topicUid":"Hi.Grpcs.PlayerService.PlayerServiceClient","type":"Class"},{"name":"PlayerServiceReflection","href":"Hi.Grpcs.PlayerServiceReflection.html","topicHref":"Hi.Grpcs.PlayerServiceReflection.html","topicUid":"Hi.Grpcs.PlayerServiceReflection","type":"Class"},{"name":"PlayerServiceRunner","href":"Hi.Grpcs.PlayerServiceRunner.html","topicHref":"Hi.Grpcs.PlayerServiceRunner.html","topicUid":"Hi.Grpcs.PlayerServiceRunner","type":"Class"}]},{"name":"Hi.HiNcKits","href":"Hi.HiNcKits.html","topicHref":"Hi.HiNcKits.html","topicUid":"Hi.HiNcKits","type":"Namespace","items":[{"name":"BasePathEnum","href":"Hi.HiNcKits.BasePathEnum.html","topicHref":"Hi.HiNcKits.BasePathEnum.html","topicUid":"Hi.HiNcKits.BasePathEnum","type":"Enum"},{"name":"HiNcHost","href":"Hi.HiNcKits.HiNcHost.html","topicHref":"Hi.HiNcKits.HiNcHost.html","topicUid":"Hi.HiNcKits.HiNcHost","type":"Class"},{"name":"LocalApp","href":"Hi.HiNcKits.LocalApp.html","topicHref":"Hi.HiNcKits.LocalApp.html","topicUid":"Hi.HiNcKits.LocalApp","type":"Class"},{"name":"LocalAppConfig","href":"Hi.HiNcKits.LocalAppConfig.html","topicHref":"Hi.HiNcKits.LocalAppConfig.html","topicUid":"Hi.HiNcKits.LocalAppConfig","type":"Class"},{"name":"ProxyConfig","href":"Hi.HiNcKits.ProxyConfig.html","topicHref":"Hi.HiNcKits.ProxyConfig.html","topicUid":"Hi.HiNcKits.ProxyConfig","type":"Class"},{"name":"UserConfig","href":"Hi.HiNcKits.UserConfig.html","topicHref":"Hi.HiNcKits.UserConfig.html","topicUid":"Hi.HiNcKits.UserConfig","type":"Class"},{"name":"UserService","href":"Hi.HiNcKits.UserService.html","topicHref":"Hi.HiNcKits.UserService.html","topicUid":"Hi.HiNcKits.UserService","type":"Class"}]},{"name":"Hi.Licenses","href":"Hi.Licenses.html","topicHref":"Hi.Licenses.html","topicUid":"Hi.Licenses","type":"Namespace","items":[{"name":"AuthFeature","href":"Hi.Licenses.AuthFeature.html","topicHref":"Hi.Licenses.AuthFeature.html","topicUid":"Hi.Licenses.AuthFeature","type":"Enum"},{"name":"AuthorizationFailedEventArgs","href":"Hi.Licenses.AuthorizationFailedEventArgs.html","topicHref":"Hi.Licenses.AuthorizationFailedEventArgs.html","topicUid":"Hi.Licenses.AuthorizationFailedEventArgs","type":"Class"},{"name":"BlockType","href":"Hi.Licenses.BlockType.html","topicHref":"Hi.Licenses.BlockType.html","topicUid":"Hi.Licenses.BlockType","type":"Enum"},{"name":"License","href":"Hi.Licenses.License.html","topicHref":"Hi.Licenses.License.html","topicUid":"Hi.Licenses.License","type":"Class"},{"name":"LicenseType","href":"Hi.Licenses.LicenseType.html","topicHref":"Hi.Licenses.LicenseType.html","topicUid":"Hi.Licenses.LicenseType","type":"Enum"}]},{"name":"Hi.Machining","href":"Hi.Machining.html","topicHref":"Hi.Machining.html","topicUid":"Hi.Machining","type":"Namespace","items":[{"name":"FreeformRemover","href":"Hi.Machining.FreeformRemover.html","topicHref":"Hi.Machining.FreeformRemover.html","topicUid":"Hi.Machining.FreeformRemover","type":"Class"},{"name":"ICutter","href":"Hi.Machining.ICutter.html","topicHref":"Hi.Machining.ICutter.html","topicUid":"Hi.Machining.ICutter","type":"Interface"},{"name":"ICutterAnchorable","href":"Hi.Machining.ICutterAnchorable.html","topicHref":"Hi.Machining.ICutterAnchorable.html","topicUid":"Hi.Machining.ICutterAnchorable","type":"Interface"},{"name":"IGetSweptable","href":"Hi.Machining.IGetSweptable.html","topicHref":"Hi.Machining.IGetSweptable.html","topicUid":"Hi.Machining.IGetSweptable","type":"Interface"},{"name":"IMachiningTool","href":"Hi.Machining.IMachiningTool.html","topicHref":"Hi.Machining.IMachiningTool.html","topicUid":"Hi.Machining.IMachiningTool","type":"Interface"},{"name":"IVolumeRemover","href":"Hi.Machining.IVolumeRemover.html","topicHref":"Hi.Machining.IVolumeRemover.html","topicUid":"Hi.Machining.IVolumeRemover","type":"Interface"},{"name":"MachiningToolHouse","href":"Hi.Machining.MachiningToolHouse.html","topicHref":"Hi.Machining.MachiningToolHouse.html","topicUid":"Hi.Machining.MachiningToolHouse","type":"Class"},{"name":"MachiningVolumeRemovalProc","href":"Hi.Machining.MachiningVolumeRemovalProc.html","topicHref":"Hi.Machining.MachiningVolumeRemovalProc.html","topicUid":"Hi.Machining.MachiningVolumeRemovalProc","type":"Class"},{"name":"MachiningVolumeRemovalProc.StepMotionSnapshot","href":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html","topicHref":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html","topicUid":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot","type":"Class"},{"name":"MatInterpolationKit","href":"Hi.Machining.MatInterpolationKit.html","topicHref":"Hi.Machining.MatInterpolationKit.html","topicUid":"Hi.Machining.MatInterpolationKit","type":"Class"},{"name":"MatRelation","href":"Hi.Machining.MatRelation.html","topicHref":"Hi.Machining.MatRelation.html","topicUid":"Hi.Machining.MatRelation","type":"Enum"},{"name":"MatRelationUtil","href":"Hi.Machining.MatRelationUtil.html","topicHref":"Hi.Machining.MatRelationUtil.html","topicUid":"Hi.Machining.MatRelationUtil","type":"Class"},{"name":"MotionUtil","href":"Hi.Machining.MotionUtil.html","topicHref":"Hi.Machining.MotionUtil.html","topicUid":"Hi.Machining.MotionUtil","type":"Class"},{"name":"Sweptable","href":"Hi.Machining.Sweptable.html","topicHref":"Hi.Machining.Sweptable.html","topicUid":"Hi.Machining.Sweptable","type":"Class"},{"name":"SweptableUtil","href":"Hi.Machining.SweptableUtil.html","topicHref":"Hi.Machining.SweptableUtil.html","topicUid":"Hi.Machining.SweptableUtil","type":"Class"},{"name":"ToolNotFoundException","href":"Hi.Machining.ToolNotFoundException.html","topicHref":"Hi.Machining.ToolNotFoundException.html","topicUid":"Hi.Machining.ToolNotFoundException","type":"Class"}]},{"name":"Hi.Machining.MachiningEquipmentUtils","href":"Hi.Machining.MachiningEquipmentUtils.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.html","topicUid":"Hi.Machining.MachiningEquipmentUtils","type":"Namespace","items":[{"name":"CollidableComponentEnum","href":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum","type":"Enum"},{"name":"IGetMachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment","type":"Interface"},{"name":"IMachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment","type":"Interface"},{"name":"MachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment","type":"Class"},{"name":"MachiningEquipmentCollisionIndex","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex","type":"Class"},{"name":"MachiningEquipmentCollisionIndexPairsSource","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource","type":"Class"},{"name":"MachiningEquipmentUtil","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil","type":"Class"}]},{"name":"Hi.MachiningProcs","href":"Hi.MachiningProcs.html","topicHref":"Hi.MachiningProcs.html","topicUid":"Hi.MachiningProcs","type":"Namespace","items":[{"name":"ConfigStepFunc","href":"Hi.MachiningProcs.ConfigStepFunc.html","topicHref":"Hi.MachiningProcs.ConfigStepFunc.html","topicUid":"Hi.MachiningProcs.ConfigStepFunc","type":"Delegate"},{"name":"DynamicMachiningProjectDisplayee0","href":"Hi.MachiningProcs.DynamicMachiningProjectDisplayee0.html","topicHref":"Hi.MachiningProcs.DynamicMachiningProjectDisplayee0.html","topicUid":"Hi.MachiningProcs.DynamicMachiningProjectDisplayee0","type":"Class"},{"name":"IMachiningProjectGetter","href":"Hi.MachiningProcs.IMachiningProjectGetter.html","topicHref":"Hi.MachiningProcs.IMachiningProjectGetter.html","topicUid":"Hi.MachiningProcs.IMachiningProjectGetter","type":"Interface"},{"name":"IProjectService","href":"Hi.MachiningProcs.IProjectService.html","topicHref":"Hi.MachiningProcs.IProjectService.html","topicUid":"Hi.MachiningProcs.IProjectService","type":"Interface"},{"name":"LocalProjectService","href":"Hi.MachiningProcs.LocalProjectService.html","topicHref":"Hi.MachiningProcs.LocalProjectService.html","topicUid":"Hi.MachiningProcs.LocalProjectService","type":"Class"},{"name":"LocalProjectService.MachiningProjectChangedDelegate","href":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate.html","topicHref":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate.html","topicUid":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate","type":"Delegate"},{"name":"MachiningActRunner","href":"Hi.MachiningProcs.MachiningActRunner.html","topicHref":"Hi.MachiningProcs.MachiningActRunner.html","topicUid":"Hi.MachiningProcs.MachiningActRunner","type":"Class"},{"name":"MachiningActRunner.MachiningStepBuiltDelegate","href":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html","topicHref":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html","topicUid":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate","type":"Delegate"},{"name":"MachiningActRunnerConfig","href":"Hi.MachiningProcs.MachiningActRunnerConfig.html","topicHref":"Hi.MachiningProcs.MachiningActRunnerConfig.html","topicUid":"Hi.MachiningProcs.MachiningActRunnerConfig","type":"Class"},{"name":"MachiningParallelProc","href":"Hi.MachiningProcs.MachiningParallelProc.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc","type":"Class"},{"name":"MachiningParallelProc.StepTaskBundle","href":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle","type":"Class"},{"name":"MachiningParallelProc.SubstractionResult","href":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult","type":"Class"},{"name":"MachiningProject","href":"Hi.MachiningProcs.MachiningProject.html","topicHref":"Hi.MachiningProcs.MachiningProject.html","topicUid":"Hi.MachiningProcs.MachiningProject","type":"Class"},{"name":"MachiningProjectDisplayee","href":"Hi.MachiningProcs.MachiningProjectDisplayee.html","topicHref":"Hi.MachiningProcs.MachiningProjectDisplayee.html","topicUid":"Hi.MachiningProcs.MachiningProjectDisplayee","type":"Class"},{"name":"MachiningSession","href":"Hi.MachiningProcs.MachiningSession.html","topicHref":"Hi.MachiningProcs.MachiningSession.html","topicUid":"Hi.MachiningProcs.MachiningSession","type":"Class"},{"name":"MillingUtil","href":"Hi.MachiningProcs.MillingUtil.html","topicHref":"Hi.MachiningProcs.MillingUtil.html","topicUid":"Hi.MachiningProcs.MillingUtil","type":"Class"},{"name":"ProxyProjectService","href":"Hi.MachiningProcs.ProxyProjectService.html","topicHref":"Hi.MachiningProcs.ProxyProjectService.html","topicUid":"Hi.MachiningProcs.ProxyProjectService","type":"Class"},{"name":"RenderingFlag","href":"Hi.MachiningProcs.RenderingFlag.html","topicHref":"Hi.MachiningProcs.RenderingFlag.html","topicUid":"Hi.MachiningProcs.RenderingFlag","type":"Enum"},{"name":"RuntimeApi","href":"Hi.MachiningProcs.RuntimeApi.html","topicHref":"Hi.MachiningProcs.RuntimeApi.html","topicUid":"Hi.MachiningProcs.RuntimeApi","type":"Class"},{"name":"RuntimeController","href":"Hi.MachiningProcs.RuntimeController.html","topicHref":"Hi.MachiningProcs.RuntimeController.html","topicUid":"Hi.MachiningProcs.RuntimeController","type":"Class"},{"name":"SessionMessage","href":"Hi.MachiningProcs.SessionMessage.html","topicHref":"Hi.MachiningProcs.SessionMessage.html","topicUid":"Hi.MachiningProcs.SessionMessage","type":"Class"},{"name":"SessionMessageHost","href":"Hi.MachiningProcs.SessionMessageHost.html","topicHref":"Hi.MachiningProcs.SessionMessageHost.html","topicUid":"Hi.MachiningProcs.SessionMessageHost","type":"Class"},{"name":"SessionMessageHost.FilterFlag","href":"Hi.MachiningProcs.SessionMessageHost.FilterFlag.html","topicHref":"Hi.MachiningProcs.SessionMessageHost.FilterFlag.html","topicUid":"Hi.MachiningProcs.SessionMessageHost.FilterFlag","type":"Enum"},{"name":"SessionMessagePack","href":"Hi.MachiningProcs.SessionMessagePack.html","topicHref":"Hi.MachiningProcs.SessionMessagePack.html","topicUid":"Hi.MachiningProcs.SessionMessagePack","type":"Class"},{"name":"SetupController","href":"Hi.MachiningProcs.SetupController.html","topicHref":"Hi.MachiningProcs.SetupController.html","topicUid":"Hi.MachiningProcs.SetupController","type":"Class"},{"name":"SpindleSpeedCache","href":"Hi.MachiningProcs.SpindleSpeedCache.html","topicHref":"Hi.MachiningProcs.SpindleSpeedCache.html","topicUid":"Hi.MachiningProcs.SpindleSpeedCache","type":"Class"}]},{"name":"Hi.MachiningSteps","href":"Hi.MachiningSteps.html","topicHref":"Hi.MachiningSteps.html","topicUid":"Hi.MachiningSteps","type":"Namespace","items":[{"name":"IFlagText","href":"Hi.MachiningSteps.IFlagText.html","topicHref":"Hi.MachiningSteps.IFlagText.html","topicUid":"Hi.MachiningSteps.IFlagText","type":"Interface"},{"name":"IMachiningStepHost","href":"Hi.MachiningSteps.IMachiningStepHost.html","topicHref":"Hi.MachiningSteps.IMachiningStepHost.html","topicUid":"Hi.MachiningSteps.IMachiningStepHost","type":"Interface"},{"name":"MachineMotionStep","href":"Hi.MachiningSteps.MachineMotionStep.html","topicHref":"Hi.MachiningSteps.MachineMotionStep.html","topicUid":"Hi.MachiningSteps.MachineMotionStep","type":"Class"},{"name":"MachiningStep","href":"Hi.MachiningSteps.MachiningStep.html","topicHref":"Hi.MachiningSteps.MachiningStep.html","topicUid":"Hi.MachiningSteps.MachiningStep","type":"Class"},{"name":"MachiningStep.CollidedKeyPair","href":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair.html","topicHref":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair.html","topicUid":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair","type":"Class"},{"name":"MachiningStepUtil","href":"Hi.MachiningSteps.MachiningStepUtil.html","topicHref":"Hi.MachiningSteps.MachiningStepUtil.html","topicUid":"Hi.MachiningSteps.MachiningStepUtil","type":"Class"},{"name":"PresentAccess","href":"Hi.MachiningSteps.PresentAccess.html","topicHref":"Hi.MachiningSteps.PresentAccess.html","topicUid":"Hi.MachiningSteps.PresentAccess","type":"Class"},{"name":"PresentAttribute","href":"Hi.MachiningSteps.PresentAttribute.html","topicHref":"Hi.MachiningSteps.PresentAttribute.html","topicUid":"Hi.MachiningSteps.PresentAttribute","type":"Class"},{"name":"PropertyAccess","href":"Hi.MachiningSteps.PropertyAccess-1.html","topicHref":"Hi.MachiningSteps.PropertyAccess-1.html","topicUid":"Hi.MachiningSteps.PropertyAccess`1","type":"Class"}]},{"name":"Hi.Mapping","href":"Hi.Mapping.html","topicHref":"Hi.Mapping.html","topicUid":"Hi.Mapping","type":"Namespace","items":[{"name":"CsvNcStep","href":"Hi.Mapping.CsvNcStep.html","topicHref":"Hi.Mapping.CsvNcStep.html","topicUid":"Hi.Mapping.CsvNcStep","type":"Class"},{"name":"FileToTimeShotMapping","href":"Hi.Mapping.FileToTimeShotMapping.html","topicHref":"Hi.Mapping.FileToTimeShotMapping.html","topicUid":"Hi.Mapping.FileToTimeShotMapping","type":"Class"},{"name":"IAccelerationShot","href":"Hi.Mapping.IAccelerationShot.html","topicHref":"Hi.Mapping.IAccelerationShot.html","topicUid":"Hi.Mapping.IAccelerationShot","type":"Interface"},{"name":"IForceShot","href":"Hi.Mapping.IForceShot.html","topicHref":"Hi.Mapping.IForceShot.html","topicUid":"Hi.Mapping.IForceShot","type":"Interface"},{"name":"IMomentShot","href":"Hi.Mapping.IMomentShot.html","topicHref":"Hi.Mapping.IMomentShot.html","topicUid":"Hi.Mapping.IMomentShot","type":"Interface"},{"name":"ITimeShot","href":"Hi.Mapping.ITimeShot.html","topicHref":"Hi.Mapping.ITimeShot.html","topicUid":"Hi.Mapping.ITimeShot","type":"Interface"},{"name":"StepTimeShotUtil","href":"Hi.Mapping.StepTimeShotUtil.html","topicHref":"Hi.Mapping.StepTimeShotUtil.html","topicUid":"Hi.Mapping.StepTimeShotUtil","type":"Class"},{"name":"StepTimeShotUtil.CycleSamplingMode","href":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html","topicHref":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html","topicUid":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode","type":"Enum"},{"name":"StepTimeShotUtil.GetTimeShotByFileDelegate","href":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate.html","topicHref":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate.html","topicUid":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate","type":"Delegate"},{"name":"TimeMapping","href":"Hi.Mapping.TimeMapping.html","topicHref":"Hi.Mapping.TimeMapping.html","topicUid":"Hi.Mapping.TimeMapping","type":"Class"}]},{"name":"Hi.Mappings","href":"Hi.Mappings.html","topicHref":"Hi.Mappings.html","topicUid":"Hi.Mappings","type":"Namespace","items":[{"name":"FileTimeSection","href":"Hi.Mappings.FileTimeSection.html","topicHref":"Hi.Mappings.FileTimeSection.html","topicUid":"Hi.Mappings.FileTimeSection","type":"Class"},{"name":"FileTimeSection.TimeOption","href":"Hi.Mappings.FileTimeSection.TimeOption.html","topicHref":"Hi.Mappings.FileTimeSection.TimeOption.html","topicUid":"Hi.Mappings.FileTimeSection.TimeOption","type":"Enum"}]},{"name":"Hi.Mech","href":"Hi.Mech.html","topicHref":"Hi.Mech.html","topicUid":"Hi.Mech","type":"Namespace","items":[{"name":"GeneralMechanism","href":"Hi.Mech.GeneralMechanism.html","topicHref":"Hi.Mech.GeneralMechanism.html","topicUid":"Hi.Mech.GeneralMechanism","type":"Class"},{"name":"IGetAnchorToSolidDictionary","href":"Hi.Mech.IGetAnchorToSolidDictionary.html","topicHref":"Hi.Mech.IGetAnchorToSolidDictionary.html","topicUid":"Hi.Mech.IGetAnchorToSolidDictionary","type":"Interface"},{"name":"IGetMachiningChain","href":"Hi.Mech.IGetMachiningChain.html","topicHref":"Hi.Mech.IGetMachiningChain.html","topicUid":"Hi.Mech.IGetMachiningChain","type":"Interface"},{"name":"IMachiningChain","href":"Hi.Mech.IMachiningChain.html","topicHref":"Hi.Mech.IMachiningChain.html","topicUid":"Hi.Mech.IMachiningChain","type":"Interface"},{"name":"IMachiningChainSource","href":"Hi.Mech.IMachiningChainSource.html","topicHref":"Hi.Mech.IMachiningChainSource.html","topicUid":"Hi.Mech.IMachiningChainSource","type":"Interface"},{"name":"MachiningChainUtil","href":"Hi.Mech.MachiningChainUtil.html","topicHref":"Hi.Mech.MachiningChainUtil.html","topicUid":"Hi.Mech.MachiningChainUtil","type":"Class"}]},{"name":"Hi.Mech.Topo","href":"Hi.Mech.Topo.html","topicHref":"Hi.Mech.Topo.html","topicUid":"Hi.Mech.Topo","type":"Namespace","items":[{"name":"Anchor","href":"Hi.Mech.Topo.Anchor.html","topicHref":"Hi.Mech.Topo.Anchor.html","topicUid":"Hi.Mech.Topo.Anchor","type":"Class"},{"name":"AnchorFuncSource","href":"Hi.Mech.Topo.AnchorFuncSource.html","topicHref":"Hi.Mech.Topo.AnchorFuncSource.html","topicUid":"Hi.Mech.Topo.AnchorFuncSource","type":"Class"},{"name":"AnchoredBoxable","href":"Hi.Mech.Topo.AnchoredBoxable.html","topicHref":"Hi.Mech.Topo.AnchoredBoxable.html","topicUid":"Hi.Mech.Topo.AnchoredBoxable","type":"Class"},{"name":"AnchoredDisplayee","href":"Hi.Mech.Topo.AnchoredDisplayee.html","topicHref":"Hi.Mech.Topo.AnchoredDisplayee.html","topicUid":"Hi.Mech.Topo.AnchoredDisplayee","type":"Class"},{"name":"Asmb","href":"Hi.Mech.Topo.Asmb.html","topicHref":"Hi.Mech.Topo.Asmb.html","topicUid":"Hi.Mech.Topo.Asmb","type":"Class"},{"name":"AsmbDraw","href":"Hi.Mech.Topo.AsmbDraw.html","topicHref":"Hi.Mech.Topo.AsmbDraw.html","topicUid":"Hi.Mech.Topo.AsmbDraw","type":"Class"},{"name":"Branch","href":"Hi.Mech.Topo.Branch.html","topicHref":"Hi.Mech.Topo.Branch.html","topicUid":"Hi.Mech.Topo.Branch","type":"Class"},{"name":"DirectionBranchPack","href":"Hi.Mech.Topo.DirectionBranchPack.html","topicHref":"Hi.Mech.Topo.DirectionBranchPack.html","topicUid":"Hi.Mech.Topo.DirectionBranchPack","type":"Class"},{"name":"DirectionBranchPackUtil","href":"Hi.Mech.Topo.DirectionBranchPackUtil.html","topicHref":"Hi.Mech.Topo.DirectionBranchPackUtil.html","topicUid":"Hi.Mech.Topo.DirectionBranchPackUtil","type":"Class"},{"name":"DynamicFreeform","href":"Hi.Mech.Topo.DynamicFreeform.html","topicHref":"Hi.Mech.Topo.DynamicFreeform.html","topicUid":"Hi.Mech.Topo.DynamicFreeform","type":"Class"},{"name":"DynamicRotation","href":"Hi.Mech.Topo.DynamicRotation.html","topicHref":"Hi.Mech.Topo.DynamicRotation.html","topicUid":"Hi.Mech.Topo.DynamicRotation","type":"Class"},{"name":"DynamicTranslation","href":"Hi.Mech.Topo.DynamicTranslation.html","topicHref":"Hi.Mech.Topo.DynamicTranslation.html","topicUid":"Hi.Mech.Topo.DynamicTranslation","type":"Class"},{"name":"GeneralTransform","href":"Hi.Mech.Topo.GeneralTransform.html","topicHref":"Hi.Mech.Topo.GeneralTransform.html","topicUid":"Hi.Mech.Topo.GeneralTransform","type":"Class"},{"name":"IAnchoredDisplayee","href":"Hi.Mech.Topo.IAnchoredDisplayee.html","topicHref":"Hi.Mech.Topo.IAnchoredDisplayee.html","topicUid":"Hi.Mech.Topo.IAnchoredDisplayee","type":"Interface"},{"name":"IDynamicRegular","href":"Hi.Mech.Topo.IDynamicRegular.html","topicHref":"Hi.Mech.Topo.IDynamicRegular.html","topicUid":"Hi.Mech.Topo.IDynamicRegular","type":"Interface"},{"name":"IDynamicTransformer","href":"Hi.Mech.Topo.IDynamicTransformer.html","topicHref":"Hi.Mech.Topo.IDynamicTransformer.html","topicUid":"Hi.Mech.Topo.IDynamicTransformer","type":"Interface"},{"name":"IGetAnchor","href":"Hi.Mech.Topo.IGetAnchor.html","topicHref":"Hi.Mech.Topo.IGetAnchor.html","topicUid":"Hi.Mech.Topo.IGetAnchor","type":"Interface"},{"name":"IGetAnchoredDisplayeeList","href":"Hi.Mech.Topo.IGetAnchoredDisplayeeList.html","topicHref":"Hi.Mech.Topo.IGetAnchoredDisplayeeList.html","topicUid":"Hi.Mech.Topo.IGetAnchoredDisplayeeList","type":"Interface"},{"name":"IGetAsmb","href":"Hi.Mech.Topo.IGetAsmb.html","topicHref":"Hi.Mech.Topo.IGetAsmb.html","topicUid":"Hi.Mech.Topo.IGetAsmb","type":"Interface"},{"name":"IGetFletchBuckle","href":"Hi.Mech.Topo.IGetFletchBuckle.html","topicHref":"Hi.Mech.Topo.IGetFletchBuckle.html","topicUid":"Hi.Mech.Topo.IGetFletchBuckle","type":"Interface"},{"name":"IGetInverseTransformer","href":"Hi.Mech.Topo.IGetInverseTransformer.html","topicHref":"Hi.Mech.Topo.IGetInverseTransformer.html","topicUid":"Hi.Mech.Topo.IGetInverseTransformer","type":"Interface"},{"name":"IGetTopoIndex","href":"Hi.Mech.Topo.IGetTopoIndex.html","topicHref":"Hi.Mech.Topo.IGetTopoIndex.html","topicUid":"Hi.Mech.Topo.IGetTopoIndex","type":"Interface"},{"name":"IStaticTransformer","href":"Hi.Mech.Topo.IStaticTransformer.html","topicHref":"Hi.Mech.Topo.IStaticTransformer.html","topicUid":"Hi.Mech.Topo.IStaticTransformer","type":"Interface"},{"name":"ITopo","href":"Hi.Mech.Topo.ITopo.html","topicHref":"Hi.Mech.Topo.ITopo.html","topicUid":"Hi.Mech.Topo.ITopo","type":"Interface"},{"name":"ITopoDisplayee","href":"Hi.Mech.Topo.ITopoDisplayee.html","topicHref":"Hi.Mech.Topo.ITopoDisplayee.html","topicUid":"Hi.Mech.Topo.ITopoDisplayee","type":"Interface"},{"name":"ITransformer","href":"Hi.Mech.Topo.ITransformer.html","topicHref":"Hi.Mech.Topo.ITransformer.html","topicUid":"Hi.Mech.Topo.ITransformer","type":"Interface"},{"name":"ITransformerProperty","href":"Hi.Mech.Topo.ITransformerProperty.html","topicHref":"Hi.Mech.Topo.ITransformerProperty.html","topicUid":"Hi.Mech.Topo.ITransformerProperty","type":"Interface"},{"name":"NoTransform","href":"Hi.Mech.Topo.NoTransform.html","topicHref":"Hi.Mech.Topo.NoTransform.html","topicUid":"Hi.Mech.Topo.NoTransform","type":"Class"},{"name":"StackTransformer","href":"Hi.Mech.Topo.StackTransformer.html","topicHref":"Hi.Mech.Topo.StackTransformer.html","topicUid":"Hi.Mech.Topo.StackTransformer","type":"Class"},{"name":"StaticFreeform","href":"Hi.Mech.Topo.StaticFreeform.html","topicHref":"Hi.Mech.Topo.StaticFreeform.html","topicUid":"Hi.Mech.Topo.StaticFreeform","type":"Class"},{"name":"StaticRotation","href":"Hi.Mech.Topo.StaticRotation.html","topicHref":"Hi.Mech.Topo.StaticRotation.html","topicUid":"Hi.Mech.Topo.StaticRotation","type":"Class"},{"name":"StaticTranslation","href":"Hi.Mech.Topo.StaticTranslation.html","topicHref":"Hi.Mech.Topo.StaticTranslation.html","topicUid":"Hi.Mech.Topo.StaticTranslation","type":"Class"},{"name":"TopoDisplayee","href":"Hi.Mech.Topo.TopoDisplayee.html","topicHref":"Hi.Mech.Topo.TopoDisplayee.html","topicUid":"Hi.Mech.Topo.TopoDisplayee","type":"Class"},{"name":"TopoDisplayeeUtil","href":"Hi.Mech.Topo.TopoDisplayeeUtil.html","topicHref":"Hi.Mech.Topo.TopoDisplayeeUtil.html","topicUid":"Hi.Mech.Topo.TopoDisplayeeUtil","type":"Class"},{"name":"TopoReflection","href":"Hi.Mech.Topo.TopoReflection.html","topicHref":"Hi.Mech.Topo.TopoReflection.html","topicUid":"Hi.Mech.Topo.TopoReflection","type":"Class"},{"name":"TopoUtil","href":"Hi.Mech.Topo.TopoUtil.html","topicHref":"Hi.Mech.Topo.TopoUtil.html","topicUid":"Hi.Mech.Topo.TopoUtil","type":"Class"},{"name":"TransformerUtil","href":"Hi.Mech.Topo.TransformerUtil.html","topicHref":"Hi.Mech.Topo.TransformerUtil.html","topicUid":"Hi.Mech.Topo.TransformerUtil","type":"Class"}]},{"name":"Hi.Milling","href":"Hi.Milling.html","topicHref":"Hi.Milling.html","topicUid":"Hi.Milling","type":"Namespace","items":[{"name":"IGetDiameter","href":"Hi.Milling.IGetDiameter.html","topicHref":"Hi.Milling.IGetDiameter.html","topicUid":"Hi.Milling.IGetDiameter","type":"Interface"},{"name":"IGetFluteHeight","href":"Hi.Milling.IGetFluteHeight.html","topicHref":"Hi.Milling.IGetFluteHeight.html","topicUid":"Hi.Milling.IGetFluteHeight","type":"Interface"},{"name":"IGetMillingGeomBrief","href":"Hi.Milling.IGetMillingGeomBrief.html","topicHref":"Hi.Milling.IGetMillingGeomBrief.html","topicUid":"Hi.Milling.IGetMillingGeomBrief","type":"Interface"},{"name":"IGetRadialReliefAngle","href":"Hi.Milling.IGetRadialReliefAngle.html","topicHref":"Hi.Milling.IGetRadialReliefAngle.html","topicUid":"Hi.Milling.IGetRadialReliefAngle","type":"Interface"},{"name":"IMillingGeomBriefAccessor","href":"Hi.Milling.IMillingGeomBriefAccessor.html","topicHref":"Hi.Milling.IMillingGeomBriefAccessor.html","topicUid":"Hi.Milling.IMillingGeomBriefAccessor","type":"Interface"},{"name":"MillingGeomBrief","href":"Hi.Milling.MillingGeomBrief.html","topicHref":"Hi.Milling.MillingGeomBrief.html","topicUid":"Hi.Milling.MillingGeomBrief","type":"Class"},{"name":"MillingRemovalUtil","href":"Hi.Milling.MillingRemovalUtil.html","topicHref":"Hi.Milling.MillingRemovalUtil.html","topicUid":"Hi.Milling.MillingRemovalUtil","type":"Class"},{"name":"SpindleCapability","href":"Hi.Milling.SpindleCapability.html","topicHref":"Hi.Milling.SpindleCapability.html","topicUid":"Hi.Milling.SpindleCapability","type":"Class"}]},{"name":"Hi.Milling.Apts","href":"Hi.Milling.Apts.html","topicHref":"Hi.Milling.Apts.html","topicUid":"Hi.Milling.Apts","type":"Namespace","items":[{"name":"AptDerivative","href":"Hi.Milling.Apts.AptDerivative.html","topicHref":"Hi.Milling.Apts.AptDerivative.html","topicUid":"Hi.Milling.Apts.AptDerivative","type":"Class"},{"name":"BallApt","href":"Hi.Milling.Apts.BallApt.html","topicHref":"Hi.Milling.Apts.BallApt.html","topicUid":"Hi.Milling.Apts.BallApt","type":"Class"},{"name":"BullNoseApt","href":"Hi.Milling.Apts.BullNoseApt.html","topicHref":"Hi.Milling.Apts.BullNoseApt.html","topicUid":"Hi.Milling.Apts.BullNoseApt","type":"Class"},{"name":"ColumnApt","href":"Hi.Milling.Apts.ColumnApt.html","topicHref":"Hi.Milling.Apts.ColumnApt.html","topicUid":"Hi.Milling.Apts.ColumnApt","type":"Class"},{"name":"ConeApt","href":"Hi.Milling.Apts.ConeApt.html","topicHref":"Hi.Milling.Apts.ConeApt.html","topicUid":"Hi.Milling.Apts.ConeApt","type":"Class"},{"name":"ExactColumnApt","href":"Hi.Milling.Apts.ExactColumnApt.html","topicHref":"Hi.Milling.Apts.ExactColumnApt.html","topicUid":"Hi.Milling.Apts.ExactColumnApt","type":"Class"},{"name":"GeneralApt","href":"Hi.Milling.Apts.GeneralApt.html","topicHref":"Hi.Milling.Apts.GeneralApt.html","topicUid":"Hi.Milling.Apts.GeneralApt","type":"Class"},{"name":"IAptAlpha","href":"Hi.Milling.Apts.IAptAlpha.html","topicHref":"Hi.Milling.Apts.IAptAlpha.html","topicUid":"Hi.Milling.Apts.IAptAlpha","type":"Interface"},{"name":"IAptBased","href":"Hi.Milling.Apts.IAptBased.html","topicHref":"Hi.Milling.Apts.IAptBased.html","topicUid":"Hi.Milling.Apts.IAptBased","type":"Interface"},{"name":"IAptBeta","href":"Hi.Milling.Apts.IAptBeta.html","topicHref":"Hi.Milling.Apts.IAptBeta.html","topicUid":"Hi.Milling.Apts.IAptBeta","type":"Interface"},{"name":"IAptRc","href":"Hi.Milling.Apts.IAptRc.html","topicHref":"Hi.Milling.Apts.IAptRc.html","topicUid":"Hi.Milling.Apts.IAptRc","type":"Interface"},{"name":"IAptRr","href":"Hi.Milling.Apts.IAptRr.html","topicHref":"Hi.Milling.Apts.IAptRr.html","topicUid":"Hi.Milling.Apts.IAptRr","type":"Interface"},{"name":"IAptRz","href":"Hi.Milling.Apts.IAptRz.html","topicHref":"Hi.Milling.Apts.IAptRz.html","topicUid":"Hi.Milling.Apts.IAptRz","type":"Interface"},{"name":"IGetApt","href":"Hi.Milling.Apts.IGetApt.html","topicHref":"Hi.Milling.Apts.IGetApt.html","topicUid":"Hi.Milling.Apts.IGetApt","type":"Interface"},{"name":"IGetGeneralApt","href":"Hi.Milling.Apts.IGetGeneralApt.html","topicHref":"Hi.Milling.Apts.IGetGeneralApt.html","topicUid":"Hi.Milling.Apts.IGetGeneralApt","type":"Interface"},{"name":"TaperApt","href":"Hi.Milling.Apts.TaperApt.html","topicHref":"Hi.Milling.Apts.TaperApt.html","topicUid":"Hi.Milling.Apts.TaperApt","type":"Class"},{"name":"apt_t","href":"Hi.Milling.Apts.apt_t.html","topicHref":"Hi.Milling.Apts.apt_t.html","topicUid":"Hi.Milling.Apts.apt_t","type":"Struct"}]},{"name":"Hi.Milling.Cutters","href":"Hi.Milling.Cutters.html","topicHref":"Hi.Milling.Cutters.html","topicUid":"Hi.Milling.Cutters","type":"Namespace","items":[{"name":"AptProfile","href":"Hi.Milling.Cutters.AptProfile.html","topicHref":"Hi.Milling.Cutters.AptProfile.html","topicUid":"Hi.Milling.Cutters.AptProfile","type":"Class"},{"name":"ConstRatioProfile","href":"Hi.Milling.Cutters.ConstRatioProfile.html","topicHref":"Hi.Milling.Cutters.ConstRatioProfile.html","topicUid":"Hi.Milling.Cutters.ConstRatioProfile","type":"Class"},{"name":"CustomSpinningProfile","href":"Hi.Milling.Cutters.CustomSpinningProfile.html","topicHref":"Hi.Milling.Cutters.CustomSpinningProfile.html","topicUid":"Hi.Milling.Cutters.CustomSpinningProfile","type":"Class"},{"name":"CutterUtil","href":"Hi.Milling.Cutters.CutterUtil.html","topicHref":"Hi.Milling.Cutters.CutterUtil.html","topicUid":"Hi.Milling.Cutters.CutterUtil","type":"Class"},{"name":"FluteContourDisplayee","href":"Hi.Milling.Cutters.FluteContourDisplayee.html","topicHref":"Hi.Milling.Cutters.FluteContourDisplayee.html","topicUid":"Hi.Milling.Cutters.FluteContourDisplayee","type":"Class"},{"name":"FluteDependentRatioProfile","href":"Hi.Milling.Cutters.FluteDependentRatioProfile.html","topicHref":"Hi.Milling.Cutters.FluteDependentRatioProfile.html","topicUid":"Hi.Milling.Cutters.FluteDependentRatioProfile","type":"Class"},{"name":"IShaperProfile","href":"Hi.Milling.Cutters.IShaperProfile.html","topicHref":"Hi.Milling.Cutters.IShaperProfile.html","topicUid":"Hi.Milling.Cutters.IShaperProfile","type":"Interface"},{"name":"MillingCutter","href":"Hi.Milling.Cutters.MillingCutter.html","topicHref":"Hi.Milling.Cutters.MillingCutter.html","topicUid":"Hi.Milling.Cutters.MillingCutter","type":"Class"},{"name":"MillingCutter.IntegralModeEnum","href":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum.html","topicHref":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum.html","topicUid":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum","type":"Enum"},{"name":"MillingCutter.MassAssignmentMode","href":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode.html","topicHref":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode.html","topicUid":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode","type":"Enum"},{"name":"MillingCutterEditorDisplayee","href":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.html","topicHref":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.html","topicUid":"Hi.Milling.Cutters.MillingCutterEditorDisplayee","type":"Class"},{"name":"MillingCutterEditorDisplayee.ShapeModeEnum","href":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum.html","topicHref":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum.html","topicUid":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum","type":"Enum"}]},{"name":"Hi.Milling.Engagements","href":"Hi.Milling.Engagements.html","topicHref":"Hi.Milling.Engagements.html","topicUid":"Hi.Milling.Engagements","type":"Namespace","items":[{"name":"BitwiseMillingEngagement","href":"Hi.Milling.Engagements.BitwiseMillingEngagement.html","topicHref":"Hi.Milling.Engagements.BitwiseMillingEngagement.html","topicUid":"Hi.Milling.Engagements.BitwiseMillingEngagement","type":"Class"},{"name":"EngagementLayer","href":"Hi.Milling.Engagements.EngagementLayer.html","topicHref":"Hi.Milling.Engagements.EngagementLayer.html","topicUid":"Hi.Milling.Engagements.EngagementLayer","type":"Class"},{"name":"EngagementSlice","href":"Hi.Milling.Engagements.EngagementSlice.html","topicHref":"Hi.Milling.Engagements.EngagementSlice.html","topicUid":"Hi.Milling.Engagements.EngagementSlice","type":"Class"},{"name":"IBitwiseMillingEngagementSupport","href":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport.html","topicHref":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport.html","topicUid":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport","type":"Interface"},{"name":"IGetLayerMillingEngagement","href":"Hi.Milling.Engagements.IGetLayerMillingEngagement.html","topicHref":"Hi.Milling.Engagements.IGetLayerMillingEngagement.html","topicUid":"Hi.Milling.Engagements.IGetLayerMillingEngagement","type":"Interface"},{"name":"LayerMillingEngagement","href":"Hi.Milling.Engagements.LayerMillingEngagement.html","topicHref":"Hi.Milling.Engagements.LayerMillingEngagement.html","topicUid":"Hi.Milling.Engagements.LayerMillingEngagement","type":"Class"},{"name":"MillingEngagementUtil","href":"Hi.Milling.Engagements.MillingEngagementUtil.html","topicHref":"Hi.Milling.Engagements.MillingEngagementUtil.html","topicUid":"Hi.Milling.Engagements.MillingEngagementUtil","type":"Class"}]},{"name":"Hi.Milling.FluteContours","href":"Hi.Milling.FluteContours.html","topicHref":"Hi.Milling.FluteContours.html","topicUid":"Hi.Milling.FluteContours","type":"Namespace","items":[{"name":"ConstHelixSideContour","href":"Hi.Milling.FluteContours.ConstHelixSideContour.html","topicHref":"Hi.Milling.FluteContours.ConstHelixSideContour.html","topicUid":"Hi.Milling.FluteContours.ConstHelixSideContour","type":"Class"},{"name":"FluteContour","href":"Hi.Milling.FluteContours.FluteContour.html","topicHref":"Hi.Milling.FluteContours.FluteContour.html","topicUid":"Hi.Milling.FluteContours.FluteContour","type":"Class"},{"name":"FluteContourUtil","href":"Hi.Milling.FluteContours.FluteContourUtil.html","topicHref":"Hi.Milling.FluteContours.FluteContourUtil.html","topicUid":"Hi.Milling.FluteContours.FluteContourUtil","type":"Class"},{"name":"FreeContourTray","href":"Hi.Milling.FluteContours.FreeContourTray.html","topicHref":"Hi.Milling.FluteContours.FreeContourTray.html","topicUid":"Hi.Milling.FluteContours.FreeContourTray","type":"Class"},{"name":"FreeformSideContour","href":"Hi.Milling.FluteContours.FreeformSideContour.html","topicHref":"Hi.Milling.FluteContours.FreeformSideContour.html","topicUid":"Hi.Milling.FluteContours.FreeformSideContour","type":"Class"},{"name":"IBottomContour","href":"Hi.Milling.FluteContours.IBottomContour.html","topicHref":"Hi.Milling.FluteContours.IBottomContour.html","topicUid":"Hi.Milling.FluteContours.IBottomContour","type":"Interface"},{"name":"IContourTray","href":"Hi.Milling.FluteContours.IContourTray.html","topicHref":"Hi.Milling.FluteContours.IContourTray.html","topicUid":"Hi.Milling.FluteContours.IContourTray","type":"Interface"},{"name":"IFluteNumSourceProperty","href":"Hi.Milling.FluteContours.IFluteNumSourceProperty.html","topicHref":"Hi.Milling.FluteContours.IFluteNumSourceProperty.html","topicUid":"Hi.Milling.FluteContours.IFluteNumSourceProperty","type":"Interface"},{"name":"IGetFluteNum","href":"Hi.Milling.FluteContours.IGetFluteNum.html","topicHref":"Hi.Milling.FluteContours.IGetFluteNum.html","topicUid":"Hi.Milling.FluteContours.IGetFluteNum","type":"Interface"},{"name":"ISideContour","href":"Hi.Milling.FluteContours.ISideContour.html","topicHref":"Hi.Milling.FluteContours.ISideContour.html","topicUid":"Hi.Milling.FluteContours.ISideContour","type":"Interface"},{"name":"IWorkingContour","href":"Hi.Milling.FluteContours.IWorkingContour.html","topicHref":"Hi.Milling.FluteContours.IWorkingContour.html","topicUid":"Hi.Milling.FluteContours.IWorkingContour","type":"Interface"},{"name":"ShiftedWorkingContour","href":"Hi.Milling.FluteContours.ShiftedWorkingContour.html","topicHref":"Hi.Milling.FluteContours.ShiftedWorkingContour.html","topicUid":"Hi.Milling.FluteContours.ShiftedWorkingContour","type":"Class"},{"name":"SideContourDisplayee","href":"Hi.Milling.FluteContours.SideContourDisplayee.html","topicHref":"Hi.Milling.FluteContours.SideContourDisplayee.html","topicUid":"Hi.Milling.FluteContours.SideContourDisplayee","type":"Class"},{"name":"SlideBottomContour","href":"Hi.Milling.FluteContours.SlideBottomContour.html","topicHref":"Hi.Milling.FluteContours.SlideBottomContour.html","topicUid":"Hi.Milling.FluteContours.SlideBottomContour","type":"Class"},{"name":"SpanContourPos4d","href":"Hi.Milling.FluteContours.SpanContourPos4d.html","topicHref":"Hi.Milling.FluteContours.SpanContourPos4d.html","topicUid":"Hi.Milling.FluteContours.SpanContourPos4d","type":"Class"},{"name":"UniformContourTray","href":"Hi.Milling.FluteContours.UniformContourTray.html","topicHref":"Hi.Milling.FluteContours.UniformContourTray.html","topicUid":"Hi.Milling.FluteContours.UniformContourTray","type":"Class"}]},{"name":"Hi.Milling.MillingTools","href":"Hi.Milling.MillingTools.html","topicHref":"Hi.Milling.MillingTools.html","topicUid":"Hi.Milling.MillingTools","type":"Namespace","items":[{"name":"MillingTool","href":"Hi.Milling.MillingTools.MillingTool.html","topicHref":"Hi.Milling.MillingTools.MillingTool.html","topicUid":"Hi.Milling.MillingTools.MillingTool","type":"Class"},{"name":"MillingToolAnchorReference","href":"Hi.Milling.MillingTools.MillingToolAnchorReference.html","topicHref":"Hi.Milling.MillingTools.MillingToolAnchorReference.html","topicUid":"Hi.Milling.MillingTools.MillingToolAnchorReference","type":"Enum"},{"name":"MillingToolEditorDisplayee","href":"Hi.Milling.MillingTools.MillingToolEditorDisplayee.html","topicHref":"Hi.Milling.MillingTools.MillingToolEditorDisplayee.html","topicUid":"Hi.Milling.MillingTools.MillingToolEditorDisplayee","type":"Class"},{"name":"MillingToolUtil","href":"Hi.Milling.MillingTools.MillingToolUtil.html","topicHref":"Hi.Milling.MillingTools.MillingToolUtil.html","topicUid":"Hi.Milling.MillingTools.MillingToolUtil","type":"Class"}]},{"name":"Hi.MillingForces","href":"Hi.MillingForces.html","topicHref":"Hi.MillingForces.html","topicUid":"Hi.MillingForces","type":"Namespace","items":[{"name":"FluteZData","href":"Hi.MillingForces.FluteZData.html","topicHref":"Hi.MillingForces.FluteZData.html","topicUid":"Hi.MillingForces.FluteZData","type":"Class"},{"name":"IGetMillingForce","href":"Hi.MillingForces.IGetMillingForce.html","topicHref":"Hi.MillingForces.IGetMillingForce.html","topicUid":"Hi.MillingForces.IGetMillingForce","type":"Interface"},{"name":"IMillingForceAccessor","href":"Hi.MillingForces.IMillingForceAccessor.html","topicHref":"Hi.MillingForces.IMillingForceAccessor.html","topicUid":"Hi.MillingForces.IMillingForceAccessor","type":"Interface"},{"name":"MillingForce","href":"Hi.MillingForces.MillingForce.html","topicHref":"Hi.MillingForces.MillingForce.html","topicUid":"Hi.MillingForces.MillingForce","type":"Class"},{"name":"MillingForceLicense","href":"Hi.MillingForces.MillingForceLicense.html","topicHref":"Hi.MillingForces.MillingForceLicense.html","topicUid":"Hi.MillingForces.MillingForceLicense","type":"Class"},{"name":"MillingForceLuggage","href":"Hi.MillingForces.MillingForceLuggage.html","topicHref":"Hi.MillingForces.MillingForceLuggage.html","topicUid":"Hi.MillingForces.MillingForceLuggage","type":"Class"},{"name":"MillingForceUtil","href":"Hi.MillingForces.MillingForceUtil.html","topicHref":"Hi.MillingForces.MillingForceUtil.html","topicUid":"Hi.MillingForces.MillingForceUtil","type":"Class"},{"name":"MillingForceUtil.AnglePack","href":"Hi.MillingForces.MillingForceUtil.AnglePack.html","topicHref":"Hi.MillingForces.MillingForceUtil.AnglePack.html","topicUid":"Hi.MillingForces.MillingForceUtil.AnglePack","type":"Class"},{"name":"MillingPhysicsBrief","href":"Hi.MillingForces.MillingPhysicsBrief.html","topicHref":"Hi.MillingForces.MillingPhysicsBrief.html","topicUid":"Hi.MillingForces.MillingPhysicsBrief","type":"Class"},{"name":"PhysicsUtil","href":"Hi.MillingForces.PhysicsUtil.html","topicHref":"Hi.MillingForces.PhysicsUtil.html","topicUid":"Hi.MillingForces.PhysicsUtil","type":"Class"},{"name":"ToolObservationReference","href":"Hi.MillingForces.ToolObservationReference.html","topicHref":"Hi.MillingForces.ToolObservationReference.html","topicUid":"Hi.MillingForces.ToolObservationReference","type":"Enum"}]},{"name":"Hi.MillingForces.Fittings","href":"Hi.MillingForces.Fittings.html","topicHref":"Hi.MillingForces.Fittings.html","topicUid":"Hi.MillingForces.Fittings","type":"Namespace","items":[{"name":"CuttingParaUtil","href":"Hi.MillingForces.Fittings.CuttingParaUtil.html","topicHref":"Hi.MillingForces.Fittings.CuttingParaUtil.html","topicUid":"Hi.MillingForces.Fittings.CuttingParaUtil","type":"Class"},{"name":"ICuttingPara","href":"Hi.MillingForces.Fittings.ICuttingPara.html","topicHref":"Hi.MillingForces.Fittings.ICuttingPara.html","topicUid":"Hi.MillingForces.Fittings.ICuttingPara","type":"Interface"},{"name":"IGetCuttingPara","href":"Hi.MillingForces.Fittings.IGetCuttingPara.html","topicHref":"Hi.MillingForces.Fittings.IGetCuttingPara.html","topicUid":"Hi.MillingForces.Fittings.IGetCuttingPara","type":"Interface"},{"name":"SampleCategory","href":"Hi.MillingForces.Fittings.SampleCategory.html","topicHref":"Hi.MillingForces.Fittings.SampleCategory.html","topicUid":"Hi.MillingForces.Fittings.SampleCategory","type":"Class"},{"name":"SampleFlag","href":"Hi.MillingForces.Fittings.SampleFlag.html","topicHref":"Hi.MillingForces.Fittings.SampleFlag.html","topicUid":"Hi.MillingForces.Fittings.SampleFlag","type":"Enum"},{"name":"SampleFlagUtil","href":"Hi.MillingForces.Fittings.SampleFlagUtil.html","topicHref":"Hi.MillingForces.Fittings.SampleFlagUtil.html","topicUid":"Hi.MillingForces.Fittings.SampleFlagUtil","type":"Class"},{"name":"SampleInstance","href":"Hi.MillingForces.Fittings.SampleInstance.html","topicHref":"Hi.MillingForces.Fittings.SampleInstance.html","topicUid":"Hi.MillingForces.Fittings.SampleInstance","type":"Class"},{"name":"TimeForce","href":"Hi.MillingForces.Fittings.TimeForce.html","topicHref":"Hi.MillingForces.Fittings.TimeForce.html","topicUid":"Hi.MillingForces.Fittings.TimeForce","type":"Class"},{"name":"TimeForceFrequencyDomain","href":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain.html","topicHref":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain.html","topicUid":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain","type":"Class"},{"name":"TimeForceSeries","href":"Hi.MillingForces.Fittings.TimeForceSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeForceSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeForceSeries","type":"Class"},{"name":"TimeForceUtil","href":"Hi.MillingForces.Fittings.TimeForceUtil.html","topicHref":"Hi.MillingForces.Fittings.TimeForceUtil.html","topicUid":"Hi.MillingForces.Fittings.TimeForceUtil","type":"Class"},{"name":"TimeVsForceSeries","href":"Hi.MillingForces.Fittings.TimeVsForceSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeVsForceSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeVsForceSeries","type":"Class"},{"name":"TimeVsTorqueSeries","href":"Hi.MillingForces.Fittings.TimeVsTorqueSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeVsTorqueSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeVsTorqueSeries","type":"Class"},{"name":"TrainingSample","href":"Hi.MillingForces.Fittings.TrainingSample.html","topicHref":"Hi.MillingForces.Fittings.TrainingSample.html","topicUid":"Hi.MillingForces.Fittings.TrainingSample","type":"Class"}]},{"name":"Hi.MillingForces.ProfileMillingParas","href":"Hi.MillingForces.ProfileMillingParas.html","topicHref":"Hi.MillingForces.ProfileMillingParas.html","topicUid":"Hi.MillingForces.ProfileMillingParas","type":"Namespace","items":[{"name":"IGetLocalProfileMillingPara","href":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara.html","topicHref":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara.html","topicUid":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara","type":"Interface"},{"name":"LocalProfileMillingPara","href":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html","topicHref":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html","topicUid":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara","type":"Class"},{"name":"ProfileMillingParaMap","href":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap.html","topicHref":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap.html","topicUid":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap","type":"Class"},{"name":"RtaMillingParaKey","href":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey.html","topicHref":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey.html","topicUid":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey","type":"Enum"}]},{"name":"Hi.MillingForces.RakeFaceCuttingParas","href":"Hi.MillingForces.RakeFaceCuttingParas.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas","type":"Namespace","items":[{"name":"IRakeFaceCuttingPara","href":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara","type":"Interface"},{"name":"MillingPhysicsUtil","href":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil","type":"Class"},{"name":"MultiFormRakeFaceCuttingPara","href":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara","type":"Class"},{"name":"RakeFaceCuttingPara2d","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d","type":"Class"},{"name":"RakeFaceCuttingPara3d","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d","type":"Class"},{"name":"RakeFaceCuttingParaMap","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap","type":"Class"}]},{"name":"Hi.MillingForces.Training","href":"Hi.MillingForces.Training.html","topicHref":"Hi.MillingForces.Training.html","topicUid":"Hi.MillingForces.Training","type":"Namespace","items":[{"name":"MillingTraining","href":"Hi.MillingForces.Training.MillingTraining.html","topicHref":"Hi.MillingForces.Training.MillingTraining.html","topicUid":"Hi.MillingForces.Training.MillingTraining","type":"Class"}]},{"name":"Hi.MillingProcs","href":"Hi.MillingProcs.html","topicHref":"Hi.MillingProcs.html","topicUid":"Hi.MillingProcs","type":"Namespace","items":[{"name":"MillingGuide","href":"Hi.MillingProcs.MillingGuide.html","topicHref":"Hi.MillingProcs.MillingGuide.html","topicUid":"Hi.MillingProcs.MillingGuide","type":"Class"}]},{"name":"Hi.MillingStepUtils","href":"Hi.MillingStepUtils.html","topicHref":"Hi.MillingStepUtils.html","topicUid":"Hi.MillingStepUtils","type":"Namespace","items":[{"name":"ClStripChartConfig","href":"Hi.MillingStepUtils.ClStripChartConfig.html","topicHref":"Hi.MillingStepUtils.ClStripChartConfig.html","topicUid":"Hi.MillingStepUtils.ClStripChartConfig","type":"Class"},{"name":"ClStripChartItemConfig","href":"Hi.MillingStepUtils.ClStripChartItemConfig.html","topicHref":"Hi.MillingStepUtils.ClStripChartItemConfig.html","topicUid":"Hi.MillingStepUtils.ClStripChartItemConfig","type":"Class"},{"name":"ForceCycleFlag","href":"Hi.MillingStepUtils.ForceCycleFlag.html","topicHref":"Hi.MillingStepUtils.ForceCycleFlag.html","topicUid":"Hi.MillingStepUtils.ForceCycleFlag","type":"Enum"},{"name":"ForceCycleLineDivConfig","href":"Hi.MillingStepUtils.ForceCycleLineDivConfig.html","topicHref":"Hi.MillingStepUtils.ForceCycleLineDivConfig.html","topicUid":"Hi.MillingStepUtils.ForceCycleLineDivConfig","type":"Class"},{"name":"LineChartVRangeMode","href":"Hi.MillingStepUtils.LineChartVRangeMode.html","topicHref":"Hi.MillingStepUtils.LineChartVRangeMode.html","topicUid":"Hi.MillingStepUtils.LineChartVRangeMode","type":"Enum"},{"name":"SpindleMomentCycleLineDivConfig","href":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig.html","topicHref":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig.html","topicUid":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig","type":"Class"},{"name":"TimeChartYConfig","href":"Hi.MillingStepUtils.TimeChartYConfig.html","topicHref":"Hi.MillingStepUtils.TimeChartYConfig.html","topicUid":"Hi.MillingStepUtils.TimeChartYConfig","type":"Class"}]},{"name":"Hi.MillingSteps","href":"Hi.MillingSteps.html","topicHref":"Hi.MillingSteps.html","topicUid":"Hi.MillingSteps","type":"Namespace","items":[{"name":"MillingInstance","href":"Hi.MillingSteps.MillingInstance.html","topicHref":"Hi.MillingSteps.MillingInstance.html","topicUid":"Hi.MillingSteps.MillingInstance","type":"Class"},{"name":"MillingStepLuggage","href":"Hi.MillingSteps.MillingStepLuggage.html","topicHref":"Hi.MillingSteps.MillingStepLuggage.html","topicUid":"Hi.MillingSteps.MillingStepLuggage","type":"Class"}]},{"name":"Hi.MongoUtils","href":"Hi.MongoUtils.html","topicHref":"Hi.MongoUtils.html","topicUid":"Hi.MongoUtils","type":"Namespace","items":[{"name":"IMongoRunner","href":"Hi.MongoUtils.IMongoRunner.html","topicHref":"Hi.MongoUtils.IMongoRunner.html","topicUid":"Hi.MongoUtils.IMongoRunner","type":"Interface"},{"name":"MongoRunnerOptions","href":"Hi.MongoUtils.MongoRunnerOptions.html","topicHref":"Hi.MongoUtils.MongoRunnerOptions.html","topicUid":"Hi.MongoUtils.MongoRunnerOptions","type":"Class"},{"name":"MongoServer","href":"Hi.MongoUtils.MongoServer.html","topicHref":"Hi.MongoUtils.MongoServer.html","topicUid":"Hi.MongoUtils.MongoServer","type":"Class"}]},{"name":"Hi.Motion.MatValves","href":"Hi.Motion.MatValves.html","topicHref":"Hi.Motion.MatValves.html","topicUid":"Hi.Motion.MatValves","type":"Namespace","items":[{"name":"ClMachiningValve","href":"Hi.Motion.MatValves.ClMachiningValve.html","topicHref":"Hi.Motion.MatValves.ClMachiningValve.html","topicUid":"Hi.Motion.MatValves.ClMachiningValve","type":"Class"},{"name":"IMotionValve","href":"Hi.Motion.MatValves.IMotionValve.html","topicHref":"Hi.Motion.MatValves.IMotionValve.html","topicUid":"Hi.Motion.MatValves.IMotionValve","type":"Interface"},{"name":"MacroMotionValve","href":"Hi.Motion.MatValves.MacroMotionValve.html","topicHref":"Hi.Motion.MatValves.MacroMotionValve.html","topicUid":"Hi.Motion.MatValves.MacroMotionValve","type":"Class"},{"name":"StepMotionValve","href":"Hi.Motion.MatValves.StepMotionValve.html","topicHref":"Hi.Motion.MatValves.StepMotionValve.html","topicUid":"Hi.Motion.MatValves.StepMotionValve","type":"Class"}]},{"name":"Hi.Native","href":"Hi.Native.html","topicHref":"Hi.Native.html","topicUid":"Hi.Native","type":"Namespace","items":[{"name":"StopSource","href":"Hi.Native.StopSource.html","topicHref":"Hi.Native.StopSource.html","topicUid":"Hi.Native.StopSource","type":"Class"},{"name":"StopToken","href":"Hi.Native.StopToken.html","topicHref":"Hi.Native.StopToken.html","topicUid":"Hi.Native.StopToken","type":"Class"},{"name":"StopTokenKit","href":"Hi.Native.StopTokenKit.html","topicHref":"Hi.Native.StopTokenKit.html","topicUid":"Hi.Native.StopTokenKit","type":"Class"},{"name":"StopTokenUtil","href":"Hi.Native.StopTokenUtil.html","topicHref":"Hi.Native.StopTokenUtil.html","topicUid":"Hi.Native.StopTokenUtil","type":"Class"},{"name":"bind_t","href":"Hi.Native.bind_t.html","topicHref":"Hi.Native.bind_t.html","topicUid":"Hi.Native.bind_t","type":"Struct"},{"name":"box2d","href":"Hi.Native.box2d.html","topicHref":"Hi.Native.box2d.html","topicUid":"Hi.Native.box2d","type":"Struct"},{"name":"box3d","href":"Hi.Native.box3d.html","topicHref":"Hi.Native.box3d.html","topicUid":"Hi.Native.box3d","type":"Struct"},{"name":"expand_to_box3d_func_t","href":"Hi.Native.expand_to_box3d_func_t.html","topicHref":"Hi.Native.expand_to_box3d_func_t.html","topicUid":"Hi.Native.expand_to_box3d_func_t","type":"Delegate"},{"name":"key_event_t","href":"Hi.Native.key_event_t.html","topicHref":"Hi.Native.key_event_t.html","topicUid":"Hi.Native.key_event_t","type":"Struct"},{"name":"key_table__transform_view_by_key_pressing_t","href":"Hi.Native.key_table__transform_view_by_key_pressing_t.html","topicHref":"Hi.Native.key_table__transform_view_by_key_pressing_t.html","topicUid":"Hi.Native.key_table__transform_view_by_key_pressing_t","type":"Struct"},{"name":"mat4d","href":"Hi.Native.mat4d.html","topicHref":"Hi.Native.mat4d.html","topicUid":"Hi.Native.mat4d","type":"Struct"},{"name":"mat_stack_t","href":"Hi.Native.mat_stack_t.html","topicHref":"Hi.Native.mat_stack_t.html","topicUid":"Hi.Native.mat_stack_t","type":"Struct"},{"name":"mouse_button_event_t","href":"Hi.Native.mouse_button_event_t.html","topicHref":"Hi.Native.mouse_button_event_t.html","topicUid":"Hi.Native.mouse_button_event_t","type":"Struct"},{"name":"mouse_button_table__transform_view_by_mouse_drag_t","href":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t.html","topicHref":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t.html","topicUid":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t","type":"Struct"},{"name":"mouse_move_event_t","href":"Hi.Native.mouse_move_event_t.html","topicHref":"Hi.Native.mouse_move_event_t.html","topicUid":"Hi.Native.mouse_move_event_t","type":"Struct"},{"name":"mouse_wheel_event_t","href":"Hi.Native.mouse_wheel_event_t.html","topicHref":"Hi.Native.mouse_wheel_event_t.html","topicUid":"Hi.Native.mouse_wheel_event_t","type":"Struct"},{"name":"panel_state_t","href":"Hi.Native.panel_state_t.html","topicHref":"Hi.Native.panel_state_t.html","topicUid":"Hi.Native.panel_state_t","type":"Struct"},{"name":"picking_event_t","href":"Hi.Native.picking_event_t.html","topicHref":"Hi.Native.picking_event_t.html","topicUid":"Hi.Native.picking_event_t","type":"Struct"},{"name":"picking_func_t","href":"Hi.Native.picking_func_t.html","topicHref":"Hi.Native.picking_func_t.html","topicUid":"Hi.Native.picking_func_t","type":"Delegate"},{"name":"picking_mark_t","href":"Hi.Native.picking_mark_t.html","topicHref":"Hi.Native.picking_mark_t.html","topicUid":"Hi.Native.picking_mark_t","type":"Struct"},{"name":"tri3d","href":"Hi.Native.tri3d.html","topicHref":"Hi.Native.tri3d.html","topicUid":"Hi.Native.tri3d","type":"Struct"},{"name":"ui_event_type","href":"Hi.Native.ui_event_type.html","topicHref":"Hi.Native.ui_event_type.html","topicUid":"Hi.Native.ui_event_type","type":"Enum"},{"name":"vec2d","href":"Hi.Native.vec2d.html","topicHref":"Hi.Native.vec2d.html","topicUid":"Hi.Native.vec2d","type":"Struct"},{"name":"vec3d","href":"Hi.Native.vec3d.html","topicHref":"Hi.Native.vec3d.html","topicUid":"Hi.Native.vec3d","type":"Struct"},{"name":"vec3f","href":"Hi.Native.vec3f.html","topicHref":"Hi.Native.vec3f.html","topicUid":"Hi.Native.vec3f","type":"Struct"}]},{"name":"Hi.NcMech","href":"Hi.NcMech.html","topicHref":"Hi.NcMech.html","topicUid":"Hi.NcMech","type":"Namespace","items":[{"name":"ICollisionIndexPairsSource","href":"Hi.NcMech.ICollisionIndexPairsSource.html","topicHref":"Hi.NcMech.ICollisionIndexPairsSource.html","topicUid":"Hi.NcMech.ICollisionIndexPairsSource","type":"Interface"}]},{"name":"Hi.NcMech.Fixtures","href":"Hi.NcMech.Fixtures.html","topicHref":"Hi.NcMech.Fixtures.html","topicUid":"Hi.NcMech.Fixtures","type":"Namespace","items":[{"name":"Fixture","href":"Hi.NcMech.Fixtures.Fixture.html","topicHref":"Hi.NcMech.Fixtures.Fixture.html","topicUid":"Hi.NcMech.Fixtures.Fixture","type":"Class"},{"name":"FixtureEditorDisplayee","href":"Hi.NcMech.Fixtures.FixtureEditorDisplayee.html","topicHref":"Hi.NcMech.Fixtures.FixtureEditorDisplayee.html","topicUid":"Hi.NcMech.Fixtures.FixtureEditorDisplayee","type":"Class"},{"name":"FixtureEditorDisplayeeConfig","href":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html","topicHref":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html","topicUid":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig","type":"Class"}]},{"name":"Hi.NcMech.Holders","href":"Hi.NcMech.Holders.html","topicHref":"Hi.NcMech.Holders.html","topicUid":"Hi.NcMech.Holders","type":"Namespace","items":[{"name":"CylindroidHolder","href":"Hi.NcMech.Holders.CylindroidHolder.html","topicHref":"Hi.NcMech.Holders.CylindroidHolder.html","topicUid":"Hi.NcMech.Holders.CylindroidHolder","type":"Class"},{"name":"FreeformHolder","href":"Hi.NcMech.Holders.FreeformHolder.html","topicHref":"Hi.NcMech.Holders.FreeformHolder.html","topicUid":"Hi.NcMech.Holders.FreeformHolder","type":"Class"},{"name":"HolderEditorDisplayee","href":"Hi.NcMech.Holders.HolderEditorDisplayee.html","topicHref":"Hi.NcMech.Holders.HolderEditorDisplayee.html","topicUid":"Hi.NcMech.Holders.HolderEditorDisplayee","type":"Class"},{"name":"IHolder","href":"Hi.NcMech.Holders.IHolder.html","topicHref":"Hi.NcMech.Holders.IHolder.html","topicUid":"Hi.NcMech.Holders.IHolder","type":"Interface"}]},{"name":"Hi.NcMech.Solids","href":"Hi.NcMech.Solids.html","topicHref":"Hi.NcMech.Solids.html","topicUid":"Hi.NcMech.Solids","type":"Namespace","items":[{"name":"IGetSolid","href":"Hi.NcMech.Solids.IGetSolid.html","topicHref":"Hi.NcMech.Solids.IGetSolid.html","topicUid":"Hi.NcMech.Solids.IGetSolid","type":"Interface"},{"name":"Solid","href":"Hi.NcMech.Solids.Solid.html","topicHref":"Hi.NcMech.Solids.Solid.html","topicUid":"Hi.NcMech.Solids.Solid","type":"Class"},{"name":"Solid.RenderingModeEnum","href":"Hi.NcMech.Solids.Solid.RenderingModeEnum.html","topicHref":"Hi.NcMech.Solids.Solid.RenderingModeEnum.html","topicUid":"Hi.NcMech.Solids.Solid.RenderingModeEnum","type":"Enum"},{"name":"SolidFuncSource","href":"Hi.NcMech.Solids.SolidFuncSource.html","topicHref":"Hi.NcMech.Solids.SolidFuncSource.html","topicUid":"Hi.NcMech.Solids.SolidFuncSource","type":"Class"}]},{"name":"Hi.NcMech.Topo","href":"Hi.NcMech.Topo.html","topicHref":"Hi.NcMech.Topo.html","topicUid":"Hi.NcMech.Topo","type":"Namespace","items":[{"name":"INcStroke","href":"Hi.NcMech.Topo.INcStroke.html","topicHref":"Hi.NcMech.Topo.INcStroke.html","topicUid":"Hi.NcMech.Topo.INcStroke","type":"Interface"},{"name":"INcTransformer","href":"Hi.NcMech.Topo.INcTransformer.html","topicHref":"Hi.NcMech.Topo.INcTransformer.html","topicUid":"Hi.NcMech.Topo.INcTransformer","type":"Interface"},{"name":"ITopoBrick","href":"Hi.NcMech.Topo.ITopoBrick.html","topicHref":"Hi.NcMech.Topo.ITopoBrick.html","topicUid":"Hi.NcMech.Topo.ITopoBrick","type":"Interface"},{"name":"NcRotation","href":"Hi.NcMech.Topo.NcRotation.html","topicHref":"Hi.NcMech.Topo.NcRotation.html","topicUid":"Hi.NcMech.Topo.NcRotation","type":"Class"},{"name":"NcTranslation","href":"Hi.NcMech.Topo.NcTranslation.html","topicHref":"Hi.NcMech.Topo.NcTranslation.html","topicUid":"Hi.NcMech.Topo.NcTranslation","type":"Class"},{"name":"SolidSourceTopoBrick","href":"Hi.NcMech.Topo.SolidSourceTopoBrick.html","topicHref":"Hi.NcMech.Topo.SolidSourceTopoBrick.html","topicUid":"Hi.NcMech.Topo.SolidSourceTopoBrick","type":"Class"},{"name":"StlSourceTopoBrick","href":"Hi.NcMech.Topo.StlSourceTopoBrick.html","topicHref":"Hi.NcMech.Topo.StlSourceTopoBrick.html","topicUid":"Hi.NcMech.Topo.StlSourceTopoBrick","type":"Class"}]},{"name":"Hi.NcMech.Workpieces","href":"Hi.NcMech.Workpieces.html","topicHref":"Hi.NcMech.Workpieces.html","topicUid":"Hi.NcMech.Workpieces","type":"Namespace","items":[{"name":"Workpiece","href":"Hi.NcMech.Workpieces.Workpiece.html","topicHref":"Hi.NcMech.Workpieces.Workpiece.html","topicUid":"Hi.NcMech.Workpieces.Workpiece","type":"Class"},{"name":"WorkpieceEditorDisplayee","href":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html","topicHref":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html","topicUid":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee","type":"Class"},{"name":"WorkpieceEditorDisplayeeConfig","href":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html","topicHref":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html","topicUid":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig","type":"Class"}]},{"name":"Hi.NcMech.Xyzabc","href":"Hi.NcMech.Xyzabc.html","topicHref":"Hi.NcMech.Xyzabc.html","topicUid":"Hi.NcMech.Xyzabc","type":"Namespace","items":[{"name":"CodeXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool","type":"Class"},{"name":"CodeXyzabcMachineToolUri","href":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html","topicHref":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html","topicUid":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri","type":"Class"},{"name":"GeneralXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool","type":"Class"},{"name":"IGetCodeXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool","type":"Interface"},{"name":"IXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.IXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.IXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.IXyzabcMachineTool","type":"Interface"}]},{"name":"Hi.NcOpt","href":"Hi.NcOpt.html","topicHref":"Hi.NcOpt.html","topicUid":"Hi.NcOpt","type":"Namespace","items":[{"name":"CuttingVelocityOptLimit","href":"Hi.NcOpt.CuttingVelocityOptLimit.html","topicHref":"Hi.NcOpt.CuttingVelocityOptLimit.html","topicUid":"Hi.NcOpt.CuttingVelocityOptLimit","type":"Class"},{"name":"FixedFeedPerCycleOptLimit","href":"Hi.NcOpt.FixedFeedPerCycleOptLimit.html","topicHref":"Hi.NcOpt.FixedFeedPerCycleOptLimit.html","topicUid":"Hi.NcOpt.FixedFeedPerCycleOptLimit","type":"Class"},{"name":"FixedFeedPerToothOptLimit","href":"Hi.NcOpt.FixedFeedPerToothOptLimit.html","topicHref":"Hi.NcOpt.FixedFeedPerToothOptLimit.html","topicUid":"Hi.NcOpt.FixedFeedPerToothOptLimit","type":"Class"},{"name":"ICutterOptLimitHost","href":"Hi.NcOpt.ICutterOptLimitHost.html","topicHref":"Hi.NcOpt.ICutterOptLimitHost.html","topicUid":"Hi.NcOpt.ICutterOptLimitHost","type":"Interface"},{"name":"ICutterOptOption","href":"Hi.NcOpt.ICutterOptOption.html","topicHref":"Hi.NcOpt.ICutterOptOption.html","topicUid":"Hi.NcOpt.ICutterOptOption","type":"Interface"},{"name":"ICuttingVelocityOptLimit","href":"Hi.NcOpt.ICuttingVelocityOptLimit.html","topicHref":"Hi.NcOpt.ICuttingVelocityOptLimit.html","topicUid":"Hi.NcOpt.ICuttingVelocityOptLimit","type":"Interface"},{"name":"IFeedPerToothOptLimit","href":"Hi.NcOpt.IFeedPerToothOptLimit.html","topicHref":"Hi.NcOpt.IFeedPerToothOptLimit.html","topicUid":"Hi.NcOpt.IFeedPerToothOptLimit","type":"Interface"},{"name":"MillingCutterOptOption","href":"Hi.NcOpt.MillingCutterOptOption.html","topicHref":"Hi.NcOpt.MillingCutterOptOption.html","topicUid":"Hi.NcOpt.MillingCutterOptOption","type":"Class"},{"name":"NcOptOption","href":"Hi.NcOpt.NcOptOption.html","topicHref":"Hi.NcOpt.NcOptOption.html","topicUid":"Hi.NcOpt.NcOptOption","type":"Class"},{"name":"NcOptProc","href":"Hi.NcOpt.NcOptProc.html","topicHref":"Hi.NcOpt.NcOptProc.html","topicUid":"Hi.NcOpt.NcOptProc","type":"Class"},{"name":"NcOptimizationEmbeddedLogMode","href":"Hi.NcOpt.NcOptimizationEmbeddedLogMode.html","topicHref":"Hi.NcOpt.NcOptimizationEmbeddedLogMode.html","topicUid":"Hi.NcOpt.NcOptimizationEmbeddedLogMode","type":"Enum"},{"name":"ShapeBasedCutterOptLimit","href":"Hi.NcOpt.ShapeBasedCutterOptLimit.html","topicHref":"Hi.NcOpt.ShapeBasedCutterOptLimit.html","topicUid":"Hi.NcOpt.ShapeBasedCutterOptLimit","type":"Class"}]},{"name":"Hi.NcStepUtils","href":"Hi.NcStepUtils.html","topicHref":"Hi.NcStepUtils.html","topicUid":"Hi.NcStepUtils","type":"Namespace","items":[{"name":"IGetNcStep0","href":"Hi.NcStepUtils.IGetNcStep0.html","topicHref":"Hi.NcStepUtils.IGetNcStep0.html","topicUid":"Hi.NcStepUtils.IGetNcStep0","type":"Interface"},{"name":"INcStep0","href":"Hi.NcStepUtils.INcStep0.html","topicHref":"Hi.NcStepUtils.INcStep0.html","topicUid":"Hi.NcStepUtils.INcStep0","type":"Interface"},{"name":"INcStepMonitee","href":"Hi.NcStepUtils.INcStepMonitee.html","topicHref":"Hi.NcStepUtils.INcStepMonitee.html","topicUid":"Hi.NcStepUtils.INcStepMonitee","type":"Interface"},{"name":"NcStepUtil","href":"Hi.NcStepUtils.NcStepUtil.html","topicHref":"Hi.NcStepUtils.NcStepUtil.html","topicUid":"Hi.NcStepUtils.NcStepUtil","type":"Class"}]},{"name":"Hi.Numerical","href":"Hi.Numerical.html","topicHref":"Hi.Numerical.html","topicUid":"Hi.Numerical","type":"Namespace","items":[{"name":"CncBrand","href":"Hi.Numerical.CncBrand.html","topicHref":"Hi.Numerical.CncBrand.html","topicUid":"Hi.Numerical.CncBrand","type":"Enum"},{"name":"CommentMark","href":"Hi.Numerical.CommentMark.html","topicHref":"Hi.Numerical.CommentMark.html","topicUid":"Hi.Numerical.CommentMark","type":"Enum"},{"name":"CoordinateEntryDisplayee","href":"Hi.Numerical.CoordinateEntryDisplayee.html","topicHref":"Hi.Numerical.CoordinateEntryDisplayee.html","topicUid":"Hi.Numerical.CoordinateEntryDisplayee","type":"Class"},{"name":"CoordinateEntryRenderingFlag","href":"Hi.Numerical.CoordinateEntryRenderingFlag.html","topicHref":"Hi.Numerical.CoordinateEntryRenderingFlag.html","topicUid":"Hi.Numerical.CoordinateEntryRenderingFlag","type":"Enum"},{"name":"CoordinateInterpolationMode","href":"Hi.Numerical.CoordinateInterpolationMode.html","topicHref":"Hi.Numerical.CoordinateInterpolationMode.html","topicUid":"Hi.Numerical.CoordinateInterpolationMode","type":"Enum"},{"name":"FlexDictionaryUtil","href":"Hi.Numerical.FlexDictionaryUtil.html","topicHref":"Hi.Numerical.FlexDictionaryUtil.html","topicUid":"Hi.Numerical.FlexDictionaryUtil","type":"Class"},{"name":"HeidenhainCoordinateEntryDisplayee","href":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee.html","topicHref":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee.html","topicUid":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee","type":"Class"},{"name":"IFlexDictionaryHost","href":"Hi.Numerical.IFlexDictionaryHost-1.html","topicHref":"Hi.Numerical.IFlexDictionaryHost-1.html","topicUid":"Hi.Numerical.IFlexDictionaryHost`1","type":"Interface"},{"name":"IGetFeedrate","href":"Hi.Numerical.IGetFeedrate.html","topicHref":"Hi.Numerical.IGetFeedrate.html","topicUid":"Hi.Numerical.IGetFeedrate","type":"Interface"},{"name":"IGetSpindleSpeed","href":"Hi.Numerical.IGetSpindleSpeed.html","topicHref":"Hi.Numerical.IGetSpindleSpeed.html","topicUid":"Hi.Numerical.IGetSpindleSpeed","type":"Interface"},{"name":"ISetFeedrate","href":"Hi.Numerical.ISetFeedrate.html","topicHref":"Hi.Numerical.ISetFeedrate.html","topicUid":"Hi.Numerical.ISetFeedrate","type":"Interface"},{"name":"ISetSpindleSpeed","href":"Hi.Numerical.ISetSpindleSpeed.html","topicHref":"Hi.Numerical.ISetSpindleSpeed.html","topicUid":"Hi.Numerical.ISetSpindleSpeed","type":"Interface"},{"name":"IsoCoordinateEntryDisplayee","href":"Hi.Numerical.IsoCoordinateEntryDisplayee.html","topicHref":"Hi.Numerical.IsoCoordinateEntryDisplayee.html","topicUid":"Hi.Numerical.IsoCoordinateEntryDisplayee","type":"Class"},{"name":"IsoCoordinateTable","href":"Hi.Numerical.IsoCoordinateTable.html","topicHref":"Hi.Numerical.IsoCoordinateTable.html","topicUid":"Hi.Numerical.IsoCoordinateTable","type":"Class"},{"name":"MechNcUtil","href":"Hi.Numerical.MechNcUtil.html","topicHref":"Hi.Numerical.MechNcUtil.html","topicUid":"Hi.Numerical.MechNcUtil","type":"Class"},{"name":"MillingToolOffsetTable","href":"Hi.Numerical.MillingToolOffsetTable.html","topicHref":"Hi.Numerical.MillingToolOffsetTable.html","topicUid":"Hi.Numerical.MillingToolOffsetTable","type":"Class"},{"name":"MillingToolOffsetTableRow","href":"Hi.Numerical.MillingToolOffsetTableRow.html","topicHref":"Hi.Numerical.MillingToolOffsetTableRow.html","topicUid":"Hi.Numerical.MillingToolOffsetTableRow","type":"Class"},{"name":"NcComment","href":"Hi.Numerical.NcComment.html","topicHref":"Hi.Numerical.NcComment.html","topicUid":"Hi.Numerical.NcComment","type":"Class"},{"name":"NcEnv","href":"Hi.Numerical.NcEnv.html","topicHref":"Hi.Numerical.NcEnv.html","topicUid":"Hi.Numerical.NcEnv","type":"Class"},{"name":"NcFlag","href":"Hi.Numerical.NcFlag.html","topicHref":"Hi.Numerical.NcFlag.html","topicUid":"Hi.Numerical.NcFlag","type":"Enum"},{"name":"NcFlagUtil","href":"Hi.Numerical.NcFlagUtil.html","topicHref":"Hi.Numerical.NcFlagUtil.html","topicUid":"Hi.Numerical.NcFlagUtil","type":"Class"},{"name":"NcGroup00","href":"Hi.Numerical.NcGroup00.html","topicHref":"Hi.Numerical.NcGroup00.html","topicUid":"Hi.Numerical.NcGroup00","type":"Enum"},{"name":"NcGroup01","href":"Hi.Numerical.NcGroup01.html","topicHref":"Hi.Numerical.NcGroup01.html","topicUid":"Hi.Numerical.NcGroup01","type":"Enum"},{"name":"NcGroup02","href":"Hi.Numerical.NcGroup02.html","topicHref":"Hi.Numerical.NcGroup02.html","topicUid":"Hi.Numerical.NcGroup02","type":"Enum"},{"name":"NcGroup03","href":"Hi.Numerical.NcGroup03.html","topicHref":"Hi.Numerical.NcGroup03.html","topicUid":"Hi.Numerical.NcGroup03","type":"Enum"},{"name":"NcGroup05","href":"Hi.Numerical.NcGroup05.html","topicHref":"Hi.Numerical.NcGroup05.html","topicUid":"Hi.Numerical.NcGroup05","type":"Enum"},{"name":"NcGroup06","href":"Hi.Numerical.NcGroup06.html","topicHref":"Hi.Numerical.NcGroup06.html","topicUid":"Hi.Numerical.NcGroup06","type":"Enum"},{"name":"NcGroup07","href":"Hi.Numerical.NcGroup07.html","topicHref":"Hi.Numerical.NcGroup07.html","topicUid":"Hi.Numerical.NcGroup07","type":"Enum"},{"name":"NcGroup08","href":"Hi.Numerical.NcGroup08.html","topicHref":"Hi.Numerical.NcGroup08.html","topicUid":"Hi.Numerical.NcGroup08","type":"Enum"},{"name":"NcGroup09","href":"Hi.Numerical.NcGroup09.html","topicHref":"Hi.Numerical.NcGroup09.html","topicUid":"Hi.Numerical.NcGroup09","type":"Enum"},{"name":"NcGroup10","href":"Hi.Numerical.NcGroup10.html","topicHref":"Hi.Numerical.NcGroup10.html","topicUid":"Hi.Numerical.NcGroup10","type":"Enum"},{"name":"NcGroup13","href":"Hi.Numerical.NcGroup13.html","topicHref":"Hi.Numerical.NcGroup13.html","topicUid":"Hi.Numerical.NcGroup13","type":"Enum"},{"name":"NcGroup14","href":"Hi.Numerical.NcGroup14.html","topicHref":"Hi.Numerical.NcGroup14.html","topicUid":"Hi.Numerical.NcGroup14","type":"Enum"},{"name":"NcGroup15","href":"Hi.Numerical.NcGroup15.html","topicHref":"Hi.Numerical.NcGroup15.html","topicUid":"Hi.Numerical.NcGroup15","type":"Enum"},{"name":"NcGroup16","href":"Hi.Numerical.NcGroup16.html","topicHref":"Hi.Numerical.NcGroup16.html","topicUid":"Hi.Numerical.NcGroup16","type":"Enum"},{"name":"NcGroup21","href":"Hi.Numerical.NcGroup21.html","topicHref":"Hi.Numerical.NcGroup21.html","topicUid":"Hi.Numerical.NcGroup21","type":"Enum"},{"name":"NcGroupAttribute","href":"Hi.Numerical.NcGroupAttribute.html","topicHref":"Hi.Numerical.NcGroupAttribute.html","topicUid":"Hi.Numerical.NcGroupAttribute","type":"Class"},{"name":"NcGroupHeidenhainM107M108","href":"Hi.Numerical.NcGroupHeidenhainM107M108.html","topicHref":"Hi.Numerical.NcGroupHeidenhainM107M108.html","topicUid":"Hi.Numerical.NcGroupHeidenhainM107M108","type":"Enum"},{"name":"NcGroupHeidenhainPlane","href":"Hi.Numerical.NcGroupHeidenhainPlane.html","topicHref":"Hi.Numerical.NcGroupHeidenhainPlane.html","topicUid":"Hi.Numerical.NcGroupHeidenhainPlane","type":"Enum"},{"name":"NcGroupHeidenhainShortestRotaryPath","href":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath.html","topicHref":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath.html","topicUid":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath","type":"Enum"},{"name":"NcGroupSpindleRotation","href":"Hi.Numerical.NcGroupSpindleRotation.html","topicHref":"Hi.Numerical.NcGroupSpindleRotation.html","topicUid":"Hi.Numerical.NcGroupSpindleRotation","type":"Enum"},{"name":"NcLifeCycleAttribute","href":"Hi.Numerical.NcLifeCycleAttribute.html","topicHref":"Hi.Numerical.NcLifeCycleAttribute.html","topicUid":"Hi.Numerical.NcLifeCycleAttribute","type":"Class"},{"name":"NcLifeCycleMode","href":"Hi.Numerical.NcLifeCycleMode.html","topicHref":"Hi.Numerical.NcLifeCycleMode.html","topicUid":"Hi.Numerical.NcLifeCycleMode","type":"Enum"},{"name":"NcLine","href":"Hi.Numerical.NcLine.html","topicHref":"Hi.Numerical.NcLine.html","topicUid":"Hi.Numerical.NcLine","type":"Class"},{"name":"NcNameAttribute","href":"Hi.Numerical.NcNameAttribute.html","topicHref":"Hi.Numerical.NcNameAttribute.html","topicUid":"Hi.Numerical.NcNameAttribute","type":"Class"},{"name":"NcNoteCache","href":"Hi.Numerical.NcNoteCache.html","topicHref":"Hi.Numerical.NcNoteCache.html","topicUid":"Hi.Numerical.NcNoteCache","type":"Class"},{"name":"NcProc","href":"Hi.Numerical.NcProc.html","topicHref":"Hi.Numerical.NcProc.html","topicUid":"Hi.Numerical.NcProc","type":"Class"},{"name":"NcStepFileOutputKit","href":"Hi.Numerical.NcStepFileOutputKit.html","topicHref":"Hi.Numerical.NcStepFileOutputKit.html","topicUid":"Hi.Numerical.NcStepFileOutputKit","type":"Class"},{"name":"NcStepMonitor","href":"Hi.Numerical.NcStepMonitor.html","topicHref":"Hi.Numerical.NcStepMonitor.html","topicUid":"Hi.Numerical.NcStepMonitor","type":"Class"},{"name":"NcUtil","href":"Hi.Numerical.NcUtil.html","topicHref":"Hi.Numerical.NcUtil.html","topicUid":"Hi.Numerical.NcUtil","type":"Class"},{"name":"NcWarningSceneEnum","href":"Hi.Numerical.NcWarningSceneEnum.html","topicHref":"Hi.Numerical.NcWarningSceneEnum.html","topicUid":"Hi.Numerical.NcWarningSceneEnum","type":"Enum"},{"name":"NumericUtil","href":"Hi.Numerical.NumericUtil.html","topicHref":"Hi.Numerical.NumericUtil.html","topicUid":"Hi.Numerical.NumericUtil","type":"Class"},{"name":"PolarEntry","href":"Hi.Numerical.PolarEntry.html","topicHref":"Hi.Numerical.PolarEntry.html","topicUid":"Hi.Numerical.PolarEntry","type":"Class"},{"name":"PolarEntry.PolarModeDirEnum","href":"Hi.Numerical.PolarEntry.PolarModeDirEnum.html","topicHref":"Hi.Numerical.PolarEntry.PolarModeDirEnum.html","topicUid":"Hi.Numerical.PolarEntry.PolarModeDirEnum","type":"Enum"},{"name":"RadiusCompensationBuf","href":"Hi.Numerical.RadiusCompensationBuf.html","topicHref":"Hi.Numerical.RadiusCompensationBuf.html","topicUid":"Hi.Numerical.RadiusCompensationBuf","type":"Class"},{"name":"SpindleDirection","href":"Hi.Numerical.SpindleDirection.html","topicHref":"Hi.Numerical.SpindleDirection.html","topicUid":"Hi.Numerical.SpindleDirection","type":"Enum"},{"name":"SubStringKit","href":"Hi.Numerical.SubStringKit.html","topicHref":"Hi.Numerical.SubStringKit.html","topicUid":"Hi.Numerical.SubStringKit","type":"Class"},{"name":"SubStringKit.ActivationMode","href":"Hi.Numerical.SubStringKit.ActivationMode.html","topicHref":"Hi.Numerical.SubStringKit.ActivationMode.html","topicUid":"Hi.Numerical.SubStringKit.ActivationMode","type":"Enum"},{"name":"ToolConfigNotFoundException","href":"Hi.Numerical.ToolConfigNotFoundException.html","topicHref":"Hi.Numerical.ToolConfigNotFoundException.html","topicUid":"Hi.Numerical.ToolConfigNotFoundException","type":"Class"}]},{"name":"Hi.Numerical.Acts","href":"Hi.Numerical.Acts.html","topicHref":"Hi.Numerical.Acts.html","topicUid":"Hi.Numerical.Acts","type":"Namespace","items":[{"name":"ActActualTime","href":"Hi.Numerical.Acts.ActActualTime.html","topicHref":"Hi.Numerical.Acts.ActActualTime.html","topicUid":"Hi.Numerical.Acts.ActActualTime","type":"Class"},{"name":"ActClArc","href":"Hi.Numerical.Acts.ActClArc.html","topicHref":"Hi.Numerical.Acts.ActClArc.html","topicUid":"Hi.Numerical.Acts.ActClArc","type":"Class"},{"name":"ActClLinear","href":"Hi.Numerical.Acts.ActClLinear.html","topicHref":"Hi.Numerical.Acts.ActClLinear.html","topicUid":"Hi.Numerical.Acts.ActClLinear","type":"Class"},{"name":"ActClStep","href":"Hi.Numerical.Acts.ActClStep.html","topicHref":"Hi.Numerical.Acts.ActClStep.html","topicUid":"Hi.Numerical.Acts.ActClStep","type":"Class"},{"name":"ActClTeleport","href":"Hi.Numerical.Acts.ActClTeleport.html","topicHref":"Hi.Numerical.Acts.ActClTeleport.html","topicUid":"Hi.Numerical.Acts.ActClTeleport","type":"Class"},{"name":"ActCooling","href":"Hi.Numerical.Acts.ActCooling.html","topicHref":"Hi.Numerical.Acts.ActCooling.html","topicUid":"Hi.Numerical.Acts.ActCooling","type":"Class"},{"name":"ActData","href":"Hi.Numerical.Acts.ActData.html","topicHref":"Hi.Numerical.Acts.ActData.html","topicUid":"Hi.Numerical.Acts.ActData","type":"Class"},{"name":"ActDelay","href":"Hi.Numerical.Acts.ActDelay.html","topicHref":"Hi.Numerical.Acts.ActDelay.html","topicUid":"Hi.Numerical.Acts.ActDelay","type":"Class"},{"name":"ActFeedrate","href":"Hi.Numerical.Acts.ActFeedrate.html","topicHref":"Hi.Numerical.Acts.ActFeedrate.html","topicUid":"Hi.Numerical.Acts.ActFeedrate","type":"Class"},{"name":"ActHiddenStateChanged","href":"Hi.Numerical.Acts.ActHiddenStateChanged.html","topicHref":"Hi.Numerical.Acts.ActHiddenStateChanged.html","topicUid":"Hi.Numerical.Acts.ActHiddenStateChanged","type":"Class"},{"name":"ActIntentionalSkip","href":"Hi.Numerical.Acts.ActIntentionalSkip.html","topicHref":"Hi.Numerical.Acts.ActIntentionalSkip.html","topicUid":"Hi.Numerical.Acts.ActIntentionalSkip","type":"Class"},{"name":"ActLineBegin","href":"Hi.Numerical.Acts.ActLineBegin.html","topicHref":"Hi.Numerical.Acts.ActLineBegin.html","topicUid":"Hi.Numerical.Acts.ActLineBegin","type":"Class"},{"name":"ActLineCsScript","href":"Hi.Numerical.Acts.ActLineCsScript.html","topicHref":"Hi.Numerical.Acts.ActLineCsScript.html","topicUid":"Hi.Numerical.Acts.ActLineCsScript","type":"Class"},{"name":"ActLineEnd","href":"Hi.Numerical.Acts.ActLineEnd.html","topicHref":"Hi.Numerical.Acts.ActLineEnd.html","topicUid":"Hi.Numerical.Acts.ActLineEnd","type":"Class"},{"name":"ActLinearClAndLinearMcAbcMcXyzabcContour","href":"Hi.Numerical.Acts.ActLinearClAndLinearMcAbcMcXyzabcContour.html","topicHref":"Hi.Numerical.Acts.ActLinearClAndLinearMcAbcMcXyzabcContour.html","topicUid":"Hi.Numerical.Acts.ActLinearClAndLinearMcAbcMcXyzabcContour","type":"Class"},{"name":"ActMcPolarLinearContour","href":"Hi.Numerical.Acts.ActMcPolarLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcPolarLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcPolarLinearContour","type":"Class"},{"name":"ActMcXyzLinearContour","href":"Hi.Numerical.Acts.ActMcXyzLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcXyzLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcXyzLinearContour","type":"Class"},{"name":"ActMcXyzStep","href":"Hi.Numerical.Acts.ActMcXyzStep.html","topicHref":"Hi.Numerical.Acts.ActMcXyzStep.html","topicUid":"Hi.Numerical.Acts.ActMcXyzStep","type":"Class"},{"name":"ActMcXyzabcOrientableLinearContour","href":"Hi.Numerical.Acts.ActMcXyzabcOrientableLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcXyzabcOrientableLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcXyzabcOrientableLinearContour","type":"Class"},{"name":"ActMcXyzabcStep","href":"Hi.Numerical.Acts.ActMcXyzabcStep.html","topicHref":"Hi.Numerical.Acts.ActMcXyzabcStep.html","topicUid":"Hi.Numerical.Acts.ActMcXyzabcStep","type":"Class"},{"name":"ActRapid","href":"Hi.Numerical.Acts.ActRapid.html","topicHref":"Hi.Numerical.Acts.ActRapid.html","topicUid":"Hi.Numerical.Acts.ActRapid","type":"Class"},{"name":"ActSpindleDirection","href":"Hi.Numerical.Acts.ActSpindleDirection.html","topicHref":"Hi.Numerical.Acts.ActSpindleDirection.html","topicUid":"Hi.Numerical.Acts.ActSpindleDirection","type":"Class"},{"name":"ActSpindleSpeed","href":"Hi.Numerical.Acts.ActSpindleSpeed.html","topicHref":"Hi.Numerical.Acts.ActSpindleSpeed.html","topicUid":"Hi.Numerical.Acts.ActSpindleSpeed","type":"Class"},{"name":"ActSpiralMcXyzContour","href":"Hi.Numerical.Acts.ActSpiralMcXyzContour.html","topicHref":"Hi.Numerical.Acts.ActSpiralMcXyzContour.html","topicUid":"Hi.Numerical.Acts.ActSpiralMcXyzContour","type":"Class"},{"name":"ActStateRunner","href":"Hi.Numerical.Acts.ActStateRunner.html","topicHref":"Hi.Numerical.Acts.ActStateRunner.html","topicUid":"Hi.Numerical.Acts.ActStateRunner","type":"Class"},{"name":"ActToolingStep","href":"Hi.Numerical.Acts.ActToolingStep.html","topicHref":"Hi.Numerical.Acts.ActToolingStep.html","topicUid":"Hi.Numerical.Acts.ActToolingStep","type":"Class"},{"name":"ActToolingTeleport","href":"Hi.Numerical.Acts.ActToolingTeleport.html","topicHref":"Hi.Numerical.Acts.ActToolingTeleport.html","topicUid":"Hi.Numerical.Acts.ActToolingTeleport","type":"Class"},{"name":"ActUnknownSkip","href":"Hi.Numerical.Acts.ActUnknownSkip.html","topicHref":"Hi.Numerical.Acts.ActUnknownSkip.html","topicUid":"Hi.Numerical.Acts.ActUnknownSkip","type":"Class"},{"name":"ActUtil","href":"Hi.Numerical.Acts.ActUtil.html","topicHref":"Hi.Numerical.Acts.ActUtil.html","topicUid":"Hi.Numerical.Acts.ActUtil","type":"Class"},{"name":"IAct","href":"Hi.Numerical.Acts.IAct.html","topicHref":"Hi.Numerical.Acts.IAct.html","topicUid":"Hi.Numerical.Acts.IAct","type":"Interface"},{"name":"IActClMove","href":"Hi.Numerical.Acts.IActClMove.html","topicHref":"Hi.Numerical.Acts.IActClMove.html","topicUid":"Hi.Numerical.Acts.IActClMove","type":"Interface"},{"name":"IActDuration","href":"Hi.Numerical.Acts.IActDuration.html","topicHref":"Hi.Numerical.Acts.IActDuration.html","topicUid":"Hi.Numerical.Acts.IActDuration","type":"Interface"},{"name":"IActMachineStep","href":"Hi.Numerical.Acts.IActMachineStep.html","topicHref":"Hi.Numerical.Acts.IActMachineStep.html","topicUid":"Hi.Numerical.Acts.IActMachineStep","type":"Interface"},{"name":"IActMcXyzContour","href":"Hi.Numerical.Acts.IActMcXyzContour.html","topicHref":"Hi.Numerical.Acts.IActMcXyzContour.html","topicUid":"Hi.Numerical.Acts.IActMcXyzContour","type":"Interface"},{"name":"IActMcXyzabcContour","href":"Hi.Numerical.Acts.IActMcXyzabcContour.html","topicHref":"Hi.Numerical.Acts.IActMcXyzabcContour.html","topicUid":"Hi.Numerical.Acts.IActMcXyzabcContour","type":"Interface"},{"name":"IActSkip","href":"Hi.Numerical.Acts.IActSkip.html","topicHref":"Hi.Numerical.Acts.IActSkip.html","topicUid":"Hi.Numerical.Acts.IActSkip","type":"Interface"},{"name":"IActTooling","href":"Hi.Numerical.Acts.IActTooling.html","topicHref":"Hi.Numerical.Acts.IActTooling.html","topicUid":"Hi.Numerical.Acts.IActTooling","type":"Interface"},{"name":"IWorkTimeAttrib","href":"Hi.Numerical.Acts.IWorkTimeAttrib.html","topicHref":"Hi.Numerical.Acts.IWorkTimeAttrib.html","topicUid":"Hi.Numerical.Acts.IWorkTimeAttrib","type":"Interface"},{"name":"IWorkTimeGetter","href":"Hi.Numerical.Acts.IWorkTimeGetter.html","topicHref":"Hi.Numerical.Acts.IWorkTimeGetter.html","topicUid":"Hi.Numerical.Acts.IWorkTimeGetter","type":"Interface"},{"name":"IWorkTimeSetter","href":"Hi.Numerical.Acts.IWorkTimeSetter.html","topicHref":"Hi.Numerical.Acts.IWorkTimeSetter.html","topicUid":"Hi.Numerical.Acts.IWorkTimeSetter","type":"Interface"}]},{"name":"Hi.Numerical.FilePlayers","href":"Hi.Numerical.FilePlayers.html","topicHref":"Hi.Numerical.FilePlayers.html","topicUid":"Hi.Numerical.FilePlayers","type":"Namespace","items":[{"name":"CsvRunner","href":"Hi.Numerical.FilePlayers.CsvRunner.html","topicHref":"Hi.Numerical.FilePlayers.CsvRunner.html","topicUid":"Hi.Numerical.FilePlayers.CsvRunner","type":"Class"},{"name":"CsvRunnerConfig","href":"Hi.Numerical.FilePlayers.CsvRunnerConfig.html","topicHref":"Hi.Numerical.FilePlayers.CsvRunnerConfig.html","topicUid":"Hi.Numerical.FilePlayers.CsvRunnerConfig","type":"Class"},{"name":"IControlRunner","href":"Hi.Numerical.FilePlayers.IControlRunner.html","topicHref":"Hi.Numerical.FilePlayers.IControlRunner.html","topicUid":"Hi.Numerical.FilePlayers.IControlRunner","type":"Interface"},{"name":"NcRunner","href":"Hi.Numerical.FilePlayers.NcRunner.html","topicHref":"Hi.Numerical.FilePlayers.NcRunner.html","topicUid":"Hi.Numerical.FilePlayers.NcRunner","type":"Class"},{"name":"SourceCommandActEntry","href":"Hi.Numerical.FilePlayers.SourceCommandActEntry.html","topicHref":"Hi.Numerical.FilePlayers.SourceCommandActEntry.html","topicUid":"Hi.Numerical.FilePlayers.SourceCommandActEntry","type":"Class"}]},{"name":"Hi.Numerical.MachiningMotionResolutionUtils","href":"Hi.Numerical.MachiningMotionResolutionUtils.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils","type":"Namespace","items":[{"name":"FeedPerCycleMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution","type":"Class"},{"name":"FeedPerToothMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution","type":"Class"},{"name":"FeedPerToothNcResolution0","href":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothNcResolution0.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothNcResolution0.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothNcResolution0","type":"Class"},{"name":"FixedMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution","type":"Class"},{"name":"IMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution","type":"Interface"}]},{"name":"Hi.Numerical.NcArgs","href":"Hi.Numerical.NcArgs.html","topicHref":"Hi.Numerical.NcArgs.html","topicUid":"Hi.Numerical.NcArgs","type":"Namespace","items":[{"name":"ArcNcArg","href":"Hi.Numerical.NcArgs.ArcNcArg.html","topicHref":"Hi.Numerical.NcArgs.ArcNcArg.html","topicUid":"Hi.Numerical.NcArgs.ArcNcArg","type":"Class"},{"name":"G28Arg","href":"Hi.Numerical.NcArgs.G28Arg.html","topicHref":"Hi.Numerical.NcArgs.G28Arg.html","topicUid":"Hi.Numerical.NcArgs.G28Arg","type":"Class"},{"name":"Group07NcArg","href":"Hi.Numerical.NcArgs.Group07NcArg.html","topicHref":"Hi.Numerical.NcArgs.Group07NcArg.html","topicUid":"Hi.Numerical.NcArgs.Group07NcArg","type":"Class"},{"name":"Group09NcArg","href":"Hi.Numerical.NcArgs.Group09NcArg.html","topicHref":"Hi.Numerical.NcArgs.Group09NcArg.html","topicUid":"Hi.Numerical.NcArgs.Group09NcArg","type":"Class"},{"name":"HeidenhainCycleDef7Arg","href":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg.html","topicHref":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg.html","topicUid":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg","type":"Class"},{"name":"HeidenhainPlaneSpatialArg","href":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg.html","topicHref":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg.html","topicUid":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg","type":"Class"},{"name":"IHeidenhainBlockCacheArg","href":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg.html","topicHref":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg.html","topicUid":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg","type":"Interface"},{"name":"IHeidenhainPlaneArg","href":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg.html","topicHref":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg.html","topicUid":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg","type":"Interface"},{"name":"ITiltPlaneNcArg","href":"Hi.Numerical.NcArgs.ITiltPlaneNcArg.html","topicHref":"Hi.Numerical.NcArgs.ITiltPlaneNcArg.html","topicUid":"Hi.Numerical.NcArgs.ITiltPlaneNcArg","type":"Interface"},{"name":"NcArgCycle800","href":"Hi.Numerical.NcArgs.NcArgCycle800.html","topicHref":"Hi.Numerical.NcArgs.NcArgCycle800.html","topicUid":"Hi.Numerical.NcArgs.NcArgCycle800","type":"Class"},{"name":"NcArgG68","href":"Hi.Numerical.NcArgs.NcArgG68.html","topicHref":"Hi.Numerical.NcArgs.NcArgG68.html","topicUid":"Hi.Numerical.NcArgs.NcArgG68","type":"Class"},{"name":"NcArgG68p2","href":"Hi.Numerical.NcArgs.NcArgG68p2.html","topicHref":"Hi.Numerical.NcArgs.NcArgG68p2.html","topicUid":"Hi.Numerical.NcArgs.NcArgG68p2","type":"Class"},{"name":"PausingNcArg","href":"Hi.Numerical.NcArgs.PausingNcArg.html","topicHref":"Hi.Numerical.NcArgs.PausingNcArg.html","topicUid":"Hi.Numerical.NcArgs.PausingNcArg","type":"Class"}]},{"name":"Hi.Numerical.StepSelectionUtils","href":"Hi.Numerical.StepSelectionUtils.html","topicHref":"Hi.Numerical.StepSelectionUtils.html","topicUid":"Hi.Numerical.StepSelectionUtils","type":"Namespace","items":[{"name":"AnchorMode","href":"Hi.Numerical.StepSelectionUtils.AnchorMode.html","topicHref":"Hi.Numerical.StepSelectionUtils.AnchorMode.html","topicUid":"Hi.Numerical.StepSelectionUtils.AnchorMode","type":"Enum"},{"name":"BoundSelector","href":"Hi.Numerical.StepSelectionUtils.BoundSelector.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelector.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelector","type":"Class"},{"name":"BoundSelectorHost","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost","type":"Class"},{"name":"BoundSelectorPair","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair","type":"Class"},{"name":"BoundSelectorPair.BoundLocale","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale","type":"Enum"},{"name":"BoundSelectorStepSectionBundle","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle","type":"Class"},{"name":"BoundSelectorUtil","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil","type":"Class"},{"name":"DistanceShift","href":"Hi.Numerical.StepSelectionUtils.DistanceShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.DistanceShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.DistanceShift","type":"Class"},{"name":"IStepShift","href":"Hi.Numerical.StepSelectionUtils.IStepShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.IStepShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.IStepShift","type":"Interface"},{"name":"TimeShift","href":"Hi.Numerical.StepSelectionUtils.TimeShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.TimeShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.TimeShift","type":"Class"}]},{"name":"Hi.Numerical.Xyzabc","href":"Hi.Numerical.Xyzabc.html","topicHref":"Hi.Numerical.Xyzabc.html","topicUid":"Hi.Numerical.Xyzabc","type":"Namespace","items":[{"name":"Abc","href":"Hi.Numerical.Xyzabc.Abc.html","topicHref":"Hi.Numerical.Xyzabc.Abc.html","topicUid":"Hi.Numerical.Xyzabc.Abc","type":"Struct"},{"name":"CodeXyzabcChain","href":"Hi.Numerical.Xyzabc.CodeXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.CodeXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.CodeXyzabcChain","type":"Class"},{"name":"GeneralXyzabcChain","href":"Hi.Numerical.Xyzabc.GeneralXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.GeneralXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.GeneralXyzabcChain","type":"Class"},{"name":"ICoordinateConverter","href":"Hi.Numerical.Xyzabc.ICoordinateConverter.html","topicHref":"Hi.Numerical.Xyzabc.ICoordinateConverter.html","topicUid":"Hi.Numerical.Xyzabc.ICoordinateConverter","type":"Interface"},{"name":"IGetMcXyzabc","href":"Hi.Numerical.Xyzabc.IGetMcXyzabc.html","topicHref":"Hi.Numerical.Xyzabc.IGetMcXyzabc.html","topicUid":"Hi.Numerical.Xyzabc.IGetMcXyzabc","type":"Interface"},{"name":"IGetXyzabcChain","href":"Hi.Numerical.Xyzabc.IGetXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.IGetXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.IGetXyzabcChain","type":"Interface"},{"name":"IXyzabcChain","href":"Hi.Numerical.Xyzabc.IXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.IXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.IXyzabcChain","type":"Interface"},{"name":"ReflectedXyzabcChain","href":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain","type":"Class"},{"name":"SimpleChainCoordinateConverter","href":"Hi.Numerical.Xyzabc.SimpleChainCoordinateConverter.html","topicHref":"Hi.Numerical.Xyzabc.SimpleChainCoordinateConverter.html","topicUid":"Hi.Numerical.Xyzabc.SimpleChainCoordinateConverter","type":"Class"},{"name":"XyzabcChainMillingCoordinateConverter","href":"Hi.Numerical.Xyzabc.XyzabcChainMillingCoordinateConverter.html","topicHref":"Hi.Numerical.Xyzabc.XyzabcChainMillingCoordinateConverter.html","topicUid":"Hi.Numerical.Xyzabc.XyzabcChainMillingCoordinateConverter","type":"Class"},{"name":"XyzabcSolver","href":"Hi.Numerical.Xyzabc.XyzabcSolver.html","topicHref":"Hi.Numerical.Xyzabc.XyzabcSolver.html","topicUid":"Hi.Numerical.Xyzabc.XyzabcSolver","type":"Class"},{"name":"XyzabcUtil","href":"Hi.Numerical.Xyzabc.XyzabcUtil.html","topicHref":"Hi.Numerical.Xyzabc.XyzabcUtil.html","topicUid":"Hi.Numerical.Xyzabc.XyzabcUtil","type":"Class"}]},{"name":"Hi.PanelModels","href":"Hi.PanelModels.html","topicHref":"Hi.PanelModels.html","topicUid":"Hi.PanelModels","type":"Namespace","items":[{"name":"HiKey","href":"Hi.PanelModels.HiKey.html","topicHref":"Hi.PanelModels.HiKey.html","topicUid":"Hi.PanelModels.HiKey","type":"Enum"},{"name":"HiKeyEvent","href":"Hi.PanelModels.HiKeyEvent.html","topicHref":"Hi.PanelModels.HiKeyEvent.html","topicUid":"Hi.PanelModels.HiKeyEvent","type":"Class"},{"name":"HiModifierKeys","href":"Hi.PanelModels.HiModifierKeys.html","topicHref":"Hi.PanelModels.HiModifierKeys.html","topicUid":"Hi.PanelModels.HiModifierKeys","type":"Enum"},{"name":"HiMouseButton","href":"Hi.PanelModels.HiMouseButton.html","topicHref":"Hi.PanelModels.HiMouseButton.html","topicUid":"Hi.PanelModels.HiMouseButton","type":"Enum"},{"name":"HiMouseButtonEvent","href":"Hi.PanelModels.HiMouseButtonEvent.html","topicHref":"Hi.PanelModels.HiMouseButtonEvent.html","topicUid":"Hi.PanelModels.HiMouseButtonEvent","type":"Class"},{"name":"HiMouseButtonMask","href":"Hi.PanelModels.HiMouseButtonMask.html","topicHref":"Hi.PanelModels.HiMouseButtonMask.html","topicUid":"Hi.PanelModels.HiMouseButtonMask","type":"Enum"},{"name":"HiMouseButtonMaskUtil","href":"Hi.PanelModels.HiMouseButtonMaskUtil.html","topicHref":"Hi.PanelModels.HiMouseButtonMaskUtil.html","topicUid":"Hi.PanelModels.HiMouseButtonMaskUtil","type":"Class"},{"name":"HiMouseMoveEvent","href":"Hi.PanelModels.HiMouseMoveEvent.html","topicHref":"Hi.PanelModels.HiMouseMoveEvent.html","topicUid":"Hi.PanelModels.HiMouseMoveEvent","type":"Class"},{"name":"HiMouseWheelEvent","href":"Hi.PanelModels.HiMouseWheelEvent.html","topicHref":"Hi.PanelModels.HiMouseWheelEvent.html","topicUid":"Hi.PanelModels.HiMouseWheelEvent","type":"Class"},{"name":"PanelModel","href":"Hi.PanelModels.PanelModel.html","topicHref":"Hi.PanelModels.PanelModel.html","topicUid":"Hi.PanelModels.PanelModel","type":"Class"}]},{"name":"Hi.Parallels","href":"Hi.Parallels.html","topicHref":"Hi.Parallels.html","topicUid":"Hi.Parallels","type":"Namespace","items":[{"name":"CurrentThreadTaskScheduler","href":"Hi.Parallels.CurrentThreadTaskScheduler.html","topicHref":"Hi.Parallels.CurrentThreadTaskScheduler.html","topicUid":"Hi.Parallels.CurrentThreadTaskScheduler","type":"Class"},{"name":"DistributedQueueTaskScheduler","href":"Hi.Parallels.DistributedQueueTaskScheduler.html","topicHref":"Hi.Parallels.DistributedQueueTaskScheduler.html","topicUid":"Hi.Parallels.DistributedQueueTaskScheduler","type":"Class"},{"name":"DistributedQueueTaskStarter","href":"Hi.Parallels.DistributedQueueTaskStarter.html","topicHref":"Hi.Parallels.DistributedQueueTaskStarter.html","topicUid":"Hi.Parallels.DistributedQueueTaskStarter","type":"Class"},{"name":"LockUtil","href":"Hi.Parallels.LockUtil.html","topicHref":"Hi.Parallels.LockUtil.html","topicUid":"Hi.Parallels.LockUtil","type":"Class"},{"name":"PriorityTaskScheduler","href":"Hi.Parallels.PriorityTaskScheduler.html","topicHref":"Hi.Parallels.PriorityTaskScheduler.html","topicUid":"Hi.Parallels.PriorityTaskScheduler","type":"Class"},{"name":"QueueTaskScheduler","href":"Hi.Parallels.QueueTaskScheduler.html","topicHref":"Hi.Parallels.QueueTaskScheduler.html","topicUid":"Hi.Parallels.QueueTaskScheduler","type":"Class"},{"name":"ReaderWriterLockUtil","href":"Hi.Parallels.ReaderWriterLockUtil.html","topicHref":"Hi.Parallels.ReaderWriterLockUtil.html","topicUid":"Hi.Parallels.ReaderWriterLockUtil","type":"Class"},{"name":"SemaphoreUtil","href":"Hi.Parallels.SemaphoreUtil.html","topicHref":"Hi.Parallels.SemaphoreUtil.html","topicUid":"Hi.Parallels.SemaphoreUtil","type":"Class"},{"name":"ThreadSafeSet","href":"Hi.Parallels.ThreadSafeSet-1.html","topicHref":"Hi.Parallels.ThreadSafeSet-1.html","topicUid":"Hi.Parallels.ThreadSafeSet`1","type":"Class"}]},{"name":"Hi.Physics","href":"Hi.Physics.html","topicHref":"Hi.Physics.html","topicUid":"Hi.Physics","type":"Namespace","items":[{"name":"AmpPhase","href":"Hi.Physics.AmpPhase.html","topicHref":"Hi.Physics.AmpPhase.html","topicUid":"Hi.Physics.AmpPhase","type":"Class"},{"name":"CoatingMaterial","href":"Hi.Physics.CoatingMaterial.html","topicHref":"Hi.Physics.CoatingMaterial.html","topicUid":"Hi.Physics.CoatingMaterial","type":"Class"},{"name":"CoolantHeatCondition","href":"Hi.Physics.CoolantHeatCondition.html","topicHref":"Hi.Physics.CoolantHeatCondition.html","topicUid":"Hi.Physics.CoolantHeatCondition","type":"Class"},{"name":"CutterMaterial","href":"Hi.Physics.CutterMaterial.html","topicHref":"Hi.Physics.CutterMaterial.html","topicUid":"Hi.Physics.CutterMaterial","type":"Class"},{"name":"IGetThermalLayerList","href":"Hi.Physics.IGetThermalLayerList.html","topicHref":"Hi.Physics.IGetThermalLayerList.html","topicUid":"Hi.Physics.IGetThermalLayerList","type":"Interface"},{"name":"IStructureMaterial","href":"Hi.Physics.IStructureMaterial.html","topicHref":"Hi.Physics.IStructureMaterial.html","topicUid":"Hi.Physics.IStructureMaterial","type":"Interface"},{"name":"ISuccessivePhysicsBriefAccessor","href":"Hi.Physics.ISuccessivePhysicsBriefAccessor.html","topicHref":"Hi.Physics.ISuccessivePhysicsBriefAccessor.html","topicUid":"Hi.Physics.ISuccessivePhysicsBriefAccessor","type":"Interface"},{"name":"ISurfaceMaterial","href":"Hi.Physics.ISurfaceMaterial.html","topicHref":"Hi.Physics.ISurfaceMaterial.html","topicUid":"Hi.Physics.ISurfaceMaterial","type":"Interface"},{"name":"ITimeGetter","href":"Hi.Physics.ITimeGetter.html","topicHref":"Hi.Physics.ITimeGetter.html","topicUid":"Hi.Physics.ITimeGetter","type":"Interface"},{"name":"MillingTemperatureUtil","href":"Hi.Physics.MillingTemperatureUtil.html","topicHref":"Hi.Physics.MillingTemperatureUtil.html","topicUid":"Hi.Physics.MillingTemperatureUtil","type":"Class"},{"name":"SeqPhysicsBrief","href":"Hi.Physics.SeqPhysicsBrief.html","topicHref":"Hi.Physics.SeqPhysicsBrief.html","topicUid":"Hi.Physics.SeqPhysicsBrief","type":"Class"},{"name":"StructureMaterial","href":"Hi.Physics.StructureMaterial.html","topicHref":"Hi.Physics.StructureMaterial.html","topicUid":"Hi.Physics.StructureMaterial","type":"Class"},{"name":"TemperatureUtil","href":"Hi.Physics.TemperatureUtil.html","topicHref":"Hi.Physics.TemperatureUtil.html","topicUid":"Hi.Physics.TemperatureUtil","type":"Class"},{"name":"TemperatureVsHardness","href":"Hi.Physics.TemperatureVsHardness.html","topicHref":"Hi.Physics.TemperatureVsHardness.html","topicUid":"Hi.Physics.TemperatureVsHardness","type":"Class"},{"name":"ThermalLayer1D","href":"Hi.Physics.ThermalLayer1D.html","topicHref":"Hi.Physics.ThermalLayer1D.html","topicUid":"Hi.Physics.ThermalLayer1D","type":"Class"},{"name":"TimeSeriesUtil","href":"Hi.Physics.TimeSeriesUtil.html","topicHref":"Hi.Physics.TimeSeriesUtil.html","topicUid":"Hi.Physics.TimeSeriesUtil","type":"Class"},{"name":"TimeValue","href":"Hi.Physics.TimeValue.html","topicHref":"Hi.Physics.TimeValue.html","topicUid":"Hi.Physics.TimeValue","type":"Class"},{"name":"WorkpieceMaterial","href":"Hi.Physics.WorkpieceMaterial.html","topicHref":"Hi.Physics.WorkpieceMaterial.html","topicUid":"Hi.Physics.WorkpieceMaterial","type":"Class"}]},{"name":"Hi.ScriptApiUtils","href":"Hi.ScriptApiUtils.html","topicHref":"Hi.ScriptApiUtils.html","topicUid":"Hi.ScriptApiUtils","type":"Namespace","items":[{"name":"ICsScriptApi","href":"Hi.ScriptApiUtils.ICsScriptApi.html","topicHref":"Hi.ScriptApiUtils.ICsScriptApi.html","topicUid":"Hi.ScriptApiUtils.ICsScriptApi","type":"Interface"},{"name":"JsAceAttribute","href":"Hi.ScriptApiUtils.JsAceAttribute.html","topicHref":"Hi.ScriptApiUtils.JsAceAttribute.html","topicUid":"Hi.ScriptApiUtils.JsAceAttribute","type":"Class"}]},{"name":"Hi.ShellCommands","href":"Hi.ShellCommands.html","topicHref":"Hi.ShellCommands.html","topicUid":"Hi.ShellCommands","type":"Namespace","items":[{"name":"EnablingWrapper","href":"Hi.ShellCommands.EnablingWrapper.html","topicHref":"Hi.ShellCommands.EnablingWrapper.html","topicUid":"Hi.ShellCommands.EnablingWrapper","type":"Class"},{"name":"GeomDiffCommand","href":"Hi.ShellCommands.GeomDiffCommand.html","topicHref":"Hi.ShellCommands.GeomDiffCommand.html","topicUid":"Hi.ShellCommands.GeomDiffCommand","type":"Class"},{"name":"IShellCommand","href":"Hi.ShellCommands.IShellCommand.html","topicHref":"Hi.ShellCommands.IShellCommand.html","topicUid":"Hi.ShellCommands.IShellCommand","type":"Interface"},{"name":"ITitleCommand","href":"Hi.ShellCommands.ITitleCommand.html","topicHref":"Hi.ShellCommands.ITitleCommand.html","topicUid":"Hi.ShellCommands.ITitleCommand","type":"Interface"},{"name":"Lang","href":"Hi.ShellCommands.Lang.html","topicHref":"Hi.ShellCommands.Lang.html","topicUid":"Hi.ShellCommands.Lang","type":"Class"},{"name":"ListCommand","href":"Hi.ShellCommands.ListCommand.html","topicHref":"Hi.ShellCommands.ListCommand.html","topicUid":"Hi.ShellCommands.ListCommand","type":"Class"},{"name":"MachiningMotionResolutionCommand","href":"Hi.ShellCommands.MachiningMotionResolutionCommand.html","topicHref":"Hi.ShellCommands.MachiningMotionResolutionCommand.html","topicUid":"Hi.ShellCommands.MachiningMotionResolutionCommand","type":"Class"},{"name":"NcCodeCommand","href":"Hi.ShellCommands.NcCodeCommand.html","topicHref":"Hi.ShellCommands.NcCodeCommand.html","topicUid":"Hi.ShellCommands.NcCodeCommand","type":"Class"},{"name":"NcFileCommand","href":"Hi.ShellCommands.NcFileCommand.html","topicHref":"Hi.ShellCommands.NcFileCommand.html","topicUid":"Hi.ShellCommands.NcFileCommand","type":"Class"},{"name":"NcFileListCommand","href":"Hi.ShellCommands.NcFileListCommand.html","topicHref":"Hi.ShellCommands.NcFileListCommand.html","topicUid":"Hi.ShellCommands.NcFileListCommand","type":"Class"},{"name":"NcOptOptionCommand","href":"Hi.ShellCommands.NcOptOptionCommand.html","topicHref":"Hi.ShellCommands.NcOptOptionCommand.html","topicUid":"Hi.ShellCommands.NcOptOptionCommand","type":"Class"},{"name":"OptimizeToFilesCommand","href":"Hi.ShellCommands.OptimizeToFilesCommand.html","topicHref":"Hi.ShellCommands.OptimizeToFilesCommand.html","topicUid":"Hi.ShellCommands.OptimizeToFilesCommand","type":"Class"},{"name":"PostExecutionCommand","href":"Hi.ShellCommands.PostExecutionCommand.html","topicHref":"Hi.ShellCommands.PostExecutionCommand.html","topicUid":"Hi.ShellCommands.PostExecutionCommand","type":"Class"},{"name":"PreSettingCommand","href":"Hi.ShellCommands.PreSettingCommand.html","topicHref":"Hi.ShellCommands.PreSettingCommand.html","topicUid":"Hi.ShellCommands.PreSettingCommand","type":"Class"},{"name":"RecordRuntimeGeomActionEnum","href":"Hi.ShellCommands.RecordRuntimeGeomActionEnum.html","topicHref":"Hi.ShellCommands.RecordRuntimeGeomActionEnum.html","topicUid":"Hi.ShellCommands.RecordRuntimeGeomActionEnum","type":"Enum"},{"name":"RecordRuntimeGeomCommand","href":"Hi.ShellCommands.RecordRuntimeGeomCommand.html","topicHref":"Hi.ShellCommands.RecordRuntimeGeomCommand.html","topicUid":"Hi.ShellCommands.RecordRuntimeGeomCommand","type":"Class"},{"name":"ScriptCommand","href":"Hi.ShellCommands.ScriptCommand.html","topicHref":"Hi.ShellCommands.ScriptCommand.html","topicUid":"Hi.ShellCommands.ScriptCommand","type":"Class"},{"name":"SimpleSessionCommand","href":"Hi.ShellCommands.SimpleSessionCommand.html","topicHref":"Hi.ShellCommands.SimpleSessionCommand.html","topicUid":"Hi.ShellCommands.SimpleSessionCommand","type":"Class"},{"name":"WriteRuntimeGeomToStlCommand","href":"Hi.ShellCommands.WriteRuntimeGeomToStlCommand.html","topicHref":"Hi.ShellCommands.WriteRuntimeGeomToStlCommand.html","topicUid":"Hi.ShellCommands.WriteRuntimeGeomToStlCommand","type":"Class"},{"name":"WriteShotFilesCommand","href":"Hi.ShellCommands.WriteShotFilesCommand.html","topicHref":"Hi.ShellCommands.WriteShotFilesCommand.html","topicUid":"Hi.ShellCommands.WriteShotFilesCommand","type":"Class"},{"name":"WriteStepFilesCommand","href":"Hi.ShellCommands.WriteStepFilesCommand.html","topicHref":"Hi.ShellCommands.WriteStepFilesCommand.html","topicUid":"Hi.ShellCommands.WriteStepFilesCommand","type":"Class"}]},{"name":"Hi.Test","href":"Hi.Test.html","topicHref":"Hi.Test.html","topicUid":"Hi.Test","type":"Namespace","items":[{"name":"TestCollision","href":"Hi.Test.TestCollision.html","topicHref":"Hi.Test.TestCollision.html","topicUid":"Hi.Test.TestCollision","type":"Class"}]},{"name":"Hi.UiExtensions","href":"Hi.UiExtensions.html","topicHref":"Hi.UiExtensions.html","topicUid":"Hi.UiExtensions","type":"Namespace","items":[{"name":"ChartBoundary","href":"Hi.UiExtensions.ChartBoundary.html","topicHref":"Hi.UiExtensions.ChartBoundary.html","topicUid":"Hi.UiExtensions.ChartBoundary","type":"Class"},{"name":"ChartBoundaryEnum","href":"Hi.UiExtensions.ChartBoundaryEnum.html","topicHref":"Hi.UiExtensions.ChartBoundaryEnum.html","topicUid":"Hi.UiExtensions.ChartBoundaryEnum","type":"Enum"},{"name":"NativeVisibility","href":"Hi.UiExtensions.NativeVisibility.html","topicHref":"Hi.UiExtensions.NativeVisibility.html","topicUid":"Hi.UiExtensions.NativeVisibility","type":"Enum"},{"name":"UiUtil","href":"Hi.UiExtensions.UiUtil.html","topicHref":"Hi.UiExtensions.UiUtil.html","topicUid":"Hi.UiExtensions.UiUtil","type":"Class"},{"name":"UiUtil.InvokeFunc","href":"Hi.UiExtensions.UiUtil.InvokeFunc.html","topicHref":"Hi.UiExtensions.UiUtil.InvokeFunc.html","topicUid":"Hi.UiExtensions.UiUtil.InvokeFunc","type":"Delegate"}]},{"name":"Hi.UniversalNc","href":"Hi.UniversalNc.html","topicHref":"Hi.UniversalNc.html","topicUid":"Hi.UniversalNc","type":"Namespace","items":[{"name":"Lang","href":"Hi.UniversalNc.Lang.html","topicHref":"Hi.UniversalNc.Lang.html","topicUid":"Hi.UniversalNc.Lang","type":"Class"}]},{"name":"Hi.Vibrations","href":"Hi.Vibrations.html","topicHref":"Hi.Vibrations.html","topicUid":"Hi.Vibrations","type":"Namespace","items":[{"name":"AngularVelocityUtil","href":"Hi.Vibrations.AngularVelocityUtil.html","topicHref":"Hi.Vibrations.AngularVelocityUtil.html","topicUid":"Hi.Vibrations.AngularVelocityUtil","type":"Class"},{"name":"ForceAccelAmpPhase","href":"Hi.Vibrations.ForceAccelAmpPhase.html","topicHref":"Hi.Vibrations.ForceAccelAmpPhase.html","topicUid":"Hi.Vibrations.ForceAccelAmpPhase","type":"Class"},{"name":"ForceAccelFourierSeries","href":"Hi.Vibrations.ForceAccelFourierSeries.html","topicHref":"Hi.Vibrations.ForceAccelFourierSeries.html","topicUid":"Hi.Vibrations.ForceAccelFourierSeries","type":"Class"},{"name":"ForceAccelShot","href":"Hi.Vibrations.ForceAccelShot.html","topicHref":"Hi.Vibrations.ForceAccelShot.html","topicUid":"Hi.Vibrations.ForceAccelShot","type":"Class"},{"name":"ForceAccelUtil","href":"Hi.Vibrations.ForceAccelUtil.html","topicHref":"Hi.Vibrations.ForceAccelUtil.html","topicUid":"Hi.Vibrations.ForceAccelUtil","type":"Class"},{"name":"IAngularVelocityOwner","href":"Hi.Vibrations.IAngularVelocityOwner.html","topicHref":"Hi.Vibrations.IAngularVelocityOwner.html","topicUid":"Hi.Vibrations.IAngularVelocityOwner","type":"Interface"},{"name":"VibrationUtil","href":"Hi.Vibrations.VibrationUtil.html","topicHref":"Hi.Vibrations.VibrationUtil.html","topicUid":"Hi.Vibrations.VibrationUtil","type":"Class"},{"name":"WAmpPhase","href":"Hi.Vibrations.WAmpPhase.html","topicHref":"Hi.Vibrations.WAmpPhase.html","topicUid":"Hi.Vibrations.WAmpPhase","type":"Class"},{"name":"WAmpPhaseXyzTransformation","href":"Hi.Vibrations.WAmpPhaseXyzTransformation.html","topicHref":"Hi.Vibrations.WAmpPhaseXyzTransformation.html","topicUid":"Hi.Vibrations.WAmpPhaseXyzTransformation","type":"Class"}]},{"name":"Hi.WinForm.Disp","href":"Hi.WinForm.Disp.html","topicHref":"Hi.WinForm.Disp.html","topicUid":"Hi.WinForm.Disp","type":"Namespace","items":[{"name":"RenderingCanvas","href":"Hi.WinForm.Disp.RenderingCanvas.html","topicHref":"Hi.WinForm.Disp.RenderingCanvas.html","topicUid":"Hi.WinForm.Disp.RenderingCanvas","type":"Class"},{"name":"RenderingForm","href":"Hi.WinForm.Disp.RenderingForm.html","topicHref":"Hi.WinForm.Disp.RenderingForm.html","topicUid":"Hi.WinForm.Disp.RenderingForm","type":"Class"}]},{"name":"Hi.WpfPlus.Disp","href":"Hi.WpfPlus.Disp.html","topicHref":"Hi.WpfPlus.Disp.html","topicUid":"Hi.WpfPlus.Disp","type":"Namespace","items":[{"name":"RenderingCanvas","href":"Hi.WpfPlus.Disp.RenderingCanvas.html","topicHref":"Hi.WpfPlus.Disp.RenderingCanvas.html","topicUid":"Hi.WpfPlus.Disp.RenderingCanvas","type":"Class"},{"name":"RenderingWindow","href":"Hi.WpfPlus.Disp.RenderingWindow.html","topicHref":"Hi.WpfPlus.Disp.RenderingWindow.html","topicUid":"Hi.WpfPlus.Disp.RenderingWindow","type":"Class"}]},{"name":"HiMachining.Milling","href":"HiMachining.Milling.html","topicHref":"HiMachining.Milling.html","topicUid":"HiMachining.Milling","type":"Namespace","items":[{"name":"ClMillingDevice","href":"HiMachining.Milling.ClMillingDevice.html","topicHref":"HiMachining.Milling.ClMillingDevice.html","topicUid":"HiMachining.Milling.ClMillingDevice","type":"Class"}]},{"name":"HiNc.Grpcs","href":"HiNc.Grpcs.html","topicHref":"HiNc.Grpcs.html","topicUid":"HiNc.Grpcs","type":"Namespace","items":[{"name":"MachiningProjectGrpcServer","href":"HiNc.Grpcs.MachiningProjectGrpcServer.html","topicHref":"HiNc.Grpcs.MachiningProjectGrpcServer.html","topicUid":"HiNc.Grpcs.MachiningProjectGrpcServer","type":"Class"}]},{"name":"numerical","href":"numerical.html","topicHref":"numerical.html","topicUid":"numerical","type":"Namespace","items":[{"name":"Empty","href":"numerical.Empty.html","topicHref":"numerical.Empty.html","topicUid":"numerical.Empty","type":"Class"},{"name":"GrpcCsvRowDictionary","href":"numerical.GrpcCsvRowDictionary.html","topicHref":"numerical.GrpcCsvRowDictionary.html","topicUid":"numerical.GrpcCsvRowDictionary","type":"Class"},{"name":"GrpcNcStep","href":"numerical.GrpcNcStep.html","topicHref":"numerical.GrpcNcStep.html","topicUid":"numerical.GrpcNcStep","type":"Class"},{"name":"NumericalReflection","href":"numerical.NumericalReflection.html","topicHref":"numerical.NumericalReflection.html","topicUid":"numerical.NumericalReflection","type":"Class"},{"name":"NumericalService","href":"numerical.NumericalService.html","topicHref":"numerical.NumericalService.html","topicUid":"numerical.NumericalService","type":"Class"},{"name":"NumericalService.NumericalServiceBase","href":"numerical.NumericalService.NumericalServiceBase.html","topicHref":"numerical.NumericalService.NumericalServiceBase.html","topicUid":"numerical.NumericalService.NumericalServiceBase","type":"Class"},{"name":"NumericalService.NumericalServiceClient","href":"numerical.NumericalService.NumericalServiceClient.html","topicHref":"numerical.NumericalService.NumericalServiceClient.html","topicUid":"numerical.NumericalService.NumericalServiceClient","type":"Class"},{"name":"UniversalNcReflection","href":"numerical.UniversalNcReflection.html","topicHref":"numerical.UniversalNcReflection.html","topicUid":"numerical.UniversalNcReflection","type":"Class"},{"name":"UniversalNcService","href":"numerical.UniversalNcService.html","topicHref":"numerical.UniversalNcService.html","topicUid":"numerical.UniversalNcService","type":"Class"},{"name":"UniversalNcService.UniversalNcServiceBase","href":"numerical.UniversalNcService.UniversalNcServiceBase.html","topicHref":"numerical.UniversalNcService.UniversalNcServiceBase.html","topicUid":"numerical.UniversalNcService.UniversalNcServiceBase","type":"Class"},{"name":"UniversalNcService.UniversalNcServiceClient","href":"numerical.UniversalNcService.UniversalNcServiceClient.html","topicHref":"numerical.UniversalNcService.UniversalNcServiceClient.html","topicUid":"numerical.UniversalNcService.UniversalNcServiceClient","type":"Class"}]}],"memberLayout":"SamePage"} +{"items":[{"name":"Hi.Cbtr","href":"Hi.Cbtr.html","topicHref":"Hi.Cbtr.html","topicUid":"Hi.Cbtr","type":"Namespace","items":[{"name":"CachedTris","href":"Hi.Cbtr.CachedTris.html","topicHref":"Hi.Cbtr.CachedTris.html","topicUid":"Hi.Cbtr.CachedTris","type":"Class"},{"name":"CachedTris.SweepingMode","href":"Hi.Cbtr.CachedTris.SweepingMode.html","topicHref":"Hi.Cbtr.CachedTris.SweepingMode.html","topicUid":"Hi.Cbtr.CachedTris.SweepingMode","type":"Enum"},{"name":"CbtrPickable","href":"Hi.Cbtr.CbtrPickable.html","topicHref":"Hi.Cbtr.CbtrPickable.html","topicUid":"Hi.Cbtr.CbtrPickable","type":"Class"},{"name":"CubeTree","href":"Hi.Cbtr.CubeTree.html","topicHref":"Hi.Cbtr.CubeTree.html","topicUid":"Hi.Cbtr.CubeTree","type":"Class"},{"name":"CubeTree.diff_response_func_t","href":"Hi.Cbtr.CubeTree.diff_response_func_t.html","topicHref":"Hi.Cbtr.CubeTree.diff_response_func_t.html","topicUid":"Hi.Cbtr.CubeTree.diff_response_func_t","type":"Delegate"},{"name":"CubeTreeFile","href":"Hi.Cbtr.CubeTreeFile.html","topicHref":"Hi.Cbtr.CubeTreeFile.html","topicUid":"Hi.Cbtr.CubeTreeFile","type":"Class"},{"name":"DiffAttachment","href":"Hi.Cbtr.DiffAttachment.html","topicHref":"Hi.Cbtr.DiffAttachment.html","topicUid":"Hi.Cbtr.DiffAttachment","type":"Class"},{"name":"GeomBoolCache","href":"Hi.Cbtr.GeomBoolCache.html","topicHref":"Hi.Cbtr.GeomBoolCache.html","topicUid":"Hi.Cbtr.GeomBoolCache","type":"Class"},{"name":"GeomBoolCacheEnum","href":"Hi.Cbtr.GeomBoolCacheEnum.html","topicHref":"Hi.Cbtr.GeomBoolCacheEnum.html","topicUid":"Hi.Cbtr.GeomBoolCacheEnum","type":"Enum"},{"name":"IGetInitStickConvex","href":"Hi.Cbtr.IGetInitStickConvex.html","topicHref":"Hi.Cbtr.IGetInitStickConvex.html","topicUid":"Hi.Cbtr.IGetInitStickConvex","type":"Interface"},{"name":"InitStickConvex","href":"Hi.Cbtr.InitStickConvex.html","topicHref":"Hi.Cbtr.InitStickConvex.html","topicUid":"Hi.Cbtr.InitStickConvex","type":"Class"},{"name":"LsStl","href":"Hi.Cbtr.LsStl.html","topicHref":"Hi.Cbtr.LsStl.html","topicUid":"Hi.Cbtr.LsStl","type":"Class"},{"name":"Substraction","href":"Hi.Cbtr.Substraction.html","topicHref":"Hi.Cbtr.Substraction.html","topicUid":"Hi.Cbtr.Substraction","type":"Class"},{"name":"UnhighlightablePickable","href":"Hi.Cbtr.UnhighlightablePickable.html","topicHref":"Hi.Cbtr.UnhighlightablePickable.html","topicUid":"Hi.Cbtr.UnhighlightablePickable","type":"Class"},{"name":"UnmanagedSubstraction","href":"Hi.Cbtr.UnmanagedSubstraction.html","topicHref":"Hi.Cbtr.UnmanagedSubstraction.html","topicUid":"Hi.Cbtr.UnmanagedSubstraction","type":"Class"},{"name":"node_diff_t","href":"Hi.Cbtr.node_diff_t.html","topicHref":"Hi.Cbtr.node_diff_t.html","topicUid":"Hi.Cbtr.node_diff_t","type":"Struct"}]},{"name":"Hi.Collision","href":"Hi.Collision.html","topicHref":"Hi.Collision.html","topicUid":"Hi.Collision","type":"Namespace","items":[{"name":"AnchoredCollidableLeaf","href":"Hi.Collision.AnchoredCollidableLeaf.html","topicHref":"Hi.Collision.AnchoredCollidableLeaf.html","topicUid":"Hi.Collision.AnchoredCollidableLeaf","type":"Class"},{"name":"AnchoredCollidablePair","href":"Hi.Collision.AnchoredCollidablePair.html","topicHref":"Hi.Collision.AnchoredCollidablePair.html","topicUid":"Hi.Collision.AnchoredCollidablePair","type":"Class"},{"name":"CollidableStl","href":"Hi.Collision.CollidableStl.html","topicHref":"Hi.Collision.CollidableStl.html","topicUid":"Hi.Collision.CollidableStl","type":"Class"},{"name":"CollisionFlag","href":"Hi.Collision.CollisionFlag.html","topicHref":"Hi.Collision.CollisionFlag.html","topicUid":"Hi.Collision.CollisionFlag","type":"Enum"},{"name":"CollisionIndexPair","href":"Hi.Collision.CollisionIndexPair.html","topicHref":"Hi.Collision.CollisionIndexPair.html","topicUid":"Hi.Collision.CollisionIndexPair","type":"Class"},{"name":"CollisionUtil","href":"Hi.Collision.CollisionUtil.html","topicHref":"Hi.Collision.CollisionUtil.html","topicUid":"Hi.Collision.CollisionUtil","type":"Class"},{"name":"FuncAnchoredCollidable","href":"Hi.Collision.FuncAnchoredCollidable.html","topicHref":"Hi.Collision.FuncAnchoredCollidable.html","topicUid":"Hi.Collision.FuncAnchoredCollidable","type":"Class"},{"name":"IAnchoredCollidableBased","href":"Hi.Collision.IAnchoredCollidableBased.html","topicHref":"Hi.Collision.IAnchoredCollidableBased.html","topicUid":"Hi.Collision.IAnchoredCollidableBased","type":"Interface"},{"name":"IAnchoredCollidableLeaf","href":"Hi.Collision.IAnchoredCollidableLeaf.html","topicHref":"Hi.Collision.IAnchoredCollidableLeaf.html","topicUid":"Hi.Collision.IAnchoredCollidableLeaf","type":"Interface"},{"name":"IAnchoredCollidableNode","href":"Hi.Collision.IAnchoredCollidableNode.html","topicHref":"Hi.Collision.IAnchoredCollidableNode.html","topicUid":"Hi.Collision.IAnchoredCollidableNode","type":"Interface"},{"name":"IAnchoredCollidableStem","href":"Hi.Collision.IAnchoredCollidableStem.html","topicHref":"Hi.Collision.IAnchoredCollidableStem.html","topicUid":"Hi.Collision.IAnchoredCollidableStem","type":"Interface"},{"name":"ICollidable","href":"Hi.Collision.ICollidable.html","topicHref":"Hi.Collision.ICollidable.html","topicUid":"Hi.Collision.ICollidable","type":"Interface"},{"name":"ICollidee","href":"Hi.Collision.ICollidee.html","topicHref":"Hi.Collision.ICollidee.html","topicUid":"Hi.Collision.ICollidee","type":"Interface"},{"name":"ICollisionArena","href":"Hi.Collision.ICollisionArena.html","topicHref":"Hi.Collision.ICollisionArena.html","topicUid":"Hi.Collision.ICollisionArena","type":"Interface"},{"name":"ICollisionIndex","href":"Hi.Collision.ICollisionIndex.html","topicHref":"Hi.Collision.ICollisionIndex.html","topicUid":"Hi.Collision.ICollisionIndex","type":"Interface"},{"name":"IGetAnchoredCollidablePairs","href":"Hi.Collision.IGetAnchoredCollidablePairs.html","topicHref":"Hi.Collision.IGetAnchoredCollidablePairs.html","topicUid":"Hi.Collision.IGetAnchoredCollidablePairs","type":"Interface"},{"name":"IGetCollidable","href":"Hi.Collision.IGetCollidable.html","topicHref":"Hi.Collision.IGetCollidable.html","topicUid":"Hi.Collision.IGetCollidable","type":"Interface"},{"name":"IGetCollisionIndexPairs","href":"Hi.Collision.IGetCollisionIndexPairs.html","topicHref":"Hi.Collision.IGetCollisionIndexPairs.html","topicUid":"Hi.Collision.IGetCollisionIndexPairs","type":"Interface"},{"name":"IGetDefaultCollidablePairs","href":"Hi.Collision.IGetDefaultCollidablePairs.html","topicHref":"Hi.Collision.IGetDefaultCollidablePairs.html","topicUid":"Hi.Collision.IGetDefaultCollidablePairs","type":"Interface"},{"name":"IGetTriTree","href":"Hi.Collision.IGetTriTree.html","topicHref":"Hi.Collision.IGetTriTree.html","topicUid":"Hi.Collision.IGetTriTree","type":"Interface"},{"name":"MechCollisionResult","href":"Hi.Collision.MechCollisionResult.html","topicHref":"Hi.Collision.MechCollisionResult.html","topicUid":"Hi.Collision.MechCollisionResult","type":"Class"},{"name":"MechCollisionUtil","href":"Hi.Collision.MechCollisionUtil.html","topicHref":"Hi.Collision.MechCollisionUtil.html","topicUid":"Hi.Collision.MechCollisionUtil","type":"Class"},{"name":"TriTree","href":"Hi.Collision.TriTree.html","topicHref":"Hi.Collision.TriTree.html","topicUid":"Hi.Collision.TriTree","type":"Class"}]},{"name":"Hi.Collisions","href":"Hi.Collisions.html","topicHref":"Hi.Collisions.html","topicUid":"Hi.Collisions","type":"Namespace","items":[{"name":"AnchoredCollidabled","href":"Hi.Collisions.AnchoredCollidabled.html","topicHref":"Hi.Collisions.AnchoredCollidabled.html","topicUid":"Hi.Collisions.AnchoredCollidabled","type":"Class"},{"name":"IAnchoredCollidabled","href":"Hi.Collisions.IAnchoredCollidabled.html","topicHref":"Hi.Collisions.IAnchoredCollidabled.html","topicUid":"Hi.Collisions.IAnchoredCollidabled","type":"Interface"}]},{"name":"Hi.Coloring","href":"Hi.Coloring.html","topicHref":"Hi.Coloring.html","topicUid":"Hi.Coloring","type":"Namespace","items":[{"name":"ColorUtil","href":"Hi.Coloring.ColorUtil.html","topicHref":"Hi.Coloring.ColorUtil.html","topicUid":"Hi.Coloring.ColorUtil","type":"Class"},{"name":"DictionaryColorGuide","href":"Hi.Coloring.DictionaryColorGuide.html","topicHref":"Hi.Coloring.DictionaryColorGuide.html","topicUid":"Hi.Coloring.DictionaryColorGuide","type":"Class"},{"name":"DiscreteQuantityColorGuide","href":"Hi.Coloring.DiscreteQuantityColorGuide.html","topicHref":"Hi.Coloring.DiscreteQuantityColorGuide.html","topicUid":"Hi.Coloring.DiscreteQuantityColorGuide","type":"Class"},{"name":"FilteredColorGuide","href":"Hi.Coloring.FilteredColorGuide.html","topicHref":"Hi.Coloring.FilteredColorGuide.html","topicUid":"Hi.Coloring.FilteredColorGuide","type":"Class"},{"name":"FuncRangeColorGuide","href":"Hi.Coloring.FuncRangeColorGuide.html","topicHref":"Hi.Coloring.FuncRangeColorGuide.html","topicUid":"Hi.Coloring.FuncRangeColorGuide","type":"Class"},{"name":"IColorGuide","href":"Hi.Coloring.IColorGuide.html","topicHref":"Hi.Coloring.IColorGuide.html","topicUid":"Hi.Coloring.IColorGuide","type":"Interface"},{"name":"IColorGuideProperty","href":"Hi.Coloring.IColorGuideProperty.html","topicHref":"Hi.Coloring.IColorGuideProperty.html","topicUid":"Hi.Coloring.IColorGuideProperty","type":"Interface"},{"name":"IGetColorGuide","href":"Hi.Coloring.IGetColorGuide.html","topicHref":"Hi.Coloring.IGetColorGuide.html","topicUid":"Hi.Coloring.IGetColorGuide","type":"Interface"},{"name":"IGetRangeColorRule","href":"Hi.Coloring.IGetRangeColorRule.html","topicHref":"Hi.Coloring.IGetRangeColorRule.html","topicUid":"Hi.Coloring.IGetRangeColorRule","type":"Interface"},{"name":"IGetRgb","href":"Hi.Coloring.IGetRgb.html","topicHref":"Hi.Coloring.IGetRgb.html","topicUid":"Hi.Coloring.IGetRgb","type":"Interface"},{"name":"IGetRgbWithPriority","href":"Hi.Coloring.IGetRgbWithPriority.html","topicHref":"Hi.Coloring.IGetRgbWithPriority.html","topicUid":"Hi.Coloring.IGetRgbWithPriority","type":"Interface"},{"name":"PlainColorGuide","href":"Hi.Coloring.PlainColorGuide.html","topicHref":"Hi.Coloring.PlainColorGuide.html","topicUid":"Hi.Coloring.PlainColorGuide","type":"Class"},{"name":"QuantityColorGuide","href":"Hi.Coloring.QuantityColorGuide.html","topicHref":"Hi.Coloring.QuantityColorGuide.html","topicUid":"Hi.Coloring.QuantityColorGuide","type":"Class"},{"name":"RangeColorRule","href":"Hi.Coloring.RangeColorRule.html","topicHref":"Hi.Coloring.RangeColorRule.html","topicUid":"Hi.Coloring.RangeColorRule","type":"Class"},{"name":"RatioRgbFuncEnum","href":"Hi.Coloring.RatioRgbFuncEnum.html","topicHref":"Hi.Coloring.RatioRgbFuncEnum.html","topicUid":"Hi.Coloring.RatioRgbFuncEnum","type":"Enum"},{"name":"RgbSeed","href":"Hi.Coloring.RgbSeed.html","topicHref":"Hi.Coloring.RgbSeed.html","topicUid":"Hi.Coloring.RgbSeed","type":"Class"}]},{"name":"Hi.Common","href":"Hi.Common.html","topicHref":"Hi.Common.html","topicUid":"Hi.Common","type":"Namespace","items":[{"name":"BinIoUtil","href":"Hi.Common.BinIoUtil.html","topicHref":"Hi.Common.BinIoUtil.html","topicUid":"Hi.Common.BinIoUtil","type":"Class"},{"name":"BitUtil","href":"Hi.Common.BitUtil.html","topicHref":"Hi.Common.BitUtil.html","topicUid":"Hi.Common.BitUtil","type":"Class"},{"name":"BlockingTimer","href":"Hi.Common.BlockingTimer.html","topicHref":"Hi.Common.BlockingTimer.html","topicUid":"Hi.Common.BlockingTimer","type":"Class"},{"name":"BytesUtil","href":"Hi.Common.BytesUtil.html","topicHref":"Hi.Common.BytesUtil.html","topicUid":"Hi.Common.BytesUtil","type":"Class"},{"name":"ConcurrentTimeCounter","href":"Hi.Common.ConcurrentTimeCounter.html","topicHref":"Hi.Common.ConcurrentTimeCounter.html","topicUid":"Hi.Common.ConcurrentTimeCounter","type":"Class"},{"name":"ConsoleUtil","href":"Hi.Common.ConsoleUtil.html","topicHref":"Hi.Common.ConsoleUtil.html","topicUid":"Hi.Common.ConsoleUtil","type":"Class"},{"name":"CppLogUtil","href":"Hi.Common.CppLogUtil.html","topicHref":"Hi.Common.CppLogUtil.html","topicUid":"Hi.Common.CppLogUtil","type":"Class"},{"name":"CppLogUtil.LogDelegate","href":"Hi.Common.CppLogUtil.LogDelegate.html","topicHref":"Hi.Common.CppLogUtil.LogDelegate.html","topicUid":"Hi.Common.CppLogUtil.LogDelegate","type":"Delegate"},{"name":"CultureUtil","href":"Hi.Common.CultureUtil.html","topicHref":"Hi.Common.CultureUtil.html","topicUid":"Hi.Common.CultureUtil","type":"Class"},{"name":"DebugUtil","href":"Hi.Common.DebugUtil.html","topicHref":"Hi.Common.DebugUtil.html","topicUid":"Hi.Common.DebugUtil","type":"Class"},{"name":"DuplicateUtil","href":"Hi.Common.DuplicateUtil.html","topicHref":"Hi.Common.DuplicateUtil.html","topicUid":"Hi.Common.DuplicateUtil","type":"Class"},{"name":"EnumUtil","href":"Hi.Common.EnumUtil.html","topicHref":"Hi.Common.EnumUtil.html","topicUid":"Hi.Common.EnumUtil","type":"Class"},{"name":"EnumerablePlayer","href":"Hi.Common.EnumerablePlayer.html","topicHref":"Hi.Common.EnumerablePlayer.html","topicUid":"Hi.Common.EnumerablePlayer","type":"Class"},{"name":"ExceptionUtil","href":"Hi.Common.ExceptionUtil.html","topicHref":"Hi.Common.ExceptionUtil.html","topicUid":"Hi.Common.ExceptionUtil","type":"Class"},{"name":"IAbstractNote","href":"Hi.Common.IAbstractNote.html","topicHref":"Hi.Common.IAbstractNote.html","topicUid":"Hi.Common.IAbstractNote","type":"Interface"},{"name":"IBinaryIo","href":"Hi.Common.IBinaryIo.html","topicHref":"Hi.Common.IBinaryIo.html","topicUid":"Hi.Common.IBinaryIo","type":"Interface"},{"name":"IClearCache","href":"Hi.Common.IClearCache.html","topicHref":"Hi.Common.IClearCache.html","topicUid":"Hi.Common.IClearCache","type":"Interface"},{"name":"IDuplicate","href":"Hi.Common.IDuplicate.html","topicHref":"Hi.Common.IDuplicate.html","topicUid":"Hi.Common.IDuplicate","type":"Interface"},{"name":"IGetQuantityByKey","href":"Hi.Common.IGetQuantityByKey.html","topicHref":"Hi.Common.IGetQuantityByKey.html","topicUid":"Hi.Common.IGetQuantityByKey","type":"Interface"},{"name":"IGetSelectionName","href":"Hi.Common.IGetSelectionName.html","topicHref":"Hi.Common.IGetSelectionName.html","topicUid":"Hi.Common.IGetSelectionName","type":"Interface"},{"name":"INameNote","href":"Hi.Common.INameNote.html","topicHref":"Hi.Common.INameNote.html","topicUid":"Hi.Common.INameNote","type":"Interface"},{"name":"IPreferredFileName","href":"Hi.Common.IPreferredFileName.html","topicHref":"Hi.Common.IPreferredFileName.html","topicUid":"Hi.Common.IPreferredFileName","type":"Interface"},{"name":"ISourceFile","href":"Hi.Common.ISourceFile.html","topicHref":"Hi.Common.ISourceFile.html","topicUid":"Hi.Common.ISourceFile","type":"Interface"},{"name":"IUpdateByContent","href":"Hi.Common.IUpdateByContent.html","topicHref":"Hi.Common.IUpdateByContent.html","topicUid":"Hi.Common.IUpdateByContent","type":"Interface"},{"name":"IUriGetter","href":"Hi.Common.IUriGetter.html","topicHref":"Hi.Common.IUriGetter.html","topicUid":"Hi.Common.IUriGetter","type":"Interface"},{"name":"IWriteBin","href":"Hi.Common.IWriteBin.html","topicHref":"Hi.Common.IWriteBin.html","topicUid":"Hi.Common.IWriteBin","type":"Interface"},{"name":"IndexSegment","href":"Hi.Common.IndexSegment.html","topicHref":"Hi.Common.IndexSegment.html","topicUid":"Hi.Common.IndexSegment","type":"Class"},{"name":"IntegerKeyDictionaryConverter","href":"Hi.Common.IntegerKeyDictionaryConverter.html","topicHref":"Hi.Common.IntegerKeyDictionaryConverter.html","topicUid":"Hi.Common.IntegerKeyDictionaryConverter","type":"Class"},{"name":"IntegerKeyDictionaryConverter","href":"Hi.Common.IntegerKeyDictionaryConverter-1.html","topicHref":"Hi.Common.IntegerKeyDictionaryConverter-1.html","topicUid":"Hi.Common.IntegerKeyDictionaryConverter`1","type":"Class"},{"name":"InternalException","href":"Hi.Common.InternalException.html","topicHref":"Hi.Common.InternalException.html","topicUid":"Hi.Common.InternalException","type":"Class"},{"name":"InvokeUtil","href":"Hi.Common.InvokeUtil.html","topicHref":"Hi.Common.InvokeUtil.html","topicUid":"Hi.Common.InvokeUtil","type":"Class"},{"name":"JsonUtil","href":"Hi.Common.JsonUtil.html","topicHref":"Hi.Common.JsonUtil.html","topicUid":"Hi.Common.JsonUtil","type":"Class"},{"name":"LooseRunner","href":"Hi.Common.LooseRunner.html","topicHref":"Hi.Common.LooseRunner.html","topicUid":"Hi.Common.LooseRunner","type":"Class"},{"name":"LooseRunner.MergedCancellationTokenRun","href":"Hi.Common.LooseRunner.MergedCancellationTokenRun.html","topicHref":"Hi.Common.LooseRunner.MergedCancellationTokenRun.html","topicUid":"Hi.Common.LooseRunner.MergedCancellationTokenRun","type":"Delegate"},{"name":"ManualUtil","href":"Hi.Common.ManualUtil.html","topicHref":"Hi.Common.ManualUtil.html","topicUid":"Hi.Common.ManualUtil","type":"Class"},{"name":"MaskUtil","href":"Hi.Common.MaskUtil.html","topicHref":"Hi.Common.MaskUtil.html","topicUid":"Hi.Common.MaskUtil","type":"Class"},{"name":"NameUtil","href":"Hi.Common.NameUtil.html","topicHref":"Hi.Common.NameUtil.html","topicUid":"Hi.Common.NameUtil","type":"Class"},{"name":"PacePlayee","href":"Hi.Common.PacePlayee.html","topicHref":"Hi.Common.PacePlayee.html","topicUid":"Hi.Common.PacePlayee","type":"Class"},{"name":"PacePlayer","href":"Hi.Common.PacePlayer.html","topicHref":"Hi.Common.PacePlayer.html","topicUid":"Hi.Common.PacePlayer","type":"Class"},{"name":"Pair","href":"Hi.Common.Pair-2.html","topicHref":"Hi.Common.Pair-2.html","topicUid":"Hi.Common.Pair`2","type":"Class"},{"name":"Range","href":"Hi.Common.Range-1.html","topicHref":"Hi.Common.Range-1.html","topicUid":"Hi.Common.Range`1","type":"Class"},{"name":"ResourceUtil","href":"Hi.Common.ResourceUtil.html","topicHref":"Hi.Common.ResourceUtil.html","topicUid":"Hi.Common.ResourceUtil","type":"Class"},{"name":"RoutineBlocker","href":"Hi.Common.RoutineBlocker.html","topicHref":"Hi.Common.RoutineBlocker.html","topicUid":"Hi.Common.RoutineBlocker","type":"Class"},{"name":"RoutineBlocker0","href":"Hi.Common.RoutineBlocker0.html","topicHref":"Hi.Common.RoutineBlocker0.html","topicUid":"Hi.Common.RoutineBlocker0","type":"Class"},{"name":"SearchResult","href":"Hi.Common.SearchResult.html","topicHref":"Hi.Common.SearchResult.html","topicUid":"Hi.Common.SearchResult","type":"Enum"},{"name":"SeqPairUtil","href":"Hi.Common.SeqPairUtil.html","topicHref":"Hi.Common.SeqPairUtil.html","topicUid":"Hi.Common.SeqPairUtil","type":"Class"},{"name":"SeqPair","href":"Hi.Common.SeqPair-1.html","topicHref":"Hi.Common.SeqPair-1.html","topicUid":"Hi.Common.SeqPair`1","type":"Class"},{"name":"ServerFileExplorerConfig","href":"Hi.Common.ServerFileExplorerConfig.html","topicHref":"Hi.Common.ServerFileExplorerConfig.html","topicUid":"Hi.Common.ServerFileExplorerConfig","type":"Class"},{"name":"Slice","href":"Hi.Common.Slice.html","topicHref":"Hi.Common.Slice.html","topicUid":"Hi.Common.Slice","type":"Class"},{"name":"StringLocalizer","href":"Hi.Common.StringLocalizer.html","topicHref":"Hi.Common.StringLocalizer.html","topicUid":"Hi.Common.StringLocalizer","type":"Class"},{"name":"StringUtil","href":"Hi.Common.StringUtil.html","topicHref":"Hi.Common.StringUtil.html","topicUid":"Hi.Common.StringUtil","type":"Class"},{"name":"TaskUtil","href":"Hi.Common.TaskUtil.html","topicHref":"Hi.Common.TaskUtil.html","topicUid":"Hi.Common.TaskUtil","type":"Class"},{"name":"TimeCounter","href":"Hi.Common.TimeCounter.html","topicHref":"Hi.Common.TimeCounter.html","topicUid":"Hi.Common.TimeCounter","type":"Class"}]},{"name":"Hi.Common.Collections","href":"Hi.Common.Collections.html","topicHref":"Hi.Common.Collections.html","topicUid":"Hi.Common.Collections","type":"Namespace","items":[{"name":"DictionaryUtil","href":"Hi.Common.Collections.DictionaryUtil.html","topicHref":"Hi.Common.Collections.DictionaryUtil.html","topicUid":"Hi.Common.Collections.DictionaryUtil","type":"Class"},{"name":"EnumerableUtil","href":"Hi.Common.Collections.EnumerableUtil.html","topicHref":"Hi.Common.Collections.EnumerableUtil.html","topicUid":"Hi.Common.Collections.EnumerableUtil","type":"Class"},{"name":"FixedSizeConcurrentLinkedListUtil","href":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil.html","topicHref":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil.html","topicUid":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil","type":"Class"},{"name":"ListIndexBasedEnumerable","href":"Hi.Common.Collections.ListIndexBasedEnumerable-1.html","topicHref":"Hi.Common.Collections.ListIndexBasedEnumerable-1.html","topicUid":"Hi.Common.Collections.ListIndexBasedEnumerable`1","type":"Class"},{"name":"ListIndexBasedIEnumerator","href":"Hi.Common.Collections.ListIndexBasedIEnumerator-1.html","topicHref":"Hi.Common.Collections.ListIndexBasedIEnumerator-1.html","topicUid":"Hi.Common.Collections.ListIndexBasedIEnumerator`1","type":"Class"},{"name":"ListUtil","href":"Hi.Common.Collections.ListUtil.html","topicHref":"Hi.Common.Collections.ListUtil.html","topicUid":"Hi.Common.Collections.ListUtil","type":"Class"},{"name":"ListUtil.OuterPolationMode","href":"Hi.Common.Collections.ListUtil.OuterPolationMode.html","topicHref":"Hi.Common.Collections.ListUtil.OuterPolationMode.html","topicUid":"Hi.Common.Collections.ListUtil.OuterPolationMode","type":"Enum"},{"name":"SearchTargetMode","href":"Hi.Common.Collections.SearchTargetMode.html","topicHref":"Hi.Common.Collections.SearchTargetMode.html","topicUid":"Hi.Common.Collections.SearchTargetMode","type":"Enum"},{"name":"SeekDirection","href":"Hi.Common.Collections.SeekDirection.html","topicHref":"Hi.Common.Collections.SeekDirection.html","topicUid":"Hi.Common.Collections.SeekDirection","type":"Enum"},{"name":"SortedListUtil","href":"Hi.Common.Collections.SortedListUtil.html","topicHref":"Hi.Common.Collections.SortedListUtil.html","topicUid":"Hi.Common.Collections.SortedListUtil","type":"Class"},{"name":"SubList","href":"Hi.Common.Collections.SubList-1.html","topicHref":"Hi.Common.Collections.SubList-1.html","topicUid":"Hi.Common.Collections.SubList`1","type":"Class"},{"name":"SynList","href":"Hi.Common.Collections.SynList-1.html","topicHref":"Hi.Common.Collections.SynList-1.html","topicUid":"Hi.Common.Collections.SynList`1","type":"Class"}]},{"name":"Hi.Common.CsvUtils","href":"Hi.Common.CsvUtils.html","topicHref":"Hi.Common.CsvUtils.html","topicUid":"Hi.Common.CsvUtils","type":"Namespace","items":[{"name":"CsvInputKit","href":"Hi.Common.CsvUtils.CsvInputKit.html","topicHref":"Hi.Common.CsvUtils.CsvInputKit.html","topicUid":"Hi.Common.CsvUtils.CsvInputKit","type":"Class"},{"name":"CsvOutputKit","href":"Hi.Common.CsvUtils.CsvOutputKit.html","topicHref":"Hi.Common.CsvUtils.CsvOutputKit.html","topicUid":"Hi.Common.CsvUtils.CsvOutputKit","type":"Class"},{"name":"CsvUtil","href":"Hi.Common.CsvUtils.CsvUtil.html","topicHref":"Hi.Common.CsvUtils.CsvUtil.html","topicUid":"Hi.Common.CsvUtils.CsvUtil","type":"Class"},{"name":"ICsvRowIo","href":"Hi.Common.CsvUtils.ICsvRowIo.html","topicHref":"Hi.Common.CsvUtils.ICsvRowIo.html","topicUid":"Hi.Common.CsvUtils.ICsvRowIo","type":"Interface"},{"name":"IGetCsvDictionary","href":"Hi.Common.CsvUtils.IGetCsvDictionary.html","topicHref":"Hi.Common.CsvUtils.IGetCsvDictionary.html","topicUid":"Hi.Common.CsvUtils.IGetCsvDictionary","type":"Interface"}]},{"name":"Hi.Common.FileLines","href":"Hi.Common.FileLines.html","topicHref":"Hi.Common.FileLines.html","topicUid":"Hi.Common.FileLines","type":"Namespace","items":[{"name":"FileBeginEventArgs","href":"Hi.Common.FileLines.FileBeginEventArgs.html","topicHref":"Hi.Common.FileLines.FileBeginEventArgs.html","topicUid":"Hi.Common.FileLines.FileBeginEventArgs","type":"Class"},{"name":"FileEndEventArgs","href":"Hi.Common.FileLines.FileEndEventArgs.html","topicHref":"Hi.Common.FileLines.FileEndEventArgs.html","topicUid":"Hi.Common.FileLines.FileEndEventArgs","type":"Class"},{"name":"FileLineIndex","href":"Hi.Common.FileLines.FileLineIndex.html","topicHref":"Hi.Common.FileLines.FileLineIndex.html","topicUid":"Hi.Common.FileLines.FileLineIndex","type":"Class"},{"name":"FileLinePipingKit","href":"Hi.Common.FileLines.FileLinePipingKit.html","topicHref":"Hi.Common.FileLines.FileLinePipingKit.html","topicUid":"Hi.Common.FileLines.FileLinePipingKit","type":"Class"},{"name":"FileLineUtil","href":"Hi.Common.FileLines.FileLineUtil.html","topicHref":"Hi.Common.FileLines.FileLineUtil.html","topicUid":"Hi.Common.FileLines.FileLineUtil","type":"Class"},{"name":"FileUtil","href":"Hi.Common.FileLines.FileUtil.html","topicHref":"Hi.Common.FileLines.FileUtil.html","topicUid":"Hi.Common.FileLines.FileUtil","type":"Class"},{"name":"IFileChangedEventSupport","href":"Hi.Common.FileLines.IFileChangedEventSupport.html","topicHref":"Hi.Common.FileLines.IFileChangedEventSupport.html","topicUid":"Hi.Common.FileLines.IFileChangedEventSupport","type":"Interface"},{"name":"IFileLine","href":"Hi.Common.FileLines.IFileLine.html","topicHref":"Hi.Common.FileLines.IFileLine.html","topicUid":"Hi.Common.FileLines.IFileLine","type":"Interface"},{"name":"IFileLineIndex","href":"Hi.Common.FileLines.IFileLineIndex.html","topicHref":"Hi.Common.FileLines.IFileLineIndex.html","topicUid":"Hi.Common.FileLines.IFileLineIndex","type":"Interface"},{"name":"IGetFileLineIndex","href":"Hi.Common.FileLines.IGetFileLineIndex.html","topicHref":"Hi.Common.FileLines.IGetFileLineIndex.html","topicUid":"Hi.Common.FileLines.IGetFileLineIndex","type":"Interface"},{"name":"IGetIndexedFileLine","href":"Hi.Common.FileLines.IGetIndexedFileLine.html","topicHref":"Hi.Common.FileLines.IGetIndexedFileLine.html","topicUid":"Hi.Common.FileLines.IGetIndexedFileLine","type":"Interface"},{"name":"IIndexedFileLine","href":"Hi.Common.FileLines.IIndexedFileLine.html","topicHref":"Hi.Common.FileLines.IIndexedFileLine.html","topicUid":"Hi.Common.FileLines.IIndexedFileLine","type":"Interface"},{"name":"ILineChangedEventSupport","href":"Hi.Common.FileLines.ILineChangedEventSupport.html","topicHref":"Hi.Common.FileLines.ILineChangedEventSupport.html","topicUid":"Hi.Common.FileLines.ILineChangedEventSupport","type":"Interface"},{"name":"IndexedFile","href":"Hi.Common.FileLines.IndexedFile.html","topicHref":"Hi.Common.FileLines.IndexedFile.html","topicUid":"Hi.Common.FileLines.IndexedFile","type":"Class"},{"name":"IndexedFileLine","href":"Hi.Common.FileLines.IndexedFileLine.html","topicHref":"Hi.Common.FileLines.IndexedFileLine.html","topicUid":"Hi.Common.FileLines.IndexedFileLine","type":"Class"},{"name":"LineBeginEventArgs","href":"Hi.Common.FileLines.LineBeginEventArgs.html","topicHref":"Hi.Common.FileLines.LineBeginEventArgs.html","topicUid":"Hi.Common.FileLines.LineBeginEventArgs","type":"Class"},{"name":"LineEndEventArgs","href":"Hi.Common.FileLines.LineEndEventArgs.html","topicHref":"Hi.Common.FileLines.LineEndEventArgs.html","topicUid":"Hi.Common.FileLines.LineEndEventArgs","type":"Class"}]},{"name":"Hi.Common.Messages","href":"Hi.Common.Messages.html","topicHref":"Hi.Common.Messages.html","topicUid":"Hi.Common.Messages","type":"Namespace","items":[{"name":"BootstrapTheme","href":"Hi.Common.Messages.BootstrapTheme.html","topicHref":"Hi.Common.Messages.BootstrapTheme.html","topicUid":"Hi.Common.Messages.BootstrapTheme","type":"Enum"},{"name":"IMessageHost","href":"Hi.Common.Messages.IMessageHost.html","topicHref":"Hi.Common.Messages.IMessageHost.html","topicUid":"Hi.Common.Messages.IMessageHost","type":"Interface"},{"name":"MessageBoardUtil","href":"Hi.Common.Messages.MessageBoardUtil.html","topicHref":"Hi.Common.Messages.MessageBoardUtil.html","topicUid":"Hi.Common.Messages.MessageBoardUtil","type":"Class"},{"name":"MessageFlag","href":"Hi.Common.Messages.MessageFlag.html","topicHref":"Hi.Common.Messages.MessageFlag.html","topicUid":"Hi.Common.Messages.MessageFlag","type":"Enum"},{"name":"MessageHost","href":"Hi.Common.Messages.MessageHost.html","topicHref":"Hi.Common.Messages.MessageHost.html","topicUid":"Hi.Common.Messages.MessageHost","type":"Class"},{"name":"MessageHostUtil","href":"Hi.Common.Messages.MessageHostUtil.html","topicHref":"Hi.Common.Messages.MessageHostUtil.html","topicUid":"Hi.Common.Messages.MessageHostUtil","type":"Class"},{"name":"MultiTagMessage","href":"Hi.Common.Messages.MultiTagMessage.html","topicHref":"Hi.Common.Messages.MultiTagMessage.html","topicUid":"Hi.Common.Messages.MultiTagMessage","type":"Class"},{"name":"ShowMessageBoardDelegate","href":"Hi.Common.Messages.ShowMessageBoardDelegate.html","topicHref":"Hi.Common.Messages.ShowMessageBoardDelegate.html","topicUid":"Hi.Common.Messages.ShowMessageBoardDelegate","type":"Delegate"}]},{"name":"Hi.Common.MinMaxUtils","href":"Hi.Common.MinMaxUtils.html","topicHref":"Hi.Common.MinMaxUtils.html","topicUid":"Hi.Common.MinMaxUtils","type":"Namespace","items":[{"name":"IndexedMinMaxPos","href":"Hi.Common.MinMaxUtils.IndexedMinMaxPos-2.html","topicHref":"Hi.Common.MinMaxUtils.IndexedMinMaxPos-2.html","topicUid":"Hi.Common.MinMaxUtils.IndexedMinMaxPos`2","type":"Class"},{"name":"MinMaxUtil","href":"Hi.Common.MinMaxUtils.MinMaxUtil.html","topicHref":"Hi.Common.MinMaxUtils.MinMaxUtil.html","topicUid":"Hi.Common.MinMaxUtils.MinMaxUtil","type":"Class"}]},{"name":"Hi.Common.NativeProgresses","href":"Hi.Common.NativeProgresses.html","topicHref":"Hi.Common.NativeProgresses.html","topicUid":"Hi.Common.NativeProgresses","type":"Namespace","items":[{"name":"IProgressReport","href":"Hi.Common.NativeProgresses.IProgressReport.html","topicHref":"Hi.Common.NativeProgresses.IProgressReport.html","topicUid":"Hi.Common.NativeProgresses.IProgressReport","type":"Interface"},{"name":"NativeProgressReport","href":"Hi.Common.NativeProgresses.NativeProgressReport.html","topicHref":"Hi.Common.NativeProgresses.NativeProgressReport.html","topicUid":"Hi.Common.NativeProgresses.NativeProgressReport","type":"Class"},{"name":"ProgressReport","href":"Hi.Common.NativeProgresses.ProgressReport.html","topicHref":"Hi.Common.NativeProgresses.ProgressReport.html","topicUid":"Hi.Common.NativeProgresses.ProgressReport","type":"Class"},{"name":"progress_monitor_t","href":"Hi.Common.NativeProgresses.progress_monitor_t.html","topicHref":"Hi.Common.NativeProgresses.progress_monitor_t.html","topicUid":"Hi.Common.NativeProgresses.progress_monitor_t","type":"Struct"},{"name":"report_progress_func_t","href":"Hi.Common.NativeProgresses.report_progress_func_t.html","topicHref":"Hi.Common.NativeProgresses.report_progress_func_t.html","topicUid":"Hi.Common.NativeProgresses.report_progress_func_t","type":"Delegate"}]},{"name":"Hi.Common.ParallelBulkUtils","href":"Hi.Common.ParallelBulkUtils.html","topicHref":"Hi.Common.ParallelBulkUtils.html","topicUid":"Hi.Common.ParallelBulkUtils","type":"Namespace","items":[{"name":"ParallelBulkReader","href":"Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ParallelBulkReader`1","type":"Class"},{"name":"ParallelBulkWriter","href":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter`1","type":"Class"},{"name":"ReadBulkDelegate","href":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate`1","type":"Delegate"},{"name":"SequentialBulkReader","href":"Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html","topicHref":"Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html","topicUid":"Hi.Common.ParallelBulkUtils.SequentialBulkReader`1","type":"Class"}]},{"name":"Hi.Common.PathUtils","href":"Hi.Common.PathUtils.html","topicHref":"Hi.Common.PathUtils.html","topicUid":"Hi.Common.PathUtils","type":"Namespace","items":[{"name":"ExtendedNamedPath","href":"Hi.Common.PathUtils.ExtendedNamedPath.html","topicHref":"Hi.Common.PathUtils.ExtendedNamedPath.html","topicUid":"Hi.Common.PathUtils.ExtendedNamedPath","type":"Class"},{"name":"HttpUtil","href":"Hi.Common.PathUtils.HttpUtil.html","topicHref":"Hi.Common.PathUtils.HttpUtil.html","topicUid":"Hi.Common.PathUtils.HttpUtil","type":"Class"},{"name":"Lang","href":"Hi.Common.PathUtils.Lang.html","topicHref":"Hi.Common.PathUtils.Lang.html","topicUid":"Hi.Common.PathUtils.Lang","type":"Class"},{"name":"NamedPath","href":"Hi.Common.PathUtils.NamedPath.html","topicHref":"Hi.Common.PathUtils.NamedPath.html","topicUid":"Hi.Common.PathUtils.NamedPath","type":"Class"},{"name":"PathUtil","href":"Hi.Common.PathUtils.PathUtil.html","topicHref":"Hi.Common.PathUtils.PathUtil.html","topicUid":"Hi.Common.PathUtils.PathUtil","type":"Class"}]},{"name":"Hi.Common.QueueCacheUtils","href":"Hi.Common.QueueCacheUtils.html","topicHref":"Hi.Common.QueueCacheUtils.html","topicUid":"Hi.Common.QueueCacheUtils","type":"Namespace","items":[{"name":"QueueCacherHost","href":"Hi.Common.QueueCacheUtils.QueueCacherHost-1.html","topicHref":"Hi.Common.QueueCacheUtils.QueueCacherHost-1.html","topicUid":"Hi.Common.QueueCacheUtils.QueueCacherHost`1","type":"Class"},{"name":"QueueCacher","href":"Hi.Common.QueueCacheUtils.QueueCacher-1.html","topicHref":"Hi.Common.QueueCacheUtils.QueueCacher-1.html","topicUid":"Hi.Common.QueueCacheUtils.QueueCacher`1","type":"Class"}]},{"name":"Hi.Common.XmlUtils","href":"Hi.Common.XmlUtils.html","topicHref":"Hi.Common.XmlUtils.html","topicUid":"Hi.Common.XmlUtils","type":"Namespace","items":[{"name":"GenMode","href":"Hi.Common.XmlUtils.GenMode.html","topicHref":"Hi.Common.XmlUtils.GenMode.html","topicUid":"Hi.Common.XmlUtils.GenMode","type":"Enum"},{"name":"IMakeXmlSource","href":"Hi.Common.XmlUtils.IMakeXmlSource.html","topicHref":"Hi.Common.XmlUtils.IMakeXmlSource.html","topicUid":"Hi.Common.XmlUtils.IMakeXmlSource","type":"Interface"},{"name":"IToXElement","href":"Hi.Common.XmlUtils.IToXElement.html","topicHref":"Hi.Common.XmlUtils.IToXElement.html","topicUid":"Hi.Common.XmlUtils.IToXElement","type":"Interface"},{"name":"SetFileDelegate","href":"Hi.Common.XmlUtils.SetFileDelegate.html","topicHref":"Hi.Common.XmlUtils.SetFileDelegate.html","topicUid":"Hi.Common.XmlUtils.SetFileDelegate","type":"Delegate"},{"name":"XFactory","href":"Hi.Common.XmlUtils.XFactory.html","topicHref":"Hi.Common.XmlUtils.XFactory.html","topicUid":"Hi.Common.XmlUtils.XFactory","type":"Class"},{"name":"XFactory.GenByXElementDelegate","href":"Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html","topicHref":"Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html","topicUid":"Hi.Common.XmlUtils.XFactory.GenByXElementDelegate","type":"Delegate"},{"name":"XFactory.XmlExceptionDelegate","href":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html","topicHref":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html","topicUid":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate","type":"Delegate"},{"name":"XmlSourceAndFile","href":"Hi.Common.XmlUtils.XmlSourceAndFile-1.html","topicHref":"Hi.Common.XmlUtils.XmlSourceAndFile-1.html","topicUid":"Hi.Common.XmlUtils.XmlSourceAndFile`1","type":"Class"},{"name":"XmlUtil","href":"Hi.Common.XmlUtils.XmlUtil.html","topicHref":"Hi.Common.XmlUtils.XmlUtil.html","topicUid":"Hi.Common.XmlUtils.XmlUtil","type":"Class"}]},{"name":"Hi.CutterLocations","href":"Hi.CutterLocations.html","topicHref":"Hi.CutterLocations.html","topicUid":"Hi.CutterLocations","type":"Namespace","items":[{"name":"IGetProgramCl","href":"Hi.CutterLocations.IGetProgramCl.html","topicHref":"Hi.CutterLocations.IGetProgramCl.html","topicUid":"Hi.CutterLocations.IGetProgramCl","type":"Interface"},{"name":"SimpleCl","href":"Hi.CutterLocations.SimpleCl.html","topicHref":"Hi.CutterLocations.SimpleCl.html","topicUid":"Hi.CutterLocations.SimpleCl","type":"Class"}]},{"name":"Hi.CutterLocations.ClPath","href":"Hi.CutterLocations.ClPath.html","topicHref":"Hi.CutterLocations.ClPath.html","topicUid":"Hi.CutterLocations.ClPath","type":"Namespace","items":[{"name":"ClCircleArc","href":"Hi.CutterLocations.ClPath.ClCircleArc.html","topicHref":"Hi.CutterLocations.ClPath.ClCircleArc.html","topicUid":"Hi.CutterLocations.ClPath.ClCircleArc","type":"Class"},{"name":"ClLinear","href":"Hi.CutterLocations.ClPath.ClLinear.html","topicHref":"Hi.CutterLocations.ClPath.ClLinear.html","topicUid":"Hi.CutterLocations.ClPath.ClLinear","type":"Class"},{"name":"IClPath","href":"Hi.CutterLocations.ClPath.IClPath.html","topicHref":"Hi.CutterLocations.ClPath.IClPath.html","topicUid":"Hi.CutterLocations.ClPath.IClPath","type":"Interface"}]},{"name":"Hi.CutterLocations.ClStrips","href":"Hi.CutterLocations.ClStrips.html","topicHref":"Hi.CutterLocations.ClStrips.html","topicUid":"Hi.CutterLocations.ClStrips","type":"Namespace","items":[{"name":"ClStrip","href":"Hi.CutterLocations.ClStrips.ClStrip.html","topicHref":"Hi.CutterLocations.ClStrips.ClStrip.html","topicUid":"Hi.CutterLocations.ClStrips.ClStrip","type":"Class"},{"name":"ClStripPos","href":"Hi.CutterLocations.ClStrips.ClStripPos.html","topicHref":"Hi.CutterLocations.ClStrips.ClStripPos.html","topicUid":"Hi.CutterLocations.ClStrips.ClStripPos","type":"Class"},{"name":"RgbFunc","href":"Hi.CutterLocations.ClStrips.RgbFunc.html","topicHref":"Hi.CutterLocations.ClStrips.RgbFunc.html","topicUid":"Hi.CutterLocations.ClStrips.RgbFunc","type":"Delegate"}]},{"name":"Hi.Disp","href":"Hi.Disp.html","topicHref":"Hi.Disp.html","topicUid":"Hi.Disp","type":"Namespace","items":[{"name":"Bind","href":"Hi.Disp.Bind.html","topicHref":"Hi.Disp.Bind.html","topicUid":"Hi.Disp.Bind","type":"Class"},{"name":"Box3dDispUtil","href":"Hi.Disp.Box3dDispUtil.html","topicHref":"Hi.Disp.Box3dDispUtil.html","topicUid":"Hi.Disp.Box3dDispUtil","type":"Class"},{"name":"Box3dDispUtil.BoxableExpandToBox3dDel","href":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel.html","topicHref":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel.html","topicUid":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel","type":"Delegate"},{"name":"DelegateFuncDisplayee","href":"Hi.Disp.DelegateFuncDisplayee.html","topicHref":"Hi.Disp.DelegateFuncDisplayee.html","topicUid":"Hi.Disp.DelegateFuncDisplayee","type":"Class"},{"name":"DispEngine","href":"Hi.Disp.DispEngine.html","topicHref":"Hi.Disp.DispEngine.html","topicUid":"Hi.Disp.DispEngine","type":"Class"},{"name":"DispEngine.ImageRequestedDelegate","href":"Hi.Disp.DispEngine.ImageRequestedDelegate.html","topicHref":"Hi.Disp.DispEngine.ImageRequestedDelegate.html","topicUid":"Hi.Disp.DispEngine.ImageRequestedDelegate","type":"Delegate"},{"name":"DispEngineConfig","href":"Hi.Disp.DispEngineConfig.html","topicHref":"Hi.Disp.DispEngineConfig.html","topicUid":"Hi.Disp.DispEngineConfig","type":"Class"},{"name":"DispFrameUtil","href":"Hi.Disp.DispFrameUtil.html","topicHref":"Hi.Disp.DispFrameUtil.html","topicUid":"Hi.Disp.DispFrameUtil","type":"Class"},{"name":"DispList","href":"Hi.Disp.DispList.html","topicHref":"Hi.Disp.DispList.html","topicUid":"Hi.Disp.DispList","type":"Class"},{"name":"DispUtil","href":"Hi.Disp.DispUtil.html","topicHref":"Hi.Disp.DispUtil.html","topicUid":"Hi.Disp.DispUtil","type":"Class"},{"name":"Drawing","href":"Hi.Disp.Drawing.html","topicHref":"Hi.Disp.Drawing.html","topicUid":"Hi.Disp.Drawing","type":"Class"},{"name":"FuncDisplayee","href":"Hi.Disp.FuncDisplayee.html","topicHref":"Hi.Disp.FuncDisplayee.html","topicUid":"Hi.Disp.FuncDisplayee","type":"Class"},{"name":"GL","href":"Hi.Disp.GL.html","topicHref":"Hi.Disp.GL.html","topicUid":"Hi.Disp.GL","type":"Class"},{"name":"IDisplayee","href":"Hi.Disp.IDisplayee.html","topicHref":"Hi.Disp.IDisplayee.html","topicUid":"Hi.Disp.IDisplayee","type":"Interface"},{"name":"IGetDispEngine","href":"Hi.Disp.IGetDispEngine.html","topicHref":"Hi.Disp.IGetDispEngine.html","topicUid":"Hi.Disp.IGetDispEngine","type":"Interface"},{"name":"IGetPickable","href":"Hi.Disp.IGetPickable.html","topicHref":"Hi.Disp.IGetPickable.html","topicUid":"Hi.Disp.IGetPickable","type":"Interface"},{"name":"IGlContextDirver","href":"Hi.Disp.IGlContextDirver.html","topicHref":"Hi.Disp.IGlContextDirver.html","topicUid":"Hi.Disp.IGlContextDirver","type":"Interface"},{"name":"MatStack","href":"Hi.Disp.MatStack.html","topicHref":"Hi.Disp.MatStack.html","topicUid":"Hi.Disp.MatStack","type":"Class"},{"name":"MatStack.ItemDisposable","href":"Hi.Disp.MatStack.ItemDisposable.html","topicHref":"Hi.Disp.MatStack.ItemDisposable.html","topicUid":"Hi.Disp.MatStack.ItemDisposable","type":"Class"},{"name":"MvpBoxRelation","href":"Hi.Disp.MvpBoxRelation.html","topicHref":"Hi.Disp.MvpBoxRelation.html","topicUid":"Hi.Disp.MvpBoxRelation","type":"Enum"},{"name":"Pickable","href":"Hi.Disp.Pickable.html","topicHref":"Hi.Disp.Pickable.html","topicUid":"Hi.Disp.Pickable","type":"Class"},{"name":"PopModelMat","href":"Hi.Disp.PopModelMat.html","topicHref":"Hi.Disp.PopModelMat.html","topicUid":"Hi.Disp.PopModelMat","type":"Class"},{"name":"PushModelMat","href":"Hi.Disp.PushModelMat.html","topicHref":"Hi.Disp.PushModelMat.html","topicUid":"Hi.Disp.PushModelMat","type":"Class"},{"name":"Segment3dDispUtil","href":"Hi.Disp.Segment3dDispUtil.html","topicHref":"Hi.Disp.Segment3dDispUtil.html","topicUid":"Hi.Disp.Segment3dDispUtil","type":"Class"},{"name":"ShowEventPickable","href":"Hi.Disp.ShowEventPickable.html","topicHref":"Hi.Disp.ShowEventPickable.html","topicUid":"Hi.Disp.ShowEventPickable","type":"Class"},{"name":"Stamp","href":"Hi.Disp.Stamp.html","topicHref":"Hi.Disp.Stamp.html","topicUid":"Hi.Disp.Stamp","type":"Enum"},{"name":"StringDrawing","href":"Hi.Disp.StringDrawing.html","topicHref":"Hi.Disp.StringDrawing.html","topicUid":"Hi.Disp.StringDrawing","type":"Class"},{"name":"Tri3dDispUtil","href":"Hi.Disp.Tri3dDispUtil.html","topicHref":"Hi.Disp.Tri3dDispUtil.html","topicUid":"Hi.Disp.Tri3dDispUtil","type":"Class"},{"name":"WrappedDisplayee","href":"Hi.Disp.WrappedDisplayee.html","topicHref":"Hi.Disp.WrappedDisplayee.html","topicUid":"Hi.Disp.WrappedDisplayee","type":"Class"}]},{"name":"Hi.Disp.Flag","href":"Hi.Disp.Flag.html","topicHref":"Hi.Disp.Flag.html","topicUid":"Hi.Disp.Flag","type":"Namespace","items":[{"name":"ColorScaleBar","href":"Hi.Disp.Flag.ColorScaleBar.html","topicHref":"Hi.Disp.Flag.ColorScaleBar.html","topicUid":"Hi.Disp.Flag.ColorScaleBar","type":"Class"},{"name":"CoordinateDrawing","href":"Hi.Disp.Flag.CoordinateDrawing.html","topicHref":"Hi.Disp.Flag.CoordinateDrawing.html","topicUid":"Hi.Disp.Flag.CoordinateDrawing","type":"Class"},{"name":"CubicalFlagDrawing","href":"Hi.Disp.Flag.CubicalFlagDrawing.html","topicHref":"Hi.Disp.Flag.CubicalFlagDrawing.html","topicUid":"Hi.Disp.Flag.CubicalFlagDrawing","type":"Class"},{"name":"DimensionBar","href":"Hi.Disp.Flag.DimensionBar.html","topicHref":"Hi.Disp.Flag.DimensionBar.html","topicUid":"Hi.Disp.Flag.DimensionBar","type":"Class"},{"name":"DispCoverUtil","href":"Hi.Disp.Flag.DispCoverUtil.html","topicHref":"Hi.Disp.Flag.DispCoverUtil.html","topicUid":"Hi.Disp.Flag.DispCoverUtil","type":"Class"}]},{"name":"Hi.Disp.Treat","href":"Hi.Disp.Treat.html","topicHref":"Hi.Disp.Treat.html","topicUid":"Hi.Disp.Treat","type":"Namespace","items":[{"name":"LineWidthSwap","href":"Hi.Disp.Treat.LineWidthSwap.html","topicHref":"Hi.Disp.Treat.LineWidthSwap.html","topicUid":"Hi.Disp.Treat.LineWidthSwap","type":"Class"},{"name":"LineWidthTreat","href":"Hi.Disp.Treat.LineWidthTreat.html","topicHref":"Hi.Disp.Treat.LineWidthTreat.html","topicUid":"Hi.Disp.Treat.LineWidthTreat","type":"Class"},{"name":"PointSizeSwap","href":"Hi.Disp.Treat.PointSizeSwap.html","topicHref":"Hi.Disp.Treat.PointSizeSwap.html","topicUid":"Hi.Disp.Treat.PointSizeSwap","type":"Class"},{"name":"PointSizeTreat","href":"Hi.Disp.Treat.PointSizeTreat.html","topicHref":"Hi.Disp.Treat.PointSizeTreat.html","topicUid":"Hi.Disp.Treat.PointSizeTreat","type":"Class"},{"name":"RgbSwap","href":"Hi.Disp.Treat.RgbSwap.html","topicHref":"Hi.Disp.Treat.RgbSwap.html","topicUid":"Hi.Disp.Treat.RgbSwap","type":"Class"},{"name":"RgbTreat","href":"Hi.Disp.Treat.RgbTreat.html","topicHref":"Hi.Disp.Treat.RgbTreat.html","topicUid":"Hi.Disp.Treat.RgbTreat","type":"Class"},{"name":"RgbWrapper","href":"Hi.Disp.Treat.RgbWrapper.html","topicHref":"Hi.Disp.Treat.RgbWrapper.html","topicUid":"Hi.Disp.Treat.RgbWrapper","type":"Class"},{"name":"TransformationWrapper","href":"Hi.Disp.Treat.TransformationWrapper.html","topicHref":"Hi.Disp.Treat.TransformationWrapper.html","topicUid":"Hi.Disp.Treat.TransformationWrapper","type":"Class"}]},{"name":"Hi.Fanuc","href":"Hi.Fanuc.html","topicHref":"Hi.Fanuc.html","topicUid":"Hi.Fanuc","type":"Namespace","items":[{"name":"FanucVarTable","href":"Hi.Fanuc.FanucVarTable.html","topicHref":"Hi.Fanuc.FanucVarTable.html","topicUid":"Hi.Fanuc.FanucVarTable","type":"Class"},{"name":"FanucVarValue","href":"Hi.Fanuc.FanucVarValue.html","topicHref":"Hi.Fanuc.FanucVarValue.html","topicUid":"Hi.Fanuc.FanucVarValue","type":"Struct"}]},{"name":"Hi.Geom","href":"Hi.Geom.html","topicHref":"Hi.Geom.html","topicUid":"Hi.Geom","type":"Namespace","items":[{"name":"ArrayUtil","href":"Hi.Geom.ArrayUtil.html","topicHref":"Hi.Geom.ArrayUtil.html","topicUid":"Hi.Geom.ArrayUtil","type":"Class"},{"name":"AxisAngle4d","href":"Hi.Geom.AxisAngle4d.html","topicHref":"Hi.Geom.AxisAngle4d.html","topicUid":"Hi.Geom.AxisAngle4d","type":"Class"},{"name":"Box2d","href":"Hi.Geom.Box2d.html","topicHref":"Hi.Geom.Box2d.html","topicUid":"Hi.Geom.Box2d","type":"Class"},{"name":"Box2d.NoInit","href":"Hi.Geom.Box2d.NoInit.html","topicHref":"Hi.Geom.Box2d.NoInit.html","topicUid":"Hi.Geom.Box2d.NoInit","type":"Class"},{"name":"Box3d","href":"Hi.Geom.Box3d.html","topicHref":"Hi.Geom.Box3d.html","topicUid":"Hi.Geom.Box3d","type":"Class"},{"name":"Box3d.NoInit","href":"Hi.Geom.Box3d.NoInit.html","topicHref":"Hi.Geom.Box3d.NoInit.html","topicUid":"Hi.Geom.Box3d.NoInit","type":"Class"},{"name":"Cylindroid","href":"Hi.Geom.Cylindroid.html","topicHref":"Hi.Geom.Cylindroid.html","topicUid":"Hi.Geom.Cylindroid","type":"Class"},{"name":"DVec3d","href":"Hi.Geom.DVec3d.html","topicHref":"Hi.Geom.DVec3d.html","topicUid":"Hi.Geom.DVec3d","type":"Class"},{"name":"Dir","href":"Hi.Geom.Dir.html","topicHref":"Hi.Geom.Dir.html","topicUid":"Hi.Geom.Dir","type":"Enum"},{"name":"ExtendedCylinder","href":"Hi.Geom.ExtendedCylinder.html","topicHref":"Hi.Geom.ExtendedCylinder.html","topicUid":"Hi.Geom.ExtendedCylinder","type":"Class"},{"name":"Flat3d","href":"Hi.Geom.Flat3d.html","topicHref":"Hi.Geom.Flat3d.html","topicUid":"Hi.Geom.Flat3d","type":"Class"},{"name":"GeomCombination","href":"Hi.Geom.GeomCombination.html","topicHref":"Hi.Geom.GeomCombination.html","topicUid":"Hi.Geom.GeomCombination","type":"Class"},{"name":"GeomUtil","href":"Hi.Geom.GeomUtil.html","topicHref":"Hi.Geom.GeomUtil.html","topicUid":"Hi.Geom.GeomUtil","type":"Class"},{"name":"IExpandToBox2d","href":"Hi.Geom.IExpandToBox2d.html","topicHref":"Hi.Geom.IExpandToBox2d.html","topicUid":"Hi.Geom.IExpandToBox2d","type":"Interface"},{"name":"IExpandToBox3d","href":"Hi.Geom.IExpandToBox3d.html","topicHref":"Hi.Geom.IExpandToBox3d.html","topicUid":"Hi.Geom.IExpandToBox3d","type":"Interface"},{"name":"IFlat3d","href":"Hi.Geom.IFlat3d.html","topicHref":"Hi.Geom.IFlat3d.html","topicUid":"Hi.Geom.IFlat3d","type":"Interface"},{"name":"IGenStl","href":"Hi.Geom.IGenStl.html","topicHref":"Hi.Geom.IGenStl.html","topicUid":"Hi.Geom.IGenStl","type":"Interface"},{"name":"IGeomProperty","href":"Hi.Geom.IGeomProperty.html","topicHref":"Hi.Geom.IGeomProperty.html","topicUid":"Hi.Geom.IGeomProperty","type":"Interface"},{"name":"IGetStl","href":"Hi.Geom.IGetStl.html","topicHref":"Hi.Geom.IGetStl.html","topicUid":"Hi.Geom.IGetStl","type":"Interface"},{"name":"IGetZrContour","href":"Hi.Geom.IGetZrContour.html","topicHref":"Hi.Geom.IGetZrContour.html","topicUid":"Hi.Geom.IGetZrContour","type":"Interface"},{"name":"IGetZrList","href":"Hi.Geom.IGetZrList.html","topicHref":"Hi.Geom.IGetZrList.html","topicUid":"Hi.Geom.IGetZrList","type":"Interface"},{"name":"IStlSource","href":"Hi.Geom.IStlSource.html","topicHref":"Hi.Geom.IStlSource.html","topicUid":"Hi.Geom.IStlSource","type":"Interface"},{"name":"ITri3d","href":"Hi.Geom.ITri3d.html","topicHref":"Hi.Geom.ITri3d.html","topicUid":"Hi.Geom.ITri3d","type":"Interface"},{"name":"IVec","href":"Hi.Geom.IVec-1.html","topicHref":"Hi.Geom.IVec-1.html","topicUid":"Hi.Geom.IVec`1","type":"Interface"},{"name":"IZrListSourceProperty","href":"Hi.Geom.IZrListSourceProperty.html","topicHref":"Hi.Geom.IZrListSourceProperty.html","topicUid":"Hi.Geom.IZrListSourceProperty","type":"Interface"},{"name":"Mat4d","href":"Hi.Geom.Mat4d.html","topicHref":"Hi.Geom.Mat4d.html","topicUid":"Hi.Geom.Mat4d","type":"Class"},{"name":"Mat4d.IndexFlag","href":"Hi.Geom.Mat4d.IndexFlag.html","topicHref":"Hi.Geom.Mat4d.IndexFlag.html","topicUid":"Hi.Geom.Mat4d.IndexFlag","type":"Enum"},{"name":"MathNetUtil","href":"Hi.Geom.MathNetUtil.html","topicHref":"Hi.Geom.MathNetUtil.html","topicUid":"Hi.Geom.MathNetUtil","type":"Class"},{"name":"MathUtil","href":"Hi.Geom.MathUtil.html","topicHref":"Hi.Geom.MathUtil.html","topicUid":"Hi.Geom.MathUtil","type":"Class"},{"name":"NativeStl","href":"Hi.Geom.NativeStl.html","topicHref":"Hi.Geom.NativeStl.html","topicUid":"Hi.Geom.NativeStl","type":"Class"},{"name":"NativeTopoStld","href":"Hi.Geom.NativeTopoStld.html","topicHref":"Hi.Geom.NativeTopoStld.html","topicUid":"Hi.Geom.NativeTopoStld","type":"Class"},{"name":"NativeTopoStlfr","href":"Hi.Geom.NativeTopoStlfr.html","topicHref":"Hi.Geom.NativeTopoStlfr.html","topicUid":"Hi.Geom.NativeTopoStlfr","type":"Class"},{"name":"PairZr","href":"Hi.Geom.PairZr.html","topicHref":"Hi.Geom.PairZr.html","topicUid":"Hi.Geom.PairZr","type":"Class"},{"name":"PairZrUtil","href":"Hi.Geom.PairZrUtil.html","topicHref":"Hi.Geom.PairZrUtil.html","topicUid":"Hi.Geom.PairZrUtil","type":"Class"},{"name":"Polar3d","href":"Hi.Geom.Polar3d.html","topicHref":"Hi.Geom.Polar3d.html","topicUid":"Hi.Geom.Polar3d","type":"Class"},{"name":"Segment3d","href":"Hi.Geom.Segment3d.html","topicHref":"Hi.Geom.Segment3d.html","topicUid":"Hi.Geom.Segment3d","type":"Class"},{"name":"Stl","href":"Hi.Geom.Stl.html","topicHref":"Hi.Geom.Stl.html","topicUid":"Hi.Geom.Stl","type":"Class"},{"name":"Stl.StlType","href":"Hi.Geom.Stl.StlType.html","topicHref":"Hi.Geom.Stl.StlType.html","topicUid":"Hi.Geom.Stl.StlType","type":"Enum"},{"name":"StlFile","href":"Hi.Geom.StlFile.html","topicHref":"Hi.Geom.StlFile.html","topicUid":"Hi.Geom.StlFile","type":"Class"},{"name":"StlFuncHost","href":"Hi.Geom.StlFuncHost.html","topicHref":"Hi.Geom.StlFuncHost.html","topicUid":"Hi.Geom.StlFuncHost","type":"Class"},{"name":"StlUtil","href":"Hi.Geom.StlUtil.html","topicHref":"Hi.Geom.StlUtil.html","topicUid":"Hi.Geom.StlUtil","type":"Class"},{"name":"TransformationGeom","href":"Hi.Geom.TransformationGeom.html","topicHref":"Hi.Geom.TransformationGeom.html","topicUid":"Hi.Geom.TransformationGeom","type":"Class"},{"name":"Tri3d","href":"Hi.Geom.Tri3d.html","topicHref":"Hi.Geom.Tri3d.html","topicUid":"Hi.Geom.Tri3d","type":"Class"},{"name":"Tri3dUtil","href":"Hi.Geom.Tri3dUtil.html","topicHref":"Hi.Geom.Tri3dUtil.html","topicUid":"Hi.Geom.Tri3dUtil","type":"Class"},{"name":"UnnullableDVec3d","href":"Hi.Geom.UnnullableDVec3d.html","topicHref":"Hi.Geom.UnnullableDVec3d.html","topicUid":"Hi.Geom.UnnullableDVec3d","type":"Class"},{"name":"Vec2d","href":"Hi.Geom.Vec2d.html","topicHref":"Hi.Geom.Vec2d.html","topicUid":"Hi.Geom.Vec2d","type":"Class"},{"name":"Vec2i","href":"Hi.Geom.Vec2i.html","topicHref":"Hi.Geom.Vec2i.html","topicUid":"Hi.Geom.Vec2i","type":"Class"},{"name":"Vec3d","href":"Hi.Geom.Vec3d.html","topicHref":"Hi.Geom.Vec3d.html","topicUid":"Hi.Geom.Vec3d","type":"Class"},{"name":"Vec3dUtil","href":"Hi.Geom.Vec3dUtil.html","topicHref":"Hi.Geom.Vec3dUtil.html","topicUid":"Hi.Geom.Vec3dUtil","type":"Class"}]},{"name":"Hi.Geom.Resolution","href":"Hi.Geom.Resolution.html","topicHref":"Hi.Geom.Resolution.html","topicUid":"Hi.Geom.Resolution","type":"Namespace","items":[{"name":"IPolarResolution2d","href":"Hi.Geom.Resolution.IPolarResolution2d.html","topicHref":"Hi.Geom.Resolution.IPolarResolution2d.html","topicUid":"Hi.Geom.Resolution.IPolarResolution2d","type":"Interface"},{"name":"IPolarResolution2dSourceProperty","href":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html","topicHref":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html","topicUid":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty","type":"Interface"},{"name":"PolarResolution2d","href":"Hi.Geom.Resolution.PolarResolution2d.html","topicHref":"Hi.Geom.Resolution.PolarResolution2d.html","topicUid":"Hi.Geom.Resolution.PolarResolution2d","type":"Class"}]},{"name":"Hi.Geom.Solvers","href":"Hi.Geom.Solvers.html","topicHref":"Hi.Geom.Solvers.html","topicUid":"Hi.Geom.Solvers","type":"Namespace","items":[{"name":"BinarySolverUtil","href":"Hi.Geom.Solvers.BinarySolverUtil.html","topicHref":"Hi.Geom.Solvers.BinarySolverUtil.html","topicUid":"Hi.Geom.Solvers.BinarySolverUtil","type":"Class"},{"name":"BinarySolvingEntry","href":"Hi.Geom.Solvers.BinarySolvingEntry.html","topicHref":"Hi.Geom.Solvers.BinarySolvingEntry.html","topicUid":"Hi.Geom.Solvers.BinarySolvingEntry","type":"Class"},{"name":"DeepSolvingStatus","href":"Hi.Geom.Solvers.DeepSolvingStatus.html","topicHref":"Hi.Geom.Solvers.DeepSolvingStatus.html","topicUid":"Hi.Geom.Solvers.DeepSolvingStatus","type":"Class"},{"name":"NumericalSolver","href":"Hi.Geom.Solvers.NumericalSolver.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.html","topicUid":"Hi.Geom.Solvers.NumericalSolver","type":"Class"},{"name":"NumericalSolver.GetRepondsDelegate","href":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate.html","topicUid":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate","type":"Delegate"},{"name":"NumericalSolver.SetParasDelegate","href":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate.html","topicUid":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate","type":"Delegate"},{"name":"SolverUtil","href":"Hi.Geom.Solvers.SolverUtil.html","topicHref":"Hi.Geom.Solvers.SolverUtil.html","topicUid":"Hi.Geom.Solvers.SolverUtil","type":"Class"},{"name":"SolvingResult","href":"Hi.Geom.Solvers.SolvingResult.html","topicHref":"Hi.Geom.Solvers.SolvingResult.html","topicUid":"Hi.Geom.Solvers.SolvingResult","type":"Class"},{"name":"SolvingStatus","href":"Hi.Geom.Solvers.SolvingStatus.html","topicHref":"Hi.Geom.Solvers.SolvingStatus.html","topicUid":"Hi.Geom.Solvers.SolvingStatus","type":"Enum"},{"name":"SolvingTerm","href":"Hi.Geom.Solvers.SolvingTerm.html","topicHref":"Hi.Geom.Solvers.SolvingTerm.html","topicUid":"Hi.Geom.Solvers.SolvingTerm","type":"Enum"}]},{"name":"Hi.Geom.UnitUtils","href":"Hi.Geom.UnitUtils.html","topicHref":"Hi.Geom.UnitUtils.html","topicUid":"Hi.Geom.UnitUtils","type":"Namespace","items":[{"name":"PhysicsUnit","href":"Hi.Geom.UnitUtils.PhysicsUnit.html","topicHref":"Hi.Geom.UnitUtils.PhysicsUnit.html","topicUid":"Hi.Geom.UnitUtils.PhysicsUnit","type":"Enum"},{"name":"StringValueAttribute","href":"Hi.Geom.UnitUtils.StringValueAttribute.html","topicHref":"Hi.Geom.UnitUtils.StringValueAttribute.html","topicUid":"Hi.Geom.UnitUtils.StringValueAttribute","type":"Class"},{"name":"UnitConvertUtil","href":"Hi.Geom.UnitUtils.UnitConvertUtil.html","topicHref":"Hi.Geom.UnitUtils.UnitConvertUtil.html","topicUid":"Hi.Geom.UnitUtils.UnitConvertUtil","type":"Class"}]},{"name":"Hi.Grpcs","href":"Hi.Grpcs.html","topicHref":"Hi.Grpcs.html","topicUid":"Hi.Grpcs","type":"Namespace","items":[{"name":"ClStripService","href":"Hi.Grpcs.ClStripService.html","topicHref":"Hi.Grpcs.ClStripService.html","topicUid":"Hi.Grpcs.ClStripService","type":"Class"},{"name":"ClStripService.ClStripServiceBase","href":"Hi.Grpcs.ClStripService.ClStripServiceBase.html","topicHref":"Hi.Grpcs.ClStripService.ClStripServiceBase.html","topicUid":"Hi.Grpcs.ClStripService.ClStripServiceBase","type":"Class"},{"name":"ClStripService.ClStripServiceClient","href":"Hi.Grpcs.ClStripService.ClStripServiceClient.html","topicHref":"Hi.Grpcs.ClStripService.ClStripServiceClient.html","topicUid":"Hi.Grpcs.ClStripService.ClStripServiceClient","type":"Class"},{"name":"ClStripServiceReflection","href":"Hi.Grpcs.ClStripServiceReflection.html","topicHref":"Hi.Grpcs.ClStripServiceReflection.html","topicUid":"Hi.Grpcs.ClStripServiceReflection","type":"Class"},{"name":"ClStripServiceRunner","href":"Hi.Grpcs.ClStripServiceRunner.html","topicHref":"Hi.Grpcs.ClStripServiceRunner.html","topicUid":"Hi.Grpcs.ClStripServiceRunner","type":"Class"},{"name":"DictionaryStep","href":"Hi.Grpcs.DictionaryStep.html","topicHref":"Hi.Grpcs.DictionaryStep.html","topicUid":"Hi.Grpcs.DictionaryStep","type":"Class"},{"name":"PlayerService","href":"Hi.Grpcs.PlayerService.html","topicHref":"Hi.Grpcs.PlayerService.html","topicUid":"Hi.Grpcs.PlayerService","type":"Class"},{"name":"PlayerService.PlayerServiceBase","href":"Hi.Grpcs.PlayerService.PlayerServiceBase.html","topicHref":"Hi.Grpcs.PlayerService.PlayerServiceBase.html","topicUid":"Hi.Grpcs.PlayerService.PlayerServiceBase","type":"Class"},{"name":"PlayerService.PlayerServiceClient","href":"Hi.Grpcs.PlayerService.PlayerServiceClient.html","topicHref":"Hi.Grpcs.PlayerService.PlayerServiceClient.html","topicUid":"Hi.Grpcs.PlayerService.PlayerServiceClient","type":"Class"},{"name":"PlayerServiceReflection","href":"Hi.Grpcs.PlayerServiceReflection.html","topicHref":"Hi.Grpcs.PlayerServiceReflection.html","topicUid":"Hi.Grpcs.PlayerServiceReflection","type":"Class"},{"name":"PlayerServiceRunner","href":"Hi.Grpcs.PlayerServiceRunner.html","topicHref":"Hi.Grpcs.PlayerServiceRunner.html","topicUid":"Hi.Grpcs.PlayerServiceRunner","type":"Class"}]},{"name":"Hi.HiNcKits","href":"Hi.HiNcKits.html","topicHref":"Hi.HiNcKits.html","topicUid":"Hi.HiNcKits","type":"Namespace","items":[{"name":"BasePathEnum","href":"Hi.HiNcKits.BasePathEnum.html","topicHref":"Hi.HiNcKits.BasePathEnum.html","topicUid":"Hi.HiNcKits.BasePathEnum","type":"Enum"},{"name":"HiNcHost","href":"Hi.HiNcKits.HiNcHost.html","topicHref":"Hi.HiNcKits.HiNcHost.html","topicUid":"Hi.HiNcKits.HiNcHost","type":"Class"},{"name":"LocalApp","href":"Hi.HiNcKits.LocalApp.html","topicHref":"Hi.HiNcKits.LocalApp.html","topicUid":"Hi.HiNcKits.LocalApp","type":"Class"},{"name":"LocalAppConfig","href":"Hi.HiNcKits.LocalAppConfig.html","topicHref":"Hi.HiNcKits.LocalAppConfig.html","topicUid":"Hi.HiNcKits.LocalAppConfig","type":"Class"},{"name":"ProxyConfig","href":"Hi.HiNcKits.ProxyConfig.html","topicHref":"Hi.HiNcKits.ProxyConfig.html","topicUid":"Hi.HiNcKits.ProxyConfig","type":"Class"},{"name":"UserConfig","href":"Hi.HiNcKits.UserConfig.html","topicHref":"Hi.HiNcKits.UserConfig.html","topicUid":"Hi.HiNcKits.UserConfig","type":"Class"},{"name":"UserService","href":"Hi.HiNcKits.UserService.html","topicHref":"Hi.HiNcKits.UserService.html","topicUid":"Hi.HiNcKits.UserService","type":"Class"}]},{"name":"Hi.Licenses","href":"Hi.Licenses.html","topicHref":"Hi.Licenses.html","topicUid":"Hi.Licenses","type":"Namespace","items":[{"name":"AuthFeature","href":"Hi.Licenses.AuthFeature.html","topicHref":"Hi.Licenses.AuthFeature.html","topicUid":"Hi.Licenses.AuthFeature","type":"Enum"},{"name":"AuthorizationFailedEventArgs","href":"Hi.Licenses.AuthorizationFailedEventArgs.html","topicHref":"Hi.Licenses.AuthorizationFailedEventArgs.html","topicUid":"Hi.Licenses.AuthorizationFailedEventArgs","type":"Class"},{"name":"BlockType","href":"Hi.Licenses.BlockType.html","topicHref":"Hi.Licenses.BlockType.html","topicUid":"Hi.Licenses.BlockType","type":"Enum"},{"name":"License","href":"Hi.Licenses.License.html","topicHref":"Hi.Licenses.License.html","topicUid":"Hi.Licenses.License","type":"Class"},{"name":"LicenseType","href":"Hi.Licenses.LicenseType.html","topicHref":"Hi.Licenses.LicenseType.html","topicUid":"Hi.Licenses.LicenseType","type":"Enum"}]},{"name":"Hi.Machining","href":"Hi.Machining.html","topicHref":"Hi.Machining.html","topicUid":"Hi.Machining","type":"Namespace","items":[{"name":"FreeformRemover","href":"Hi.Machining.FreeformRemover.html","topicHref":"Hi.Machining.FreeformRemover.html","topicUid":"Hi.Machining.FreeformRemover","type":"Class"},{"name":"ICutter","href":"Hi.Machining.ICutter.html","topicHref":"Hi.Machining.ICutter.html","topicUid":"Hi.Machining.ICutter","type":"Interface"},{"name":"ICutterAnchorable","href":"Hi.Machining.ICutterAnchorable.html","topicHref":"Hi.Machining.ICutterAnchorable.html","topicUid":"Hi.Machining.ICutterAnchorable","type":"Interface"},{"name":"IGetSweptable","href":"Hi.Machining.IGetSweptable.html","topicHref":"Hi.Machining.IGetSweptable.html","topicUid":"Hi.Machining.IGetSweptable","type":"Interface"},{"name":"IMachiningTool","href":"Hi.Machining.IMachiningTool.html","topicHref":"Hi.Machining.IMachiningTool.html","topicUid":"Hi.Machining.IMachiningTool","type":"Interface"},{"name":"IVolumeRemover","href":"Hi.Machining.IVolumeRemover.html","topicHref":"Hi.Machining.IVolumeRemover.html","topicUid":"Hi.Machining.IVolumeRemover","type":"Interface"},{"name":"MachiningToolHouse","href":"Hi.Machining.MachiningToolHouse.html","topicHref":"Hi.Machining.MachiningToolHouse.html","topicUid":"Hi.Machining.MachiningToolHouse","type":"Class"},{"name":"MachiningVolumeRemovalProc","href":"Hi.Machining.MachiningVolumeRemovalProc.html","topicHref":"Hi.Machining.MachiningVolumeRemovalProc.html","topicUid":"Hi.Machining.MachiningVolumeRemovalProc","type":"Class"},{"name":"MachiningVolumeRemovalProc.StepMotionSnapshot","href":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html","topicHref":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html","topicUid":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot","type":"Class"},{"name":"MatInterpolationKit","href":"Hi.Machining.MatInterpolationKit.html","topicHref":"Hi.Machining.MatInterpolationKit.html","topicUid":"Hi.Machining.MatInterpolationKit","type":"Class"},{"name":"MatRelation","href":"Hi.Machining.MatRelation.html","topicHref":"Hi.Machining.MatRelation.html","topicUid":"Hi.Machining.MatRelation","type":"Enum"},{"name":"MatRelationUtil","href":"Hi.Machining.MatRelationUtil.html","topicHref":"Hi.Machining.MatRelationUtil.html","topicUid":"Hi.Machining.MatRelationUtil","type":"Class"},{"name":"MotionUtil","href":"Hi.Machining.MotionUtil.html","topicHref":"Hi.Machining.MotionUtil.html","topicUid":"Hi.Machining.MotionUtil","type":"Class"},{"name":"Sweptable","href":"Hi.Machining.Sweptable.html","topicHref":"Hi.Machining.Sweptable.html","topicUid":"Hi.Machining.Sweptable","type":"Class"},{"name":"SweptableUtil","href":"Hi.Machining.SweptableUtil.html","topicHref":"Hi.Machining.SweptableUtil.html","topicUid":"Hi.Machining.SweptableUtil","type":"Class"},{"name":"ToolNotFoundException","href":"Hi.Machining.ToolNotFoundException.html","topicHref":"Hi.Machining.ToolNotFoundException.html","topicUid":"Hi.Machining.ToolNotFoundException","type":"Class"}]},{"name":"Hi.Machining.MachiningEquipmentUtils","href":"Hi.Machining.MachiningEquipmentUtils.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.html","topicUid":"Hi.Machining.MachiningEquipmentUtils","type":"Namespace","items":[{"name":"CollidableComponentEnum","href":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum","type":"Enum"},{"name":"IGetMachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment","type":"Interface"},{"name":"IMachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment","type":"Interface"},{"name":"MachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment","type":"Class"},{"name":"MachiningEquipmentCollisionIndex","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex","type":"Class"},{"name":"MachiningEquipmentCollisionIndexPairsSource","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource","type":"Class"},{"name":"MachiningEquipmentUtil","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil","type":"Class"}]},{"name":"Hi.MachiningProcs","href":"Hi.MachiningProcs.html","topicHref":"Hi.MachiningProcs.html","topicUid":"Hi.MachiningProcs","type":"Namespace","items":[{"name":"ConfigStepFunc","href":"Hi.MachiningProcs.ConfigStepFunc.html","topicHref":"Hi.MachiningProcs.ConfigStepFunc.html","topicUid":"Hi.MachiningProcs.ConfigStepFunc","type":"Delegate"},{"name":"DynamicMachiningProjectDisplayee0","href":"Hi.MachiningProcs.DynamicMachiningProjectDisplayee0.html","topicHref":"Hi.MachiningProcs.DynamicMachiningProjectDisplayee0.html","topicUid":"Hi.MachiningProcs.DynamicMachiningProjectDisplayee0","type":"Class"},{"name":"IMachiningProjectGetter","href":"Hi.MachiningProcs.IMachiningProjectGetter.html","topicHref":"Hi.MachiningProcs.IMachiningProjectGetter.html","topicUid":"Hi.MachiningProcs.IMachiningProjectGetter","type":"Interface"},{"name":"IProjectService","href":"Hi.MachiningProcs.IProjectService.html","topicHref":"Hi.MachiningProcs.IProjectService.html","topicUid":"Hi.MachiningProcs.IProjectService","type":"Interface"},{"name":"LocalProjectService","href":"Hi.MachiningProcs.LocalProjectService.html","topicHref":"Hi.MachiningProcs.LocalProjectService.html","topicUid":"Hi.MachiningProcs.LocalProjectService","type":"Class"},{"name":"LocalProjectService.MachiningProjectChangedDelegate","href":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate.html","topicHref":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate.html","topicUid":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate","type":"Delegate"},{"name":"MachiningActRunner","href":"Hi.MachiningProcs.MachiningActRunner.html","topicHref":"Hi.MachiningProcs.MachiningActRunner.html","topicUid":"Hi.MachiningProcs.MachiningActRunner","type":"Class"},{"name":"MachiningActRunner.MachiningStepBuiltDelegate","href":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html","topicHref":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html","topicUid":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate","type":"Delegate"},{"name":"MachiningActRunnerConfig","href":"Hi.MachiningProcs.MachiningActRunnerConfig.html","topicHref":"Hi.MachiningProcs.MachiningActRunnerConfig.html","topicUid":"Hi.MachiningProcs.MachiningActRunnerConfig","type":"Class"},{"name":"MachiningParallelProc","href":"Hi.MachiningProcs.MachiningParallelProc.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc","type":"Class"},{"name":"MachiningParallelProc.StepTaskBundle","href":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle","type":"Class"},{"name":"MachiningParallelProc.SubstractionResult","href":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult","type":"Class"},{"name":"MachiningProject","href":"Hi.MachiningProcs.MachiningProject.html","topicHref":"Hi.MachiningProcs.MachiningProject.html","topicUid":"Hi.MachiningProcs.MachiningProject","type":"Class"},{"name":"MachiningProjectDisplayee","href":"Hi.MachiningProcs.MachiningProjectDisplayee.html","topicHref":"Hi.MachiningProcs.MachiningProjectDisplayee.html","topicUid":"Hi.MachiningProcs.MachiningProjectDisplayee","type":"Class"},{"name":"MachiningSession","href":"Hi.MachiningProcs.MachiningSession.html","topicHref":"Hi.MachiningProcs.MachiningSession.html","topicUid":"Hi.MachiningProcs.MachiningSession","type":"Class"},{"name":"MillingUtil","href":"Hi.MachiningProcs.MillingUtil.html","topicHref":"Hi.MachiningProcs.MillingUtil.html","topicUid":"Hi.MachiningProcs.MillingUtil","type":"Class"},{"name":"ProxyProjectService","href":"Hi.MachiningProcs.ProxyProjectService.html","topicHref":"Hi.MachiningProcs.ProxyProjectService.html","topicUid":"Hi.MachiningProcs.ProxyProjectService","type":"Class"},{"name":"RenderingFlag","href":"Hi.MachiningProcs.RenderingFlag.html","topicHref":"Hi.MachiningProcs.RenderingFlag.html","topicUid":"Hi.MachiningProcs.RenderingFlag","type":"Enum"},{"name":"RuntimeApi","href":"Hi.MachiningProcs.RuntimeApi.html","topicHref":"Hi.MachiningProcs.RuntimeApi.html","topicUid":"Hi.MachiningProcs.RuntimeApi","type":"Class"},{"name":"RuntimeController","href":"Hi.MachiningProcs.RuntimeController.html","topicHref":"Hi.MachiningProcs.RuntimeController.html","topicUid":"Hi.MachiningProcs.RuntimeController","type":"Class"},{"name":"SessionMessage","href":"Hi.MachiningProcs.SessionMessage.html","topicHref":"Hi.MachiningProcs.SessionMessage.html","topicUid":"Hi.MachiningProcs.SessionMessage","type":"Class"},{"name":"SessionMessageHost","href":"Hi.MachiningProcs.SessionMessageHost.html","topicHref":"Hi.MachiningProcs.SessionMessageHost.html","topicUid":"Hi.MachiningProcs.SessionMessageHost","type":"Class"},{"name":"SessionMessageHost.FilterFlag","href":"Hi.MachiningProcs.SessionMessageHost.FilterFlag.html","topicHref":"Hi.MachiningProcs.SessionMessageHost.FilterFlag.html","topicUid":"Hi.MachiningProcs.SessionMessageHost.FilterFlag","type":"Enum"},{"name":"SessionMessagePack","href":"Hi.MachiningProcs.SessionMessagePack.html","topicHref":"Hi.MachiningProcs.SessionMessagePack.html","topicUid":"Hi.MachiningProcs.SessionMessagePack","type":"Class"},{"name":"SetupController","href":"Hi.MachiningProcs.SetupController.html","topicHref":"Hi.MachiningProcs.SetupController.html","topicUid":"Hi.MachiningProcs.SetupController","type":"Class"},{"name":"SpindleSpeedCache","href":"Hi.MachiningProcs.SpindleSpeedCache.html","topicHref":"Hi.MachiningProcs.SpindleSpeedCache.html","topicUid":"Hi.MachiningProcs.SpindleSpeedCache","type":"Class"}]},{"name":"Hi.MachiningSteps","href":"Hi.MachiningSteps.html","topicHref":"Hi.MachiningSteps.html","topicUid":"Hi.MachiningSteps","type":"Namespace","items":[{"name":"IFlagText","href":"Hi.MachiningSteps.IFlagText.html","topicHref":"Hi.MachiningSteps.IFlagText.html","topicUid":"Hi.MachiningSteps.IFlagText","type":"Interface"},{"name":"IMachiningStepHost","href":"Hi.MachiningSteps.IMachiningStepHost.html","topicHref":"Hi.MachiningSteps.IMachiningStepHost.html","topicUid":"Hi.MachiningSteps.IMachiningStepHost","type":"Interface"},{"name":"MachineMotionStep","href":"Hi.MachiningSteps.MachineMotionStep.html","topicHref":"Hi.MachiningSteps.MachineMotionStep.html","topicUid":"Hi.MachiningSteps.MachineMotionStep","type":"Class"},{"name":"MachiningStep","href":"Hi.MachiningSteps.MachiningStep.html","topicHref":"Hi.MachiningSteps.MachiningStep.html","topicUid":"Hi.MachiningSteps.MachiningStep","type":"Class"},{"name":"MachiningStep.CollidedKeyPair","href":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair.html","topicHref":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair.html","topicUid":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair","type":"Class"},{"name":"MachiningStepUtil","href":"Hi.MachiningSteps.MachiningStepUtil.html","topicHref":"Hi.MachiningSteps.MachiningStepUtil.html","topicUid":"Hi.MachiningSteps.MachiningStepUtil","type":"Class"},{"name":"PresentAccess","href":"Hi.MachiningSteps.PresentAccess.html","topicHref":"Hi.MachiningSteps.PresentAccess.html","topicUid":"Hi.MachiningSteps.PresentAccess","type":"Class"},{"name":"PresentAttribute","href":"Hi.MachiningSteps.PresentAttribute.html","topicHref":"Hi.MachiningSteps.PresentAttribute.html","topicUid":"Hi.MachiningSteps.PresentAttribute","type":"Class"},{"name":"PropertyAccess","href":"Hi.MachiningSteps.PropertyAccess-1.html","topicHref":"Hi.MachiningSteps.PropertyAccess-1.html","topicUid":"Hi.MachiningSteps.PropertyAccess`1","type":"Class"}]},{"name":"Hi.Mapping","href":"Hi.Mapping.html","topicHref":"Hi.Mapping.html","topicUid":"Hi.Mapping","type":"Namespace","items":[{"name":"CsvNcStep","href":"Hi.Mapping.CsvNcStep.html","topicHref":"Hi.Mapping.CsvNcStep.html","topicUid":"Hi.Mapping.CsvNcStep","type":"Class"},{"name":"FileToTimeShotMapping","href":"Hi.Mapping.FileToTimeShotMapping.html","topicHref":"Hi.Mapping.FileToTimeShotMapping.html","topicUid":"Hi.Mapping.FileToTimeShotMapping","type":"Class"},{"name":"IAccelerationShot","href":"Hi.Mapping.IAccelerationShot.html","topicHref":"Hi.Mapping.IAccelerationShot.html","topicUid":"Hi.Mapping.IAccelerationShot","type":"Interface"},{"name":"IForceShot","href":"Hi.Mapping.IForceShot.html","topicHref":"Hi.Mapping.IForceShot.html","topicUid":"Hi.Mapping.IForceShot","type":"Interface"},{"name":"IMomentShot","href":"Hi.Mapping.IMomentShot.html","topicHref":"Hi.Mapping.IMomentShot.html","topicUid":"Hi.Mapping.IMomentShot","type":"Interface"},{"name":"ITimeShot","href":"Hi.Mapping.ITimeShot.html","topicHref":"Hi.Mapping.ITimeShot.html","topicUid":"Hi.Mapping.ITimeShot","type":"Interface"},{"name":"MappingUtil","href":"Hi.Mapping.MappingUtil.html","topicHref":"Hi.Mapping.MappingUtil.html","topicUid":"Hi.Mapping.MappingUtil","type":"Class"},{"name":"StepTimeShotUtil","href":"Hi.Mapping.StepTimeShotUtil.html","topicHref":"Hi.Mapping.StepTimeShotUtil.html","topicUid":"Hi.Mapping.StepTimeShotUtil","type":"Class"},{"name":"StepTimeShotUtil.CycleSamplingMode","href":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html","topicHref":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html","topicUid":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode","type":"Enum"},{"name":"StepTimeShotUtil.GetTimeShotByFileDelegate","href":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate.html","topicHref":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate.html","topicUid":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate","type":"Delegate"},{"name":"TimeMapping","href":"Hi.Mapping.TimeMapping.html","topicHref":"Hi.Mapping.TimeMapping.html","topicUid":"Hi.Mapping.TimeMapping","type":"Class"}]},{"name":"Hi.Mappings","href":"Hi.Mappings.html","topicHref":"Hi.Mappings.html","topicUid":"Hi.Mappings","type":"Namespace","items":[{"name":"FileTimeSection","href":"Hi.Mappings.FileTimeSection.html","topicHref":"Hi.Mappings.FileTimeSection.html","topicUid":"Hi.Mappings.FileTimeSection","type":"Class"},{"name":"FileTimeSection.TimeOption","href":"Hi.Mappings.FileTimeSection.TimeOption.html","topicHref":"Hi.Mappings.FileTimeSection.TimeOption.html","topicUid":"Hi.Mappings.FileTimeSection.TimeOption","type":"Enum"}]},{"name":"Hi.Mech","href":"Hi.Mech.html","topicHref":"Hi.Mech.html","topicUid":"Hi.Mech","type":"Namespace","items":[{"name":"GeneralMechanism","href":"Hi.Mech.GeneralMechanism.html","topicHref":"Hi.Mech.GeneralMechanism.html","topicUid":"Hi.Mech.GeneralMechanism","type":"Class"},{"name":"IGetAnchorToSolidDictionary","href":"Hi.Mech.IGetAnchorToSolidDictionary.html","topicHref":"Hi.Mech.IGetAnchorToSolidDictionary.html","topicUid":"Hi.Mech.IGetAnchorToSolidDictionary","type":"Interface"},{"name":"IGetMachiningChain","href":"Hi.Mech.IGetMachiningChain.html","topicHref":"Hi.Mech.IGetMachiningChain.html","topicUid":"Hi.Mech.IGetMachiningChain","type":"Interface"},{"name":"IMachiningChain","href":"Hi.Mech.IMachiningChain.html","topicHref":"Hi.Mech.IMachiningChain.html","topicUid":"Hi.Mech.IMachiningChain","type":"Interface"},{"name":"IMachiningChainSource","href":"Hi.Mech.IMachiningChainSource.html","topicHref":"Hi.Mech.IMachiningChainSource.html","topicUid":"Hi.Mech.IMachiningChainSource","type":"Interface"},{"name":"MachiningChainUtil","href":"Hi.Mech.MachiningChainUtil.html","topicHref":"Hi.Mech.MachiningChainUtil.html","topicUid":"Hi.Mech.MachiningChainUtil","type":"Class"}]},{"name":"Hi.Mech.Topo","href":"Hi.Mech.Topo.html","topicHref":"Hi.Mech.Topo.html","topicUid":"Hi.Mech.Topo","type":"Namespace","items":[{"name":"Anchor","href":"Hi.Mech.Topo.Anchor.html","topicHref":"Hi.Mech.Topo.Anchor.html","topicUid":"Hi.Mech.Topo.Anchor","type":"Class"},{"name":"AnchorFuncSource","href":"Hi.Mech.Topo.AnchorFuncSource.html","topicHref":"Hi.Mech.Topo.AnchorFuncSource.html","topicUid":"Hi.Mech.Topo.AnchorFuncSource","type":"Class"},{"name":"AnchoredBoxable","href":"Hi.Mech.Topo.AnchoredBoxable.html","topicHref":"Hi.Mech.Topo.AnchoredBoxable.html","topicUid":"Hi.Mech.Topo.AnchoredBoxable","type":"Class"},{"name":"AnchoredDisplayee","href":"Hi.Mech.Topo.AnchoredDisplayee.html","topicHref":"Hi.Mech.Topo.AnchoredDisplayee.html","topicUid":"Hi.Mech.Topo.AnchoredDisplayee","type":"Class"},{"name":"Asmb","href":"Hi.Mech.Topo.Asmb.html","topicHref":"Hi.Mech.Topo.Asmb.html","topicUid":"Hi.Mech.Topo.Asmb","type":"Class"},{"name":"AsmbDraw","href":"Hi.Mech.Topo.AsmbDraw.html","topicHref":"Hi.Mech.Topo.AsmbDraw.html","topicUid":"Hi.Mech.Topo.AsmbDraw","type":"Class"},{"name":"Branch","href":"Hi.Mech.Topo.Branch.html","topicHref":"Hi.Mech.Topo.Branch.html","topicUid":"Hi.Mech.Topo.Branch","type":"Class"},{"name":"DirectionBranchPack","href":"Hi.Mech.Topo.DirectionBranchPack.html","topicHref":"Hi.Mech.Topo.DirectionBranchPack.html","topicUid":"Hi.Mech.Topo.DirectionBranchPack","type":"Class"},{"name":"DirectionBranchPackUtil","href":"Hi.Mech.Topo.DirectionBranchPackUtil.html","topicHref":"Hi.Mech.Topo.DirectionBranchPackUtil.html","topicUid":"Hi.Mech.Topo.DirectionBranchPackUtil","type":"Class"},{"name":"DynamicFreeform","href":"Hi.Mech.Topo.DynamicFreeform.html","topicHref":"Hi.Mech.Topo.DynamicFreeform.html","topicUid":"Hi.Mech.Topo.DynamicFreeform","type":"Class"},{"name":"DynamicRotation","href":"Hi.Mech.Topo.DynamicRotation.html","topicHref":"Hi.Mech.Topo.DynamicRotation.html","topicUid":"Hi.Mech.Topo.DynamicRotation","type":"Class"},{"name":"DynamicTranslation","href":"Hi.Mech.Topo.DynamicTranslation.html","topicHref":"Hi.Mech.Topo.DynamicTranslation.html","topicUid":"Hi.Mech.Topo.DynamicTranslation","type":"Class"},{"name":"GeneralTransform","href":"Hi.Mech.Topo.GeneralTransform.html","topicHref":"Hi.Mech.Topo.GeneralTransform.html","topicUid":"Hi.Mech.Topo.GeneralTransform","type":"Class"},{"name":"IAnchoredDisplayee","href":"Hi.Mech.Topo.IAnchoredDisplayee.html","topicHref":"Hi.Mech.Topo.IAnchoredDisplayee.html","topicUid":"Hi.Mech.Topo.IAnchoredDisplayee","type":"Interface"},{"name":"IDynamicRegular","href":"Hi.Mech.Topo.IDynamicRegular.html","topicHref":"Hi.Mech.Topo.IDynamicRegular.html","topicUid":"Hi.Mech.Topo.IDynamicRegular","type":"Interface"},{"name":"IDynamicTransformer","href":"Hi.Mech.Topo.IDynamicTransformer.html","topicHref":"Hi.Mech.Topo.IDynamicTransformer.html","topicUid":"Hi.Mech.Topo.IDynamicTransformer","type":"Interface"},{"name":"IGetAnchor","href":"Hi.Mech.Topo.IGetAnchor.html","topicHref":"Hi.Mech.Topo.IGetAnchor.html","topicUid":"Hi.Mech.Topo.IGetAnchor","type":"Interface"},{"name":"IGetAnchoredDisplayeeList","href":"Hi.Mech.Topo.IGetAnchoredDisplayeeList.html","topicHref":"Hi.Mech.Topo.IGetAnchoredDisplayeeList.html","topicUid":"Hi.Mech.Topo.IGetAnchoredDisplayeeList","type":"Interface"},{"name":"IGetAsmb","href":"Hi.Mech.Topo.IGetAsmb.html","topicHref":"Hi.Mech.Topo.IGetAsmb.html","topicUid":"Hi.Mech.Topo.IGetAsmb","type":"Interface"},{"name":"IGetFletchBuckle","href":"Hi.Mech.Topo.IGetFletchBuckle.html","topicHref":"Hi.Mech.Topo.IGetFletchBuckle.html","topicUid":"Hi.Mech.Topo.IGetFletchBuckle","type":"Interface"},{"name":"IGetInverseTransformer","href":"Hi.Mech.Topo.IGetInverseTransformer.html","topicHref":"Hi.Mech.Topo.IGetInverseTransformer.html","topicUid":"Hi.Mech.Topo.IGetInverseTransformer","type":"Interface"},{"name":"IGetTopoIndex","href":"Hi.Mech.Topo.IGetTopoIndex.html","topicHref":"Hi.Mech.Topo.IGetTopoIndex.html","topicUid":"Hi.Mech.Topo.IGetTopoIndex","type":"Interface"},{"name":"IStaticTransformer","href":"Hi.Mech.Topo.IStaticTransformer.html","topicHref":"Hi.Mech.Topo.IStaticTransformer.html","topicUid":"Hi.Mech.Topo.IStaticTransformer","type":"Interface"},{"name":"ITopo","href":"Hi.Mech.Topo.ITopo.html","topicHref":"Hi.Mech.Topo.ITopo.html","topicUid":"Hi.Mech.Topo.ITopo","type":"Interface"},{"name":"ITopoDisplayee","href":"Hi.Mech.Topo.ITopoDisplayee.html","topicHref":"Hi.Mech.Topo.ITopoDisplayee.html","topicUid":"Hi.Mech.Topo.ITopoDisplayee","type":"Interface"},{"name":"ITransformer","href":"Hi.Mech.Topo.ITransformer.html","topicHref":"Hi.Mech.Topo.ITransformer.html","topicUid":"Hi.Mech.Topo.ITransformer","type":"Interface"},{"name":"ITransformerProperty","href":"Hi.Mech.Topo.ITransformerProperty.html","topicHref":"Hi.Mech.Topo.ITransformerProperty.html","topicUid":"Hi.Mech.Topo.ITransformerProperty","type":"Interface"},{"name":"NoTransform","href":"Hi.Mech.Topo.NoTransform.html","topicHref":"Hi.Mech.Topo.NoTransform.html","topicUid":"Hi.Mech.Topo.NoTransform","type":"Class"},{"name":"StackTransformer","href":"Hi.Mech.Topo.StackTransformer.html","topicHref":"Hi.Mech.Topo.StackTransformer.html","topicUid":"Hi.Mech.Topo.StackTransformer","type":"Class"},{"name":"StaticFreeform","href":"Hi.Mech.Topo.StaticFreeform.html","topicHref":"Hi.Mech.Topo.StaticFreeform.html","topicUid":"Hi.Mech.Topo.StaticFreeform","type":"Class"},{"name":"StaticRotation","href":"Hi.Mech.Topo.StaticRotation.html","topicHref":"Hi.Mech.Topo.StaticRotation.html","topicUid":"Hi.Mech.Topo.StaticRotation","type":"Class"},{"name":"StaticTranslation","href":"Hi.Mech.Topo.StaticTranslation.html","topicHref":"Hi.Mech.Topo.StaticTranslation.html","topicUid":"Hi.Mech.Topo.StaticTranslation","type":"Class"},{"name":"TopoDisplayee","href":"Hi.Mech.Topo.TopoDisplayee.html","topicHref":"Hi.Mech.Topo.TopoDisplayee.html","topicUid":"Hi.Mech.Topo.TopoDisplayee","type":"Class"},{"name":"TopoDisplayeeUtil","href":"Hi.Mech.Topo.TopoDisplayeeUtil.html","topicHref":"Hi.Mech.Topo.TopoDisplayeeUtil.html","topicUid":"Hi.Mech.Topo.TopoDisplayeeUtil","type":"Class"},{"name":"TopoReflection","href":"Hi.Mech.Topo.TopoReflection.html","topicHref":"Hi.Mech.Topo.TopoReflection.html","topicUid":"Hi.Mech.Topo.TopoReflection","type":"Class"},{"name":"TopoUtil","href":"Hi.Mech.Topo.TopoUtil.html","topicHref":"Hi.Mech.Topo.TopoUtil.html","topicUid":"Hi.Mech.Topo.TopoUtil","type":"Class"},{"name":"TransformerUtil","href":"Hi.Mech.Topo.TransformerUtil.html","topicHref":"Hi.Mech.Topo.TransformerUtil.html","topicUid":"Hi.Mech.Topo.TransformerUtil","type":"Class"}]},{"name":"Hi.Milling","href":"Hi.Milling.html","topicHref":"Hi.Milling.html","topicUid":"Hi.Milling","type":"Namespace","items":[{"name":"IGetDiameter","href":"Hi.Milling.IGetDiameter.html","topicHref":"Hi.Milling.IGetDiameter.html","topicUid":"Hi.Milling.IGetDiameter","type":"Interface"},{"name":"IGetFluteHeight","href":"Hi.Milling.IGetFluteHeight.html","topicHref":"Hi.Milling.IGetFluteHeight.html","topicUid":"Hi.Milling.IGetFluteHeight","type":"Interface"},{"name":"IGetMillingGeomBrief","href":"Hi.Milling.IGetMillingGeomBrief.html","topicHref":"Hi.Milling.IGetMillingGeomBrief.html","topicUid":"Hi.Milling.IGetMillingGeomBrief","type":"Interface"},{"name":"IGetRadialReliefAngle","href":"Hi.Milling.IGetRadialReliefAngle.html","topicHref":"Hi.Milling.IGetRadialReliefAngle.html","topicUid":"Hi.Milling.IGetRadialReliefAngle","type":"Interface"},{"name":"IMillingGeomBriefAccessor","href":"Hi.Milling.IMillingGeomBriefAccessor.html","topicHref":"Hi.Milling.IMillingGeomBriefAccessor.html","topicUid":"Hi.Milling.IMillingGeomBriefAccessor","type":"Interface"},{"name":"MillingGeomBrief","href":"Hi.Milling.MillingGeomBrief.html","topicHref":"Hi.Milling.MillingGeomBrief.html","topicUid":"Hi.Milling.MillingGeomBrief","type":"Class"},{"name":"MillingRemovalUtil","href":"Hi.Milling.MillingRemovalUtil.html","topicHref":"Hi.Milling.MillingRemovalUtil.html","topicUid":"Hi.Milling.MillingRemovalUtil","type":"Class"},{"name":"SpindleCapability","href":"Hi.Milling.SpindleCapability.html","topicHref":"Hi.Milling.SpindleCapability.html","topicUid":"Hi.Milling.SpindleCapability","type":"Class"}]},{"name":"Hi.Milling.Apts","href":"Hi.Milling.Apts.html","topicHref":"Hi.Milling.Apts.html","topicUid":"Hi.Milling.Apts","type":"Namespace","items":[{"name":"AptDerivative","href":"Hi.Milling.Apts.AptDerivative.html","topicHref":"Hi.Milling.Apts.AptDerivative.html","topicUid":"Hi.Milling.Apts.AptDerivative","type":"Class"},{"name":"BallApt","href":"Hi.Milling.Apts.BallApt.html","topicHref":"Hi.Milling.Apts.BallApt.html","topicUid":"Hi.Milling.Apts.BallApt","type":"Class"},{"name":"BullNoseApt","href":"Hi.Milling.Apts.BullNoseApt.html","topicHref":"Hi.Milling.Apts.BullNoseApt.html","topicUid":"Hi.Milling.Apts.BullNoseApt","type":"Class"},{"name":"ColumnApt","href":"Hi.Milling.Apts.ColumnApt.html","topicHref":"Hi.Milling.Apts.ColumnApt.html","topicUid":"Hi.Milling.Apts.ColumnApt","type":"Class"},{"name":"ConeApt","href":"Hi.Milling.Apts.ConeApt.html","topicHref":"Hi.Milling.Apts.ConeApt.html","topicUid":"Hi.Milling.Apts.ConeApt","type":"Class"},{"name":"ExactColumnApt","href":"Hi.Milling.Apts.ExactColumnApt.html","topicHref":"Hi.Milling.Apts.ExactColumnApt.html","topicUid":"Hi.Milling.Apts.ExactColumnApt","type":"Class"},{"name":"GeneralApt","href":"Hi.Milling.Apts.GeneralApt.html","topicHref":"Hi.Milling.Apts.GeneralApt.html","topicUid":"Hi.Milling.Apts.GeneralApt","type":"Class"},{"name":"IAptAlpha","href":"Hi.Milling.Apts.IAptAlpha.html","topicHref":"Hi.Milling.Apts.IAptAlpha.html","topicUid":"Hi.Milling.Apts.IAptAlpha","type":"Interface"},{"name":"IAptBased","href":"Hi.Milling.Apts.IAptBased.html","topicHref":"Hi.Milling.Apts.IAptBased.html","topicUid":"Hi.Milling.Apts.IAptBased","type":"Interface"},{"name":"IAptBeta","href":"Hi.Milling.Apts.IAptBeta.html","topicHref":"Hi.Milling.Apts.IAptBeta.html","topicUid":"Hi.Milling.Apts.IAptBeta","type":"Interface"},{"name":"IAptRc","href":"Hi.Milling.Apts.IAptRc.html","topicHref":"Hi.Milling.Apts.IAptRc.html","topicUid":"Hi.Milling.Apts.IAptRc","type":"Interface"},{"name":"IAptRr","href":"Hi.Milling.Apts.IAptRr.html","topicHref":"Hi.Milling.Apts.IAptRr.html","topicUid":"Hi.Milling.Apts.IAptRr","type":"Interface"},{"name":"IAptRz","href":"Hi.Milling.Apts.IAptRz.html","topicHref":"Hi.Milling.Apts.IAptRz.html","topicUid":"Hi.Milling.Apts.IAptRz","type":"Interface"},{"name":"IGetApt","href":"Hi.Milling.Apts.IGetApt.html","topicHref":"Hi.Milling.Apts.IGetApt.html","topicUid":"Hi.Milling.Apts.IGetApt","type":"Interface"},{"name":"IGetGeneralApt","href":"Hi.Milling.Apts.IGetGeneralApt.html","topicHref":"Hi.Milling.Apts.IGetGeneralApt.html","topicUid":"Hi.Milling.Apts.IGetGeneralApt","type":"Interface"},{"name":"TaperApt","href":"Hi.Milling.Apts.TaperApt.html","topicHref":"Hi.Milling.Apts.TaperApt.html","topicUid":"Hi.Milling.Apts.TaperApt","type":"Class"},{"name":"apt_t","href":"Hi.Milling.Apts.apt_t.html","topicHref":"Hi.Milling.Apts.apt_t.html","topicUid":"Hi.Milling.Apts.apt_t","type":"Struct"}]},{"name":"Hi.Milling.Cutters","href":"Hi.Milling.Cutters.html","topicHref":"Hi.Milling.Cutters.html","topicUid":"Hi.Milling.Cutters","type":"Namespace","items":[{"name":"AptProfile","href":"Hi.Milling.Cutters.AptProfile.html","topicHref":"Hi.Milling.Cutters.AptProfile.html","topicUid":"Hi.Milling.Cutters.AptProfile","type":"Class"},{"name":"ConstRatioProfile","href":"Hi.Milling.Cutters.ConstRatioProfile.html","topicHref":"Hi.Milling.Cutters.ConstRatioProfile.html","topicUid":"Hi.Milling.Cutters.ConstRatioProfile","type":"Class"},{"name":"CustomSpinningProfile","href":"Hi.Milling.Cutters.CustomSpinningProfile.html","topicHref":"Hi.Milling.Cutters.CustomSpinningProfile.html","topicUid":"Hi.Milling.Cutters.CustomSpinningProfile","type":"Class"},{"name":"CutterUtil","href":"Hi.Milling.Cutters.CutterUtil.html","topicHref":"Hi.Milling.Cutters.CutterUtil.html","topicUid":"Hi.Milling.Cutters.CutterUtil","type":"Class"},{"name":"FluteContourDisplayee","href":"Hi.Milling.Cutters.FluteContourDisplayee.html","topicHref":"Hi.Milling.Cutters.FluteContourDisplayee.html","topicUid":"Hi.Milling.Cutters.FluteContourDisplayee","type":"Class"},{"name":"FluteDependentRatioProfile","href":"Hi.Milling.Cutters.FluteDependentRatioProfile.html","topicHref":"Hi.Milling.Cutters.FluteDependentRatioProfile.html","topicUid":"Hi.Milling.Cutters.FluteDependentRatioProfile","type":"Class"},{"name":"IShaperProfile","href":"Hi.Milling.Cutters.IShaperProfile.html","topicHref":"Hi.Milling.Cutters.IShaperProfile.html","topicUid":"Hi.Milling.Cutters.IShaperProfile","type":"Interface"},{"name":"MillingCutter","href":"Hi.Milling.Cutters.MillingCutter.html","topicHref":"Hi.Milling.Cutters.MillingCutter.html","topicUid":"Hi.Milling.Cutters.MillingCutter","type":"Class"},{"name":"MillingCutter.IntegralModeEnum","href":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum.html","topicHref":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum.html","topicUid":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum","type":"Enum"},{"name":"MillingCutter.MassAssignmentMode","href":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode.html","topicHref":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode.html","topicUid":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode","type":"Enum"},{"name":"MillingCutterEditorDisplayee","href":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.html","topicHref":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.html","topicUid":"Hi.Milling.Cutters.MillingCutterEditorDisplayee","type":"Class"},{"name":"MillingCutterEditorDisplayee.ShapeModeEnum","href":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum.html","topicHref":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum.html","topicUid":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum","type":"Enum"}]},{"name":"Hi.Milling.Engagements","href":"Hi.Milling.Engagements.html","topicHref":"Hi.Milling.Engagements.html","topicUid":"Hi.Milling.Engagements","type":"Namespace","items":[{"name":"BitwiseMillingEngagement","href":"Hi.Milling.Engagements.BitwiseMillingEngagement.html","topicHref":"Hi.Milling.Engagements.BitwiseMillingEngagement.html","topicUid":"Hi.Milling.Engagements.BitwiseMillingEngagement","type":"Class"},{"name":"EngagementLayer","href":"Hi.Milling.Engagements.EngagementLayer.html","topicHref":"Hi.Milling.Engagements.EngagementLayer.html","topicUid":"Hi.Milling.Engagements.EngagementLayer","type":"Class"},{"name":"EngagementSlice","href":"Hi.Milling.Engagements.EngagementSlice.html","topicHref":"Hi.Milling.Engagements.EngagementSlice.html","topicUid":"Hi.Milling.Engagements.EngagementSlice","type":"Class"},{"name":"IBitwiseMillingEngagementSupport","href":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport.html","topicHref":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport.html","topicUid":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport","type":"Interface"},{"name":"IGetLayerMillingEngagement","href":"Hi.Milling.Engagements.IGetLayerMillingEngagement.html","topicHref":"Hi.Milling.Engagements.IGetLayerMillingEngagement.html","topicUid":"Hi.Milling.Engagements.IGetLayerMillingEngagement","type":"Interface"},{"name":"LayerMillingEngagement","href":"Hi.Milling.Engagements.LayerMillingEngagement.html","topicHref":"Hi.Milling.Engagements.LayerMillingEngagement.html","topicUid":"Hi.Milling.Engagements.LayerMillingEngagement","type":"Class"},{"name":"MillingEngagementUtil","href":"Hi.Milling.Engagements.MillingEngagementUtil.html","topicHref":"Hi.Milling.Engagements.MillingEngagementUtil.html","topicUid":"Hi.Milling.Engagements.MillingEngagementUtil","type":"Class"}]},{"name":"Hi.Milling.FluteContours","href":"Hi.Milling.FluteContours.html","topicHref":"Hi.Milling.FluteContours.html","topicUid":"Hi.Milling.FluteContours","type":"Namespace","items":[{"name":"ConstHelixSideContour","href":"Hi.Milling.FluteContours.ConstHelixSideContour.html","topicHref":"Hi.Milling.FluteContours.ConstHelixSideContour.html","topicUid":"Hi.Milling.FluteContours.ConstHelixSideContour","type":"Class"},{"name":"FluteContour","href":"Hi.Milling.FluteContours.FluteContour.html","topicHref":"Hi.Milling.FluteContours.FluteContour.html","topicUid":"Hi.Milling.FluteContours.FluteContour","type":"Class"},{"name":"FluteContourUtil","href":"Hi.Milling.FluteContours.FluteContourUtil.html","topicHref":"Hi.Milling.FluteContours.FluteContourUtil.html","topicUid":"Hi.Milling.FluteContours.FluteContourUtil","type":"Class"},{"name":"FreeContourTray","href":"Hi.Milling.FluteContours.FreeContourTray.html","topicHref":"Hi.Milling.FluteContours.FreeContourTray.html","topicUid":"Hi.Milling.FluteContours.FreeContourTray","type":"Class"},{"name":"FreeformSideContour","href":"Hi.Milling.FluteContours.FreeformSideContour.html","topicHref":"Hi.Milling.FluteContours.FreeformSideContour.html","topicUid":"Hi.Milling.FluteContours.FreeformSideContour","type":"Class"},{"name":"IBottomContour","href":"Hi.Milling.FluteContours.IBottomContour.html","topicHref":"Hi.Milling.FluteContours.IBottomContour.html","topicUid":"Hi.Milling.FluteContours.IBottomContour","type":"Interface"},{"name":"IContourTray","href":"Hi.Milling.FluteContours.IContourTray.html","topicHref":"Hi.Milling.FluteContours.IContourTray.html","topicUid":"Hi.Milling.FluteContours.IContourTray","type":"Interface"},{"name":"IFluteNumSourceProperty","href":"Hi.Milling.FluteContours.IFluteNumSourceProperty.html","topicHref":"Hi.Milling.FluteContours.IFluteNumSourceProperty.html","topicUid":"Hi.Milling.FluteContours.IFluteNumSourceProperty","type":"Interface"},{"name":"IGetFluteNum","href":"Hi.Milling.FluteContours.IGetFluteNum.html","topicHref":"Hi.Milling.FluteContours.IGetFluteNum.html","topicUid":"Hi.Milling.FluteContours.IGetFluteNum","type":"Interface"},{"name":"ISideContour","href":"Hi.Milling.FluteContours.ISideContour.html","topicHref":"Hi.Milling.FluteContours.ISideContour.html","topicUid":"Hi.Milling.FluteContours.ISideContour","type":"Interface"},{"name":"IWorkingContour","href":"Hi.Milling.FluteContours.IWorkingContour.html","topicHref":"Hi.Milling.FluteContours.IWorkingContour.html","topicUid":"Hi.Milling.FluteContours.IWorkingContour","type":"Interface"},{"name":"ShiftedWorkingContour","href":"Hi.Milling.FluteContours.ShiftedWorkingContour.html","topicHref":"Hi.Milling.FluteContours.ShiftedWorkingContour.html","topicUid":"Hi.Milling.FluteContours.ShiftedWorkingContour","type":"Class"},{"name":"SideContourDisplayee","href":"Hi.Milling.FluteContours.SideContourDisplayee.html","topicHref":"Hi.Milling.FluteContours.SideContourDisplayee.html","topicUid":"Hi.Milling.FluteContours.SideContourDisplayee","type":"Class"},{"name":"SlideBottomContour","href":"Hi.Milling.FluteContours.SlideBottomContour.html","topicHref":"Hi.Milling.FluteContours.SlideBottomContour.html","topicUid":"Hi.Milling.FluteContours.SlideBottomContour","type":"Class"},{"name":"SpanContourPos4d","href":"Hi.Milling.FluteContours.SpanContourPos4d.html","topicHref":"Hi.Milling.FluteContours.SpanContourPos4d.html","topicUid":"Hi.Milling.FluteContours.SpanContourPos4d","type":"Class"},{"name":"UniformContourTray","href":"Hi.Milling.FluteContours.UniformContourTray.html","topicHref":"Hi.Milling.FluteContours.UniformContourTray.html","topicUid":"Hi.Milling.FluteContours.UniformContourTray","type":"Class"}]},{"name":"Hi.Milling.MillingTools","href":"Hi.Milling.MillingTools.html","topicHref":"Hi.Milling.MillingTools.html","topicUid":"Hi.Milling.MillingTools","type":"Namespace","items":[{"name":"MillingTool","href":"Hi.Milling.MillingTools.MillingTool.html","topicHref":"Hi.Milling.MillingTools.MillingTool.html","topicUid":"Hi.Milling.MillingTools.MillingTool","type":"Class"},{"name":"MillingToolAnchorReference","href":"Hi.Milling.MillingTools.MillingToolAnchorReference.html","topicHref":"Hi.Milling.MillingTools.MillingToolAnchorReference.html","topicUid":"Hi.Milling.MillingTools.MillingToolAnchorReference","type":"Enum"},{"name":"MillingToolEditorDisplayee","href":"Hi.Milling.MillingTools.MillingToolEditorDisplayee.html","topicHref":"Hi.Milling.MillingTools.MillingToolEditorDisplayee.html","topicUid":"Hi.Milling.MillingTools.MillingToolEditorDisplayee","type":"Class"},{"name":"MillingToolUtil","href":"Hi.Milling.MillingTools.MillingToolUtil.html","topicHref":"Hi.Milling.MillingTools.MillingToolUtil.html","topicUid":"Hi.Milling.MillingTools.MillingToolUtil","type":"Class"}]},{"name":"Hi.MillingForces","href":"Hi.MillingForces.html","topicHref":"Hi.MillingForces.html","topicUid":"Hi.MillingForces","type":"Namespace","items":[{"name":"FluteZData","href":"Hi.MillingForces.FluteZData.html","topicHref":"Hi.MillingForces.FluteZData.html","topicUid":"Hi.MillingForces.FluteZData","type":"Class"},{"name":"IGetMillingForce","href":"Hi.MillingForces.IGetMillingForce.html","topicHref":"Hi.MillingForces.IGetMillingForce.html","topicUid":"Hi.MillingForces.IGetMillingForce","type":"Interface"},{"name":"IMillingForceAccessor","href":"Hi.MillingForces.IMillingForceAccessor.html","topicHref":"Hi.MillingForces.IMillingForceAccessor.html","topicUid":"Hi.MillingForces.IMillingForceAccessor","type":"Interface"},{"name":"MillingForce","href":"Hi.MillingForces.MillingForce.html","topicHref":"Hi.MillingForces.MillingForce.html","topicUid":"Hi.MillingForces.MillingForce","type":"Class"},{"name":"MillingForceLicense","href":"Hi.MillingForces.MillingForceLicense.html","topicHref":"Hi.MillingForces.MillingForceLicense.html","topicUid":"Hi.MillingForces.MillingForceLicense","type":"Class"},{"name":"MillingForceLuggage","href":"Hi.MillingForces.MillingForceLuggage.html","topicHref":"Hi.MillingForces.MillingForceLuggage.html","topicUid":"Hi.MillingForces.MillingForceLuggage","type":"Class"},{"name":"MillingForceUtil","href":"Hi.MillingForces.MillingForceUtil.html","topicHref":"Hi.MillingForces.MillingForceUtil.html","topicUid":"Hi.MillingForces.MillingForceUtil","type":"Class"},{"name":"MillingForceUtil.AnglePack","href":"Hi.MillingForces.MillingForceUtil.AnglePack.html","topicHref":"Hi.MillingForces.MillingForceUtil.AnglePack.html","topicUid":"Hi.MillingForces.MillingForceUtil.AnglePack","type":"Class"},{"name":"MillingPhysicsBrief","href":"Hi.MillingForces.MillingPhysicsBrief.html","topicHref":"Hi.MillingForces.MillingPhysicsBrief.html","topicUid":"Hi.MillingForces.MillingPhysicsBrief","type":"Class"},{"name":"PhysicsUtil","href":"Hi.MillingForces.PhysicsUtil.html","topicHref":"Hi.MillingForces.PhysicsUtil.html","topicUid":"Hi.MillingForces.PhysicsUtil","type":"Class"},{"name":"ToolObservationReference","href":"Hi.MillingForces.ToolObservationReference.html","topicHref":"Hi.MillingForces.ToolObservationReference.html","topicUid":"Hi.MillingForces.ToolObservationReference","type":"Enum"}]},{"name":"Hi.MillingForces.Fittings","href":"Hi.MillingForces.Fittings.html","topicHref":"Hi.MillingForces.Fittings.html","topicUid":"Hi.MillingForces.Fittings","type":"Namespace","items":[{"name":"CuttingParaUtil","href":"Hi.MillingForces.Fittings.CuttingParaUtil.html","topicHref":"Hi.MillingForces.Fittings.CuttingParaUtil.html","topicUid":"Hi.MillingForces.Fittings.CuttingParaUtil","type":"Class"},{"name":"ICuttingPara","href":"Hi.MillingForces.Fittings.ICuttingPara.html","topicHref":"Hi.MillingForces.Fittings.ICuttingPara.html","topicUid":"Hi.MillingForces.Fittings.ICuttingPara","type":"Interface"},{"name":"IGetCuttingPara","href":"Hi.MillingForces.Fittings.IGetCuttingPara.html","topicHref":"Hi.MillingForces.Fittings.IGetCuttingPara.html","topicUid":"Hi.MillingForces.Fittings.IGetCuttingPara","type":"Interface"},{"name":"SampleCategory","href":"Hi.MillingForces.Fittings.SampleCategory.html","topicHref":"Hi.MillingForces.Fittings.SampleCategory.html","topicUid":"Hi.MillingForces.Fittings.SampleCategory","type":"Class"},{"name":"SampleFlag","href":"Hi.MillingForces.Fittings.SampleFlag.html","topicHref":"Hi.MillingForces.Fittings.SampleFlag.html","topicUid":"Hi.MillingForces.Fittings.SampleFlag","type":"Enum"},{"name":"SampleFlagUtil","href":"Hi.MillingForces.Fittings.SampleFlagUtil.html","topicHref":"Hi.MillingForces.Fittings.SampleFlagUtil.html","topicUid":"Hi.MillingForces.Fittings.SampleFlagUtil","type":"Class"},{"name":"SampleInstance","href":"Hi.MillingForces.Fittings.SampleInstance.html","topicHref":"Hi.MillingForces.Fittings.SampleInstance.html","topicUid":"Hi.MillingForces.Fittings.SampleInstance","type":"Class"},{"name":"TimeForce","href":"Hi.MillingForces.Fittings.TimeForce.html","topicHref":"Hi.MillingForces.Fittings.TimeForce.html","topicUid":"Hi.MillingForces.Fittings.TimeForce","type":"Class"},{"name":"TimeForceFrequencyDomain","href":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain.html","topicHref":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain.html","topicUid":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain","type":"Class"},{"name":"TimeForceSeries","href":"Hi.MillingForces.Fittings.TimeForceSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeForceSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeForceSeries","type":"Class"},{"name":"TimeForceUtil","href":"Hi.MillingForces.Fittings.TimeForceUtil.html","topicHref":"Hi.MillingForces.Fittings.TimeForceUtil.html","topicUid":"Hi.MillingForces.Fittings.TimeForceUtil","type":"Class"},{"name":"TimeVsForceSeries","href":"Hi.MillingForces.Fittings.TimeVsForceSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeVsForceSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeVsForceSeries","type":"Class"},{"name":"TimeVsTorqueSeries","href":"Hi.MillingForces.Fittings.TimeVsTorqueSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeVsTorqueSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeVsTorqueSeries","type":"Class"},{"name":"TrainingSample","href":"Hi.MillingForces.Fittings.TrainingSample.html","topicHref":"Hi.MillingForces.Fittings.TrainingSample.html","topicUid":"Hi.MillingForces.Fittings.TrainingSample","type":"Class"}]},{"name":"Hi.MillingForces.ProfileMillingParas","href":"Hi.MillingForces.ProfileMillingParas.html","topicHref":"Hi.MillingForces.ProfileMillingParas.html","topicUid":"Hi.MillingForces.ProfileMillingParas","type":"Namespace","items":[{"name":"IGetLocalProfileMillingPara","href":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara.html","topicHref":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara.html","topicUid":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara","type":"Interface"},{"name":"LocalProfileMillingPara","href":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html","topicHref":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html","topicUid":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara","type":"Class"},{"name":"ProfileMillingParaMap","href":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap.html","topicHref":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap.html","topicUid":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap","type":"Class"},{"name":"RtaMillingParaKey","href":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey.html","topicHref":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey.html","topicUid":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey","type":"Enum"}]},{"name":"Hi.MillingForces.RakeFaceCuttingParas","href":"Hi.MillingForces.RakeFaceCuttingParas.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas","type":"Namespace","items":[{"name":"IRakeFaceCuttingPara","href":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara","type":"Interface"},{"name":"MillingPhysicsUtil","href":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil","type":"Class"},{"name":"MultiFormRakeFaceCuttingPara","href":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara","type":"Class"},{"name":"RakeFaceCuttingPara2d","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d","type":"Class"},{"name":"RakeFaceCuttingPara3d","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d","type":"Class"},{"name":"RakeFaceCuttingParaMap","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap","type":"Class"}]},{"name":"Hi.MillingForces.Training","href":"Hi.MillingForces.Training.html","topicHref":"Hi.MillingForces.Training.html","topicUid":"Hi.MillingForces.Training","type":"Namespace","items":[{"name":"MillingTraining","href":"Hi.MillingForces.Training.MillingTraining.html","topicHref":"Hi.MillingForces.Training.MillingTraining.html","topicUid":"Hi.MillingForces.Training.MillingTraining","type":"Class"}]},{"name":"Hi.MillingProcs","href":"Hi.MillingProcs.html","topicHref":"Hi.MillingProcs.html","topicUid":"Hi.MillingProcs","type":"Namespace","items":[{"name":"MillingGuide","href":"Hi.MillingProcs.MillingGuide.html","topicHref":"Hi.MillingProcs.MillingGuide.html","topicUid":"Hi.MillingProcs.MillingGuide","type":"Class"}]},{"name":"Hi.MillingStepUtils","href":"Hi.MillingStepUtils.html","topicHref":"Hi.MillingStepUtils.html","topicUid":"Hi.MillingStepUtils","type":"Namespace","items":[{"name":"ClStripChartConfig","href":"Hi.MillingStepUtils.ClStripChartConfig.html","topicHref":"Hi.MillingStepUtils.ClStripChartConfig.html","topicUid":"Hi.MillingStepUtils.ClStripChartConfig","type":"Class"},{"name":"ClStripChartItemConfig","href":"Hi.MillingStepUtils.ClStripChartItemConfig.html","topicHref":"Hi.MillingStepUtils.ClStripChartItemConfig.html","topicUid":"Hi.MillingStepUtils.ClStripChartItemConfig","type":"Class"},{"name":"ForceCycleFlag","href":"Hi.MillingStepUtils.ForceCycleFlag.html","topicHref":"Hi.MillingStepUtils.ForceCycleFlag.html","topicUid":"Hi.MillingStepUtils.ForceCycleFlag","type":"Enum"},{"name":"ForceCycleLineDivConfig","href":"Hi.MillingStepUtils.ForceCycleLineDivConfig.html","topicHref":"Hi.MillingStepUtils.ForceCycleLineDivConfig.html","topicUid":"Hi.MillingStepUtils.ForceCycleLineDivConfig","type":"Class"},{"name":"LineChartVRangeMode","href":"Hi.MillingStepUtils.LineChartVRangeMode.html","topicHref":"Hi.MillingStepUtils.LineChartVRangeMode.html","topicUid":"Hi.MillingStepUtils.LineChartVRangeMode","type":"Enum"},{"name":"SpindleMomentCycleLineDivConfig","href":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig.html","topicHref":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig.html","topicUid":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig","type":"Class"},{"name":"TimeChartYConfig","href":"Hi.MillingStepUtils.TimeChartYConfig.html","topicHref":"Hi.MillingStepUtils.TimeChartYConfig.html","topicUid":"Hi.MillingStepUtils.TimeChartYConfig","type":"Class"}]},{"name":"Hi.MillingSteps","href":"Hi.MillingSteps.html","topicHref":"Hi.MillingSteps.html","topicUid":"Hi.MillingSteps","type":"Namespace","items":[{"name":"MillingInstance","href":"Hi.MillingSteps.MillingInstance.html","topicHref":"Hi.MillingSteps.MillingInstance.html","topicUid":"Hi.MillingSteps.MillingInstance","type":"Class"},{"name":"MillingStepLuggage","href":"Hi.MillingSteps.MillingStepLuggage.html","topicHref":"Hi.MillingSteps.MillingStepLuggage.html","topicUid":"Hi.MillingSteps.MillingStepLuggage","type":"Class"}]},{"name":"Hi.MongoUtils","href":"Hi.MongoUtils.html","topicHref":"Hi.MongoUtils.html","topicUid":"Hi.MongoUtils","type":"Namespace","items":[{"name":"IMongoRunner","href":"Hi.MongoUtils.IMongoRunner.html","topicHref":"Hi.MongoUtils.IMongoRunner.html","topicUid":"Hi.MongoUtils.IMongoRunner","type":"Interface"},{"name":"MongoRunnerOptions","href":"Hi.MongoUtils.MongoRunnerOptions.html","topicHref":"Hi.MongoUtils.MongoRunnerOptions.html","topicUid":"Hi.MongoUtils.MongoRunnerOptions","type":"Class"},{"name":"MongoServer","href":"Hi.MongoUtils.MongoServer.html","topicHref":"Hi.MongoUtils.MongoServer.html","topicUid":"Hi.MongoUtils.MongoServer","type":"Class"}]},{"name":"Hi.Motion.MatValves","href":"Hi.Motion.MatValves.html","topicHref":"Hi.Motion.MatValves.html","topicUid":"Hi.Motion.MatValves","type":"Namespace","items":[{"name":"ClMachiningValve","href":"Hi.Motion.MatValves.ClMachiningValve.html","topicHref":"Hi.Motion.MatValves.ClMachiningValve.html","topicUid":"Hi.Motion.MatValves.ClMachiningValve","type":"Class"},{"name":"IMotionValve","href":"Hi.Motion.MatValves.IMotionValve.html","topicHref":"Hi.Motion.MatValves.IMotionValve.html","topicUid":"Hi.Motion.MatValves.IMotionValve","type":"Interface"},{"name":"MacroMotionValve","href":"Hi.Motion.MatValves.MacroMotionValve.html","topicHref":"Hi.Motion.MatValves.MacroMotionValve.html","topicUid":"Hi.Motion.MatValves.MacroMotionValve","type":"Class"},{"name":"StepMotionValve","href":"Hi.Motion.MatValves.StepMotionValve.html","topicHref":"Hi.Motion.MatValves.StepMotionValve.html","topicUid":"Hi.Motion.MatValves.StepMotionValve","type":"Class"}]},{"name":"Hi.Native","href":"Hi.Native.html","topicHref":"Hi.Native.html","topicUid":"Hi.Native","type":"Namespace","items":[{"name":"StopSource","href":"Hi.Native.StopSource.html","topicHref":"Hi.Native.StopSource.html","topicUid":"Hi.Native.StopSource","type":"Class"},{"name":"StopToken","href":"Hi.Native.StopToken.html","topicHref":"Hi.Native.StopToken.html","topicUid":"Hi.Native.StopToken","type":"Class"},{"name":"StopTokenKit","href":"Hi.Native.StopTokenKit.html","topicHref":"Hi.Native.StopTokenKit.html","topicUid":"Hi.Native.StopTokenKit","type":"Class"},{"name":"StopTokenUtil","href":"Hi.Native.StopTokenUtil.html","topicHref":"Hi.Native.StopTokenUtil.html","topicUid":"Hi.Native.StopTokenUtil","type":"Class"},{"name":"bind_t","href":"Hi.Native.bind_t.html","topicHref":"Hi.Native.bind_t.html","topicUid":"Hi.Native.bind_t","type":"Struct"},{"name":"box2d","href":"Hi.Native.box2d.html","topicHref":"Hi.Native.box2d.html","topicUid":"Hi.Native.box2d","type":"Struct"},{"name":"box3d","href":"Hi.Native.box3d.html","topicHref":"Hi.Native.box3d.html","topicUid":"Hi.Native.box3d","type":"Struct"},{"name":"expand_to_box3d_func_t","href":"Hi.Native.expand_to_box3d_func_t.html","topicHref":"Hi.Native.expand_to_box3d_func_t.html","topicUid":"Hi.Native.expand_to_box3d_func_t","type":"Delegate"},{"name":"key_event_t","href":"Hi.Native.key_event_t.html","topicHref":"Hi.Native.key_event_t.html","topicUid":"Hi.Native.key_event_t","type":"Struct"},{"name":"key_table__transform_view_by_key_pressing_t","href":"Hi.Native.key_table__transform_view_by_key_pressing_t.html","topicHref":"Hi.Native.key_table__transform_view_by_key_pressing_t.html","topicUid":"Hi.Native.key_table__transform_view_by_key_pressing_t","type":"Struct"},{"name":"mat4d","href":"Hi.Native.mat4d.html","topicHref":"Hi.Native.mat4d.html","topicUid":"Hi.Native.mat4d","type":"Struct"},{"name":"mat_stack_t","href":"Hi.Native.mat_stack_t.html","topicHref":"Hi.Native.mat_stack_t.html","topicUid":"Hi.Native.mat_stack_t","type":"Struct"},{"name":"mouse_button_event_t","href":"Hi.Native.mouse_button_event_t.html","topicHref":"Hi.Native.mouse_button_event_t.html","topicUid":"Hi.Native.mouse_button_event_t","type":"Struct"},{"name":"mouse_button_table__transform_view_by_mouse_drag_t","href":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t.html","topicHref":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t.html","topicUid":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t","type":"Struct"},{"name":"mouse_move_event_t","href":"Hi.Native.mouse_move_event_t.html","topicHref":"Hi.Native.mouse_move_event_t.html","topicUid":"Hi.Native.mouse_move_event_t","type":"Struct"},{"name":"mouse_wheel_event_t","href":"Hi.Native.mouse_wheel_event_t.html","topicHref":"Hi.Native.mouse_wheel_event_t.html","topicUid":"Hi.Native.mouse_wheel_event_t","type":"Struct"},{"name":"panel_state_t","href":"Hi.Native.panel_state_t.html","topicHref":"Hi.Native.panel_state_t.html","topicUid":"Hi.Native.panel_state_t","type":"Struct"},{"name":"picking_event_t","href":"Hi.Native.picking_event_t.html","topicHref":"Hi.Native.picking_event_t.html","topicUid":"Hi.Native.picking_event_t","type":"Struct"},{"name":"picking_func_t","href":"Hi.Native.picking_func_t.html","topicHref":"Hi.Native.picking_func_t.html","topicUid":"Hi.Native.picking_func_t","type":"Delegate"},{"name":"picking_mark_t","href":"Hi.Native.picking_mark_t.html","topicHref":"Hi.Native.picking_mark_t.html","topicUid":"Hi.Native.picking_mark_t","type":"Struct"},{"name":"tri3d","href":"Hi.Native.tri3d.html","topicHref":"Hi.Native.tri3d.html","topicUid":"Hi.Native.tri3d","type":"Struct"},{"name":"ui_event_type","href":"Hi.Native.ui_event_type.html","topicHref":"Hi.Native.ui_event_type.html","topicUid":"Hi.Native.ui_event_type","type":"Enum"},{"name":"vec2d","href":"Hi.Native.vec2d.html","topicHref":"Hi.Native.vec2d.html","topicUid":"Hi.Native.vec2d","type":"Struct"},{"name":"vec3d","href":"Hi.Native.vec3d.html","topicHref":"Hi.Native.vec3d.html","topicUid":"Hi.Native.vec3d","type":"Struct"},{"name":"vec3f","href":"Hi.Native.vec3f.html","topicHref":"Hi.Native.vec3f.html","topicUid":"Hi.Native.vec3f","type":"Struct"}]},{"name":"Hi.NcMech","href":"Hi.NcMech.html","topicHref":"Hi.NcMech.html","topicUid":"Hi.NcMech","type":"Namespace","items":[{"name":"ICollisionIndexPairsSource","href":"Hi.NcMech.ICollisionIndexPairsSource.html","topicHref":"Hi.NcMech.ICollisionIndexPairsSource.html","topicUid":"Hi.NcMech.ICollisionIndexPairsSource","type":"Interface"}]},{"name":"Hi.NcMech.Fixtures","href":"Hi.NcMech.Fixtures.html","topicHref":"Hi.NcMech.Fixtures.html","topicUid":"Hi.NcMech.Fixtures","type":"Namespace","items":[{"name":"Fixture","href":"Hi.NcMech.Fixtures.Fixture.html","topicHref":"Hi.NcMech.Fixtures.Fixture.html","topicUid":"Hi.NcMech.Fixtures.Fixture","type":"Class"},{"name":"FixtureEditorDisplayee","href":"Hi.NcMech.Fixtures.FixtureEditorDisplayee.html","topicHref":"Hi.NcMech.Fixtures.FixtureEditorDisplayee.html","topicUid":"Hi.NcMech.Fixtures.FixtureEditorDisplayee","type":"Class"},{"name":"FixtureEditorDisplayeeConfig","href":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html","topicHref":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html","topicUid":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig","type":"Class"}]},{"name":"Hi.NcMech.Holders","href":"Hi.NcMech.Holders.html","topicHref":"Hi.NcMech.Holders.html","topicUid":"Hi.NcMech.Holders","type":"Namespace","items":[{"name":"CylindroidHolder","href":"Hi.NcMech.Holders.CylindroidHolder.html","topicHref":"Hi.NcMech.Holders.CylindroidHolder.html","topicUid":"Hi.NcMech.Holders.CylindroidHolder","type":"Class"},{"name":"FreeformHolder","href":"Hi.NcMech.Holders.FreeformHolder.html","topicHref":"Hi.NcMech.Holders.FreeformHolder.html","topicUid":"Hi.NcMech.Holders.FreeformHolder","type":"Class"},{"name":"HolderEditorDisplayee","href":"Hi.NcMech.Holders.HolderEditorDisplayee.html","topicHref":"Hi.NcMech.Holders.HolderEditorDisplayee.html","topicUid":"Hi.NcMech.Holders.HolderEditorDisplayee","type":"Class"},{"name":"IHolder","href":"Hi.NcMech.Holders.IHolder.html","topicHref":"Hi.NcMech.Holders.IHolder.html","topicUid":"Hi.NcMech.Holders.IHolder","type":"Interface"}]},{"name":"Hi.NcMech.Solids","href":"Hi.NcMech.Solids.html","topicHref":"Hi.NcMech.Solids.html","topicUid":"Hi.NcMech.Solids","type":"Namespace","items":[{"name":"IGetSolid","href":"Hi.NcMech.Solids.IGetSolid.html","topicHref":"Hi.NcMech.Solids.IGetSolid.html","topicUid":"Hi.NcMech.Solids.IGetSolid","type":"Interface"},{"name":"Solid","href":"Hi.NcMech.Solids.Solid.html","topicHref":"Hi.NcMech.Solids.Solid.html","topicUid":"Hi.NcMech.Solids.Solid","type":"Class"},{"name":"Solid.RenderingModeEnum","href":"Hi.NcMech.Solids.Solid.RenderingModeEnum.html","topicHref":"Hi.NcMech.Solids.Solid.RenderingModeEnum.html","topicUid":"Hi.NcMech.Solids.Solid.RenderingModeEnum","type":"Enum"},{"name":"SolidFuncSource","href":"Hi.NcMech.Solids.SolidFuncSource.html","topicHref":"Hi.NcMech.Solids.SolidFuncSource.html","topicUid":"Hi.NcMech.Solids.SolidFuncSource","type":"Class"}]},{"name":"Hi.NcMech.Topo","href":"Hi.NcMech.Topo.html","topicHref":"Hi.NcMech.Topo.html","topicUid":"Hi.NcMech.Topo","type":"Namespace","items":[{"name":"INcStroke","href":"Hi.NcMech.Topo.INcStroke.html","topicHref":"Hi.NcMech.Topo.INcStroke.html","topicUid":"Hi.NcMech.Topo.INcStroke","type":"Interface"},{"name":"INcTransformer","href":"Hi.NcMech.Topo.INcTransformer.html","topicHref":"Hi.NcMech.Topo.INcTransformer.html","topicUid":"Hi.NcMech.Topo.INcTransformer","type":"Interface"},{"name":"ITopoBrick","href":"Hi.NcMech.Topo.ITopoBrick.html","topicHref":"Hi.NcMech.Topo.ITopoBrick.html","topicUid":"Hi.NcMech.Topo.ITopoBrick","type":"Interface"},{"name":"NcRotation","href":"Hi.NcMech.Topo.NcRotation.html","topicHref":"Hi.NcMech.Topo.NcRotation.html","topicUid":"Hi.NcMech.Topo.NcRotation","type":"Class"},{"name":"NcTranslation","href":"Hi.NcMech.Topo.NcTranslation.html","topicHref":"Hi.NcMech.Topo.NcTranslation.html","topicUid":"Hi.NcMech.Topo.NcTranslation","type":"Class"},{"name":"SolidSourceTopoBrick","href":"Hi.NcMech.Topo.SolidSourceTopoBrick.html","topicHref":"Hi.NcMech.Topo.SolidSourceTopoBrick.html","topicUid":"Hi.NcMech.Topo.SolidSourceTopoBrick","type":"Class"},{"name":"StlSourceTopoBrick","href":"Hi.NcMech.Topo.StlSourceTopoBrick.html","topicHref":"Hi.NcMech.Topo.StlSourceTopoBrick.html","topicUid":"Hi.NcMech.Topo.StlSourceTopoBrick","type":"Class"}]},{"name":"Hi.NcMech.Workpieces","href":"Hi.NcMech.Workpieces.html","topicHref":"Hi.NcMech.Workpieces.html","topicUid":"Hi.NcMech.Workpieces","type":"Namespace","items":[{"name":"Workpiece","href":"Hi.NcMech.Workpieces.Workpiece.html","topicHref":"Hi.NcMech.Workpieces.Workpiece.html","topicUid":"Hi.NcMech.Workpieces.Workpiece","type":"Class"},{"name":"WorkpieceEditorDisplayee","href":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html","topicHref":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html","topicUid":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee","type":"Class"},{"name":"WorkpieceEditorDisplayeeConfig","href":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html","topicHref":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html","topicUid":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig","type":"Class"}]},{"name":"Hi.NcMech.Xyzabc","href":"Hi.NcMech.Xyzabc.html","topicHref":"Hi.NcMech.Xyzabc.html","topicUid":"Hi.NcMech.Xyzabc","type":"Namespace","items":[{"name":"CodeXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool","type":"Class"},{"name":"CodeXyzabcMachineToolUri","href":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html","topicHref":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html","topicUid":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri","type":"Class"},{"name":"GeneralXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool","type":"Class"},{"name":"IGetCodeXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool","type":"Interface"},{"name":"IXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.IXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.IXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.IXyzabcMachineTool","type":"Interface"}]},{"name":"Hi.NcOpt","href":"Hi.NcOpt.html","topicHref":"Hi.NcOpt.html","topicUid":"Hi.NcOpt","type":"Namespace","items":[{"name":"CuttingVelocityOptLimit","href":"Hi.NcOpt.CuttingVelocityOptLimit.html","topicHref":"Hi.NcOpt.CuttingVelocityOptLimit.html","topicUid":"Hi.NcOpt.CuttingVelocityOptLimit","type":"Class"},{"name":"FixedFeedPerCycleOptLimit","href":"Hi.NcOpt.FixedFeedPerCycleOptLimit.html","topicHref":"Hi.NcOpt.FixedFeedPerCycleOptLimit.html","topicUid":"Hi.NcOpt.FixedFeedPerCycleOptLimit","type":"Class"},{"name":"FixedFeedPerToothOptLimit","href":"Hi.NcOpt.FixedFeedPerToothOptLimit.html","topicHref":"Hi.NcOpt.FixedFeedPerToothOptLimit.html","topicUid":"Hi.NcOpt.FixedFeedPerToothOptLimit","type":"Class"},{"name":"ICutterOptLimitHost","href":"Hi.NcOpt.ICutterOptLimitHost.html","topicHref":"Hi.NcOpt.ICutterOptLimitHost.html","topicUid":"Hi.NcOpt.ICutterOptLimitHost","type":"Interface"},{"name":"ICutterOptOption","href":"Hi.NcOpt.ICutterOptOption.html","topicHref":"Hi.NcOpt.ICutterOptOption.html","topicUid":"Hi.NcOpt.ICutterOptOption","type":"Interface"},{"name":"ICuttingVelocityOptLimit","href":"Hi.NcOpt.ICuttingVelocityOptLimit.html","topicHref":"Hi.NcOpt.ICuttingVelocityOptLimit.html","topicUid":"Hi.NcOpt.ICuttingVelocityOptLimit","type":"Interface"},{"name":"IFeedPerToothOptLimit","href":"Hi.NcOpt.IFeedPerToothOptLimit.html","topicHref":"Hi.NcOpt.IFeedPerToothOptLimit.html","topicUid":"Hi.NcOpt.IFeedPerToothOptLimit","type":"Interface"},{"name":"MillingCutterOptOption","href":"Hi.NcOpt.MillingCutterOptOption.html","topicHref":"Hi.NcOpt.MillingCutterOptOption.html","topicUid":"Hi.NcOpt.MillingCutterOptOption","type":"Class"},{"name":"NcOptOption","href":"Hi.NcOpt.NcOptOption.html","topicHref":"Hi.NcOpt.NcOptOption.html","topicUid":"Hi.NcOpt.NcOptOption","type":"Class"},{"name":"NcOptProc","href":"Hi.NcOpt.NcOptProc.html","topicHref":"Hi.NcOpt.NcOptProc.html","topicUid":"Hi.NcOpt.NcOptProc","type":"Class"},{"name":"NcOptimizationEmbeddedLogMode","href":"Hi.NcOpt.NcOptimizationEmbeddedLogMode.html","topicHref":"Hi.NcOpt.NcOptimizationEmbeddedLogMode.html","topicUid":"Hi.NcOpt.NcOptimizationEmbeddedLogMode","type":"Enum"},{"name":"ShapeBasedCutterOptLimit","href":"Hi.NcOpt.ShapeBasedCutterOptLimit.html","topicHref":"Hi.NcOpt.ShapeBasedCutterOptLimit.html","topicUid":"Hi.NcOpt.ShapeBasedCutterOptLimit","type":"Class"}]},{"name":"Hi.NcStepUtils","href":"Hi.NcStepUtils.html","topicHref":"Hi.NcStepUtils.html","topicUid":"Hi.NcStepUtils","type":"Namespace","items":[{"name":"IGetNcStep0","href":"Hi.NcStepUtils.IGetNcStep0.html","topicHref":"Hi.NcStepUtils.IGetNcStep0.html","topicUid":"Hi.NcStepUtils.IGetNcStep0","type":"Interface"},{"name":"INcStep0","href":"Hi.NcStepUtils.INcStep0.html","topicHref":"Hi.NcStepUtils.INcStep0.html","topicUid":"Hi.NcStepUtils.INcStep0","type":"Interface"},{"name":"INcStepMonitee","href":"Hi.NcStepUtils.INcStepMonitee.html","topicHref":"Hi.NcStepUtils.INcStepMonitee.html","topicUid":"Hi.NcStepUtils.INcStepMonitee","type":"Interface"},{"name":"NcStepUtil","href":"Hi.NcStepUtils.NcStepUtil.html","topicHref":"Hi.NcStepUtils.NcStepUtil.html","topicUid":"Hi.NcStepUtils.NcStepUtil","type":"Class"}]},{"name":"Hi.Numerical","href":"Hi.Numerical.html","topicHref":"Hi.Numerical.html","topicUid":"Hi.Numerical","type":"Namespace","items":[{"name":"CncBrand","href":"Hi.Numerical.CncBrand.html","topicHref":"Hi.Numerical.CncBrand.html","topicUid":"Hi.Numerical.CncBrand","type":"Enum"},{"name":"CommentMark","href":"Hi.Numerical.CommentMark.html","topicHref":"Hi.Numerical.CommentMark.html","topicUid":"Hi.Numerical.CommentMark","type":"Enum"},{"name":"CoordinateEntryDisplayee","href":"Hi.Numerical.CoordinateEntryDisplayee.html","topicHref":"Hi.Numerical.CoordinateEntryDisplayee.html","topicUid":"Hi.Numerical.CoordinateEntryDisplayee","type":"Class"},{"name":"CoordinateEntryRenderingFlag","href":"Hi.Numerical.CoordinateEntryRenderingFlag.html","topicHref":"Hi.Numerical.CoordinateEntryRenderingFlag.html","topicUid":"Hi.Numerical.CoordinateEntryRenderingFlag","type":"Enum"},{"name":"CoordinateInterpolationMode","href":"Hi.Numerical.CoordinateInterpolationMode.html","topicHref":"Hi.Numerical.CoordinateInterpolationMode.html","topicUid":"Hi.Numerical.CoordinateInterpolationMode","type":"Enum"},{"name":"FlexDictionaryUtil","href":"Hi.Numerical.FlexDictionaryUtil.html","topicHref":"Hi.Numerical.FlexDictionaryUtil.html","topicUid":"Hi.Numerical.FlexDictionaryUtil","type":"Class"},{"name":"HeidenhainCoordinateEntryDisplayee","href":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee.html","topicHref":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee.html","topicUid":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee","type":"Class"},{"name":"IFlexDictionaryHost","href":"Hi.Numerical.IFlexDictionaryHost-1.html","topicHref":"Hi.Numerical.IFlexDictionaryHost-1.html","topicUid":"Hi.Numerical.IFlexDictionaryHost`1","type":"Interface"},{"name":"IGetFeedrate","href":"Hi.Numerical.IGetFeedrate.html","topicHref":"Hi.Numerical.IGetFeedrate.html","topicUid":"Hi.Numerical.IGetFeedrate","type":"Interface"},{"name":"IGetSpindleSpeed","href":"Hi.Numerical.IGetSpindleSpeed.html","topicHref":"Hi.Numerical.IGetSpindleSpeed.html","topicUid":"Hi.Numerical.IGetSpindleSpeed","type":"Interface"},{"name":"ISetFeedrate","href":"Hi.Numerical.ISetFeedrate.html","topicHref":"Hi.Numerical.ISetFeedrate.html","topicUid":"Hi.Numerical.ISetFeedrate","type":"Interface"},{"name":"ISetSpindleSpeed","href":"Hi.Numerical.ISetSpindleSpeed.html","topicHref":"Hi.Numerical.ISetSpindleSpeed.html","topicUid":"Hi.Numerical.ISetSpindleSpeed","type":"Interface"},{"name":"IsoCoordinateEntryDisplayee","href":"Hi.Numerical.IsoCoordinateEntryDisplayee.html","topicHref":"Hi.Numerical.IsoCoordinateEntryDisplayee.html","topicUid":"Hi.Numerical.IsoCoordinateEntryDisplayee","type":"Class"},{"name":"IsoCoordinateTable","href":"Hi.Numerical.IsoCoordinateTable.html","topicHref":"Hi.Numerical.IsoCoordinateTable.html","topicUid":"Hi.Numerical.IsoCoordinateTable","type":"Class"},{"name":"MechNcUtil","href":"Hi.Numerical.MechNcUtil.html","topicHref":"Hi.Numerical.MechNcUtil.html","topicUid":"Hi.Numerical.MechNcUtil","type":"Class"},{"name":"MillingToolOffsetTable","href":"Hi.Numerical.MillingToolOffsetTable.html","topicHref":"Hi.Numerical.MillingToolOffsetTable.html","topicUid":"Hi.Numerical.MillingToolOffsetTable","type":"Class"},{"name":"MillingToolOffsetTableRow","href":"Hi.Numerical.MillingToolOffsetTableRow.html","topicHref":"Hi.Numerical.MillingToolOffsetTableRow.html","topicUid":"Hi.Numerical.MillingToolOffsetTableRow","type":"Class"},{"name":"NcComment","href":"Hi.Numerical.NcComment.html","topicHref":"Hi.Numerical.NcComment.html","topicUid":"Hi.Numerical.NcComment","type":"Class"},{"name":"NcEnv","href":"Hi.Numerical.NcEnv.html","topicHref":"Hi.Numerical.NcEnv.html","topicUid":"Hi.Numerical.NcEnv","type":"Class"},{"name":"NcFlag","href":"Hi.Numerical.NcFlag.html","topicHref":"Hi.Numerical.NcFlag.html","topicUid":"Hi.Numerical.NcFlag","type":"Enum"},{"name":"NcFlagUtil","href":"Hi.Numerical.NcFlagUtil.html","topicHref":"Hi.Numerical.NcFlagUtil.html","topicUid":"Hi.Numerical.NcFlagUtil","type":"Class"},{"name":"NcGroup00","href":"Hi.Numerical.NcGroup00.html","topicHref":"Hi.Numerical.NcGroup00.html","topicUid":"Hi.Numerical.NcGroup00","type":"Enum"},{"name":"NcGroup01","href":"Hi.Numerical.NcGroup01.html","topicHref":"Hi.Numerical.NcGroup01.html","topicUid":"Hi.Numerical.NcGroup01","type":"Enum"},{"name":"NcGroup02","href":"Hi.Numerical.NcGroup02.html","topicHref":"Hi.Numerical.NcGroup02.html","topicUid":"Hi.Numerical.NcGroup02","type":"Enum"},{"name":"NcGroup03","href":"Hi.Numerical.NcGroup03.html","topicHref":"Hi.Numerical.NcGroup03.html","topicUid":"Hi.Numerical.NcGroup03","type":"Enum"},{"name":"NcGroup05","href":"Hi.Numerical.NcGroup05.html","topicHref":"Hi.Numerical.NcGroup05.html","topicUid":"Hi.Numerical.NcGroup05","type":"Enum"},{"name":"NcGroup06","href":"Hi.Numerical.NcGroup06.html","topicHref":"Hi.Numerical.NcGroup06.html","topicUid":"Hi.Numerical.NcGroup06","type":"Enum"},{"name":"NcGroup07","href":"Hi.Numerical.NcGroup07.html","topicHref":"Hi.Numerical.NcGroup07.html","topicUid":"Hi.Numerical.NcGroup07","type":"Enum"},{"name":"NcGroup08","href":"Hi.Numerical.NcGroup08.html","topicHref":"Hi.Numerical.NcGroup08.html","topicUid":"Hi.Numerical.NcGroup08","type":"Enum"},{"name":"NcGroup09","href":"Hi.Numerical.NcGroup09.html","topicHref":"Hi.Numerical.NcGroup09.html","topicUid":"Hi.Numerical.NcGroup09","type":"Enum"},{"name":"NcGroup10","href":"Hi.Numerical.NcGroup10.html","topicHref":"Hi.Numerical.NcGroup10.html","topicUid":"Hi.Numerical.NcGroup10","type":"Enum"},{"name":"NcGroup13","href":"Hi.Numerical.NcGroup13.html","topicHref":"Hi.Numerical.NcGroup13.html","topicUid":"Hi.Numerical.NcGroup13","type":"Enum"},{"name":"NcGroup14","href":"Hi.Numerical.NcGroup14.html","topicHref":"Hi.Numerical.NcGroup14.html","topicUid":"Hi.Numerical.NcGroup14","type":"Enum"},{"name":"NcGroup15","href":"Hi.Numerical.NcGroup15.html","topicHref":"Hi.Numerical.NcGroup15.html","topicUid":"Hi.Numerical.NcGroup15","type":"Enum"},{"name":"NcGroup16","href":"Hi.Numerical.NcGroup16.html","topicHref":"Hi.Numerical.NcGroup16.html","topicUid":"Hi.Numerical.NcGroup16","type":"Enum"},{"name":"NcGroup21","href":"Hi.Numerical.NcGroup21.html","topicHref":"Hi.Numerical.NcGroup21.html","topicUid":"Hi.Numerical.NcGroup21","type":"Enum"},{"name":"NcGroupAttribute","href":"Hi.Numerical.NcGroupAttribute.html","topicHref":"Hi.Numerical.NcGroupAttribute.html","topicUid":"Hi.Numerical.NcGroupAttribute","type":"Class"},{"name":"NcGroupHeidenhainM107M108","href":"Hi.Numerical.NcGroupHeidenhainM107M108.html","topicHref":"Hi.Numerical.NcGroupHeidenhainM107M108.html","topicUid":"Hi.Numerical.NcGroupHeidenhainM107M108","type":"Enum"},{"name":"NcGroupHeidenhainPlane","href":"Hi.Numerical.NcGroupHeidenhainPlane.html","topicHref":"Hi.Numerical.NcGroupHeidenhainPlane.html","topicUid":"Hi.Numerical.NcGroupHeidenhainPlane","type":"Enum"},{"name":"NcGroupHeidenhainShortestRotaryPath","href":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath.html","topicHref":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath.html","topicUid":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath","type":"Enum"},{"name":"NcGroupSpindleRotation","href":"Hi.Numerical.NcGroupSpindleRotation.html","topicHref":"Hi.Numerical.NcGroupSpindleRotation.html","topicUid":"Hi.Numerical.NcGroupSpindleRotation","type":"Enum"},{"name":"NcLifeCycleAttribute","href":"Hi.Numerical.NcLifeCycleAttribute.html","topicHref":"Hi.Numerical.NcLifeCycleAttribute.html","topicUid":"Hi.Numerical.NcLifeCycleAttribute","type":"Class"},{"name":"NcLifeCycleMode","href":"Hi.Numerical.NcLifeCycleMode.html","topicHref":"Hi.Numerical.NcLifeCycleMode.html","topicUid":"Hi.Numerical.NcLifeCycleMode","type":"Enum"},{"name":"NcLine","href":"Hi.Numerical.NcLine.html","topicHref":"Hi.Numerical.NcLine.html","topicUid":"Hi.Numerical.NcLine","type":"Class"},{"name":"NcNameAttribute","href":"Hi.Numerical.NcNameAttribute.html","topicHref":"Hi.Numerical.NcNameAttribute.html","topicUid":"Hi.Numerical.NcNameAttribute","type":"Class"},{"name":"NcNoteCache","href":"Hi.Numerical.NcNoteCache.html","topicHref":"Hi.Numerical.NcNoteCache.html","topicUid":"Hi.Numerical.NcNoteCache","type":"Class"},{"name":"NcProc","href":"Hi.Numerical.NcProc.html","topicHref":"Hi.Numerical.NcProc.html","topicUid":"Hi.Numerical.NcProc","type":"Class"},{"name":"NcStepFileOutputKit","href":"Hi.Numerical.NcStepFileOutputKit.html","topicHref":"Hi.Numerical.NcStepFileOutputKit.html","topicUid":"Hi.Numerical.NcStepFileOutputKit","type":"Class"},{"name":"NcStepMonitor","href":"Hi.Numerical.NcStepMonitor.html","topicHref":"Hi.Numerical.NcStepMonitor.html","topicUid":"Hi.Numerical.NcStepMonitor","type":"Class"},{"name":"NcUtil","href":"Hi.Numerical.NcUtil.html","topicHref":"Hi.Numerical.NcUtil.html","topicUid":"Hi.Numerical.NcUtil","type":"Class"},{"name":"NcWarningSceneEnum","href":"Hi.Numerical.NcWarningSceneEnum.html","topicHref":"Hi.Numerical.NcWarningSceneEnum.html","topicUid":"Hi.Numerical.NcWarningSceneEnum","type":"Enum"},{"name":"NumericUtil","href":"Hi.Numerical.NumericUtil.html","topicHref":"Hi.Numerical.NumericUtil.html","topicUid":"Hi.Numerical.NumericUtil","type":"Class"},{"name":"PolarEntry","href":"Hi.Numerical.PolarEntry.html","topicHref":"Hi.Numerical.PolarEntry.html","topicUid":"Hi.Numerical.PolarEntry","type":"Class"},{"name":"PolarEntry.PolarModeDirEnum","href":"Hi.Numerical.PolarEntry.PolarModeDirEnum.html","topicHref":"Hi.Numerical.PolarEntry.PolarModeDirEnum.html","topicUid":"Hi.Numerical.PolarEntry.PolarModeDirEnum","type":"Enum"},{"name":"RadiusCompensationBuf","href":"Hi.Numerical.RadiusCompensationBuf.html","topicHref":"Hi.Numerical.RadiusCompensationBuf.html","topicUid":"Hi.Numerical.RadiusCompensationBuf","type":"Class"},{"name":"SpindleDirection","href":"Hi.Numerical.SpindleDirection.html","topicHref":"Hi.Numerical.SpindleDirection.html","topicUid":"Hi.Numerical.SpindleDirection","type":"Enum"},{"name":"SubStringKit","href":"Hi.Numerical.SubStringKit.html","topicHref":"Hi.Numerical.SubStringKit.html","topicUid":"Hi.Numerical.SubStringKit","type":"Class"},{"name":"SubStringKit.ActivationMode","href":"Hi.Numerical.SubStringKit.ActivationMode.html","topicHref":"Hi.Numerical.SubStringKit.ActivationMode.html","topicUid":"Hi.Numerical.SubStringKit.ActivationMode","type":"Enum"},{"name":"ToolConfigNotFoundException","href":"Hi.Numerical.ToolConfigNotFoundException.html","topicHref":"Hi.Numerical.ToolConfigNotFoundException.html","topicUid":"Hi.Numerical.ToolConfigNotFoundException","type":"Class"}]},{"name":"Hi.Numerical.Acts","href":"Hi.Numerical.Acts.html","topicHref":"Hi.Numerical.Acts.html","topicUid":"Hi.Numerical.Acts","type":"Namespace","items":[{"name":"ActActualTime","href":"Hi.Numerical.Acts.ActActualTime.html","topicHref":"Hi.Numerical.Acts.ActActualTime.html","topicUid":"Hi.Numerical.Acts.ActActualTime","type":"Class"},{"name":"ActClArc","href":"Hi.Numerical.Acts.ActClArc.html","topicHref":"Hi.Numerical.Acts.ActClArc.html","topicUid":"Hi.Numerical.Acts.ActClArc","type":"Class"},{"name":"ActClLinear","href":"Hi.Numerical.Acts.ActClLinear.html","topicHref":"Hi.Numerical.Acts.ActClLinear.html","topicUid":"Hi.Numerical.Acts.ActClLinear","type":"Class"},{"name":"ActClStep","href":"Hi.Numerical.Acts.ActClStep.html","topicHref":"Hi.Numerical.Acts.ActClStep.html","topicUid":"Hi.Numerical.Acts.ActClStep","type":"Class"},{"name":"ActClTeleport","href":"Hi.Numerical.Acts.ActClTeleport.html","topicHref":"Hi.Numerical.Acts.ActClTeleport.html","topicUid":"Hi.Numerical.Acts.ActClTeleport","type":"Class"},{"name":"ActCooling","href":"Hi.Numerical.Acts.ActCooling.html","topicHref":"Hi.Numerical.Acts.ActCooling.html","topicUid":"Hi.Numerical.Acts.ActCooling","type":"Class"},{"name":"ActData","href":"Hi.Numerical.Acts.ActData.html","topicHref":"Hi.Numerical.Acts.ActData.html","topicUid":"Hi.Numerical.Acts.ActData","type":"Class"},{"name":"ActDelay","href":"Hi.Numerical.Acts.ActDelay.html","topicHref":"Hi.Numerical.Acts.ActDelay.html","topicUid":"Hi.Numerical.Acts.ActDelay","type":"Class"},{"name":"ActFeedrate","href":"Hi.Numerical.Acts.ActFeedrate.html","topicHref":"Hi.Numerical.Acts.ActFeedrate.html","topicUid":"Hi.Numerical.Acts.ActFeedrate","type":"Class"},{"name":"ActHiddenStateChanged","href":"Hi.Numerical.Acts.ActHiddenStateChanged.html","topicHref":"Hi.Numerical.Acts.ActHiddenStateChanged.html","topicUid":"Hi.Numerical.Acts.ActHiddenStateChanged","type":"Class"},{"name":"ActIntentionalSkip","href":"Hi.Numerical.Acts.ActIntentionalSkip.html","topicHref":"Hi.Numerical.Acts.ActIntentionalSkip.html","topicUid":"Hi.Numerical.Acts.ActIntentionalSkip","type":"Class"},{"name":"ActLineBegin","href":"Hi.Numerical.Acts.ActLineBegin.html","topicHref":"Hi.Numerical.Acts.ActLineBegin.html","topicUid":"Hi.Numerical.Acts.ActLineBegin","type":"Class"},{"name":"ActLineCsScript","href":"Hi.Numerical.Acts.ActLineCsScript.html","topicHref":"Hi.Numerical.Acts.ActLineCsScript.html","topicUid":"Hi.Numerical.Acts.ActLineCsScript","type":"Class"},{"name":"ActLineEnd","href":"Hi.Numerical.Acts.ActLineEnd.html","topicHref":"Hi.Numerical.Acts.ActLineEnd.html","topicUid":"Hi.Numerical.Acts.ActLineEnd","type":"Class"},{"name":"ActLinearClAndLinearMcAbcMcXyzabcContour","href":"Hi.Numerical.Acts.ActLinearClAndLinearMcAbcMcXyzabcContour.html","topicHref":"Hi.Numerical.Acts.ActLinearClAndLinearMcAbcMcXyzabcContour.html","topicUid":"Hi.Numerical.Acts.ActLinearClAndLinearMcAbcMcXyzabcContour","type":"Class"},{"name":"ActMcPolarLinearContour","href":"Hi.Numerical.Acts.ActMcPolarLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcPolarLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcPolarLinearContour","type":"Class"},{"name":"ActMcXyzLinearContour","href":"Hi.Numerical.Acts.ActMcXyzLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcXyzLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcXyzLinearContour","type":"Class"},{"name":"ActMcXyzStep","href":"Hi.Numerical.Acts.ActMcXyzStep.html","topicHref":"Hi.Numerical.Acts.ActMcXyzStep.html","topicUid":"Hi.Numerical.Acts.ActMcXyzStep","type":"Class"},{"name":"ActMcXyzabcOrientableLinearContour","href":"Hi.Numerical.Acts.ActMcXyzabcOrientableLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcXyzabcOrientableLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcXyzabcOrientableLinearContour","type":"Class"},{"name":"ActMcXyzabcStep","href":"Hi.Numerical.Acts.ActMcXyzabcStep.html","topicHref":"Hi.Numerical.Acts.ActMcXyzabcStep.html","topicUid":"Hi.Numerical.Acts.ActMcXyzabcStep","type":"Class"},{"name":"ActRapid","href":"Hi.Numerical.Acts.ActRapid.html","topicHref":"Hi.Numerical.Acts.ActRapid.html","topicUid":"Hi.Numerical.Acts.ActRapid","type":"Class"},{"name":"ActSpindleDirection","href":"Hi.Numerical.Acts.ActSpindleDirection.html","topicHref":"Hi.Numerical.Acts.ActSpindleDirection.html","topicUid":"Hi.Numerical.Acts.ActSpindleDirection","type":"Class"},{"name":"ActSpindleSpeed","href":"Hi.Numerical.Acts.ActSpindleSpeed.html","topicHref":"Hi.Numerical.Acts.ActSpindleSpeed.html","topicUid":"Hi.Numerical.Acts.ActSpindleSpeed","type":"Class"},{"name":"ActSpiralMcXyzContour","href":"Hi.Numerical.Acts.ActSpiralMcXyzContour.html","topicHref":"Hi.Numerical.Acts.ActSpiralMcXyzContour.html","topicUid":"Hi.Numerical.Acts.ActSpiralMcXyzContour","type":"Class"},{"name":"ActStateRunner","href":"Hi.Numerical.Acts.ActStateRunner.html","topicHref":"Hi.Numerical.Acts.ActStateRunner.html","topicUid":"Hi.Numerical.Acts.ActStateRunner","type":"Class"},{"name":"ActToolingStep","href":"Hi.Numerical.Acts.ActToolingStep.html","topicHref":"Hi.Numerical.Acts.ActToolingStep.html","topicUid":"Hi.Numerical.Acts.ActToolingStep","type":"Class"},{"name":"ActToolingTeleport","href":"Hi.Numerical.Acts.ActToolingTeleport.html","topicHref":"Hi.Numerical.Acts.ActToolingTeleport.html","topicUid":"Hi.Numerical.Acts.ActToolingTeleport","type":"Class"},{"name":"ActUnknownSkip","href":"Hi.Numerical.Acts.ActUnknownSkip.html","topicHref":"Hi.Numerical.Acts.ActUnknownSkip.html","topicUid":"Hi.Numerical.Acts.ActUnknownSkip","type":"Class"},{"name":"ActUtil","href":"Hi.Numerical.Acts.ActUtil.html","topicHref":"Hi.Numerical.Acts.ActUtil.html","topicUid":"Hi.Numerical.Acts.ActUtil","type":"Class"},{"name":"IAct","href":"Hi.Numerical.Acts.IAct.html","topicHref":"Hi.Numerical.Acts.IAct.html","topicUid":"Hi.Numerical.Acts.IAct","type":"Interface"},{"name":"IActClMove","href":"Hi.Numerical.Acts.IActClMove.html","topicHref":"Hi.Numerical.Acts.IActClMove.html","topicUid":"Hi.Numerical.Acts.IActClMove","type":"Interface"},{"name":"IActDuration","href":"Hi.Numerical.Acts.IActDuration.html","topicHref":"Hi.Numerical.Acts.IActDuration.html","topicUid":"Hi.Numerical.Acts.IActDuration","type":"Interface"},{"name":"IActMachineStep","href":"Hi.Numerical.Acts.IActMachineStep.html","topicHref":"Hi.Numerical.Acts.IActMachineStep.html","topicUid":"Hi.Numerical.Acts.IActMachineStep","type":"Interface"},{"name":"IActMcXyzContour","href":"Hi.Numerical.Acts.IActMcXyzContour.html","topicHref":"Hi.Numerical.Acts.IActMcXyzContour.html","topicUid":"Hi.Numerical.Acts.IActMcXyzContour","type":"Interface"},{"name":"IActMcXyzabcContour","href":"Hi.Numerical.Acts.IActMcXyzabcContour.html","topicHref":"Hi.Numerical.Acts.IActMcXyzabcContour.html","topicUid":"Hi.Numerical.Acts.IActMcXyzabcContour","type":"Interface"},{"name":"IActSkip","href":"Hi.Numerical.Acts.IActSkip.html","topicHref":"Hi.Numerical.Acts.IActSkip.html","topicUid":"Hi.Numerical.Acts.IActSkip","type":"Interface"},{"name":"IActTooling","href":"Hi.Numerical.Acts.IActTooling.html","topicHref":"Hi.Numerical.Acts.IActTooling.html","topicUid":"Hi.Numerical.Acts.IActTooling","type":"Interface"},{"name":"IWorkTimeAttrib","href":"Hi.Numerical.Acts.IWorkTimeAttrib.html","topicHref":"Hi.Numerical.Acts.IWorkTimeAttrib.html","topicUid":"Hi.Numerical.Acts.IWorkTimeAttrib","type":"Interface"},{"name":"IWorkTimeGetter","href":"Hi.Numerical.Acts.IWorkTimeGetter.html","topicHref":"Hi.Numerical.Acts.IWorkTimeGetter.html","topicUid":"Hi.Numerical.Acts.IWorkTimeGetter","type":"Interface"},{"name":"IWorkTimeSetter","href":"Hi.Numerical.Acts.IWorkTimeSetter.html","topicHref":"Hi.Numerical.Acts.IWorkTimeSetter.html","topicUid":"Hi.Numerical.Acts.IWorkTimeSetter","type":"Interface"}]},{"name":"Hi.Numerical.FilePlayers","href":"Hi.Numerical.FilePlayers.html","topicHref":"Hi.Numerical.FilePlayers.html","topicUid":"Hi.Numerical.FilePlayers","type":"Namespace","items":[{"name":"CsvRunner","href":"Hi.Numerical.FilePlayers.CsvRunner.html","topicHref":"Hi.Numerical.FilePlayers.CsvRunner.html","topicUid":"Hi.Numerical.FilePlayers.CsvRunner","type":"Class"},{"name":"CsvRunnerConfig","href":"Hi.Numerical.FilePlayers.CsvRunnerConfig.html","topicHref":"Hi.Numerical.FilePlayers.CsvRunnerConfig.html","topicUid":"Hi.Numerical.FilePlayers.CsvRunnerConfig","type":"Class"},{"name":"IControlRunner","href":"Hi.Numerical.FilePlayers.IControlRunner.html","topicHref":"Hi.Numerical.FilePlayers.IControlRunner.html","topicUid":"Hi.Numerical.FilePlayers.IControlRunner","type":"Interface"},{"name":"NcRunner","href":"Hi.Numerical.FilePlayers.NcRunner.html","topicHref":"Hi.Numerical.FilePlayers.NcRunner.html","topicUid":"Hi.Numerical.FilePlayers.NcRunner","type":"Class"},{"name":"SourceCommandActEntry","href":"Hi.Numerical.FilePlayers.SourceCommandActEntry.html","topicHref":"Hi.Numerical.FilePlayers.SourceCommandActEntry.html","topicUid":"Hi.Numerical.FilePlayers.SourceCommandActEntry","type":"Class"}]},{"name":"Hi.Numerical.MachiningMotionResolutionUtils","href":"Hi.Numerical.MachiningMotionResolutionUtils.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils","type":"Namespace","items":[{"name":"FeedPerCycleMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution","type":"Class"},{"name":"FeedPerToothMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution","type":"Class"},{"name":"FeedPerToothNcResolution0","href":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothNcResolution0.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothNcResolution0.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothNcResolution0","type":"Class"},{"name":"FixedMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution","type":"Class"},{"name":"IMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution","type":"Interface"}]},{"name":"Hi.Numerical.NcArgs","href":"Hi.Numerical.NcArgs.html","topicHref":"Hi.Numerical.NcArgs.html","topicUid":"Hi.Numerical.NcArgs","type":"Namespace","items":[{"name":"ArcNcArg","href":"Hi.Numerical.NcArgs.ArcNcArg.html","topicHref":"Hi.Numerical.NcArgs.ArcNcArg.html","topicUid":"Hi.Numerical.NcArgs.ArcNcArg","type":"Class"},{"name":"G28Arg","href":"Hi.Numerical.NcArgs.G28Arg.html","topicHref":"Hi.Numerical.NcArgs.G28Arg.html","topicUid":"Hi.Numerical.NcArgs.G28Arg","type":"Class"},{"name":"Group07NcArg","href":"Hi.Numerical.NcArgs.Group07NcArg.html","topicHref":"Hi.Numerical.NcArgs.Group07NcArg.html","topicUid":"Hi.Numerical.NcArgs.Group07NcArg","type":"Class"},{"name":"Group09NcArg","href":"Hi.Numerical.NcArgs.Group09NcArg.html","topicHref":"Hi.Numerical.NcArgs.Group09NcArg.html","topicUid":"Hi.Numerical.NcArgs.Group09NcArg","type":"Class"},{"name":"HeidenhainCycleDef7Arg","href":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg.html","topicHref":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg.html","topicUid":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg","type":"Class"},{"name":"HeidenhainPlaneSpatialArg","href":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg.html","topicHref":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg.html","topicUid":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg","type":"Class"},{"name":"IHeidenhainBlockCacheArg","href":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg.html","topicHref":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg.html","topicUid":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg","type":"Interface"},{"name":"IHeidenhainPlaneArg","href":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg.html","topicHref":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg.html","topicUid":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg","type":"Interface"},{"name":"ITiltPlaneNcArg","href":"Hi.Numerical.NcArgs.ITiltPlaneNcArg.html","topicHref":"Hi.Numerical.NcArgs.ITiltPlaneNcArg.html","topicUid":"Hi.Numerical.NcArgs.ITiltPlaneNcArg","type":"Interface"},{"name":"NcArgCycle800","href":"Hi.Numerical.NcArgs.NcArgCycle800.html","topicHref":"Hi.Numerical.NcArgs.NcArgCycle800.html","topicUid":"Hi.Numerical.NcArgs.NcArgCycle800","type":"Class"},{"name":"NcArgG68","href":"Hi.Numerical.NcArgs.NcArgG68.html","topicHref":"Hi.Numerical.NcArgs.NcArgG68.html","topicUid":"Hi.Numerical.NcArgs.NcArgG68","type":"Class"},{"name":"NcArgG68p2","href":"Hi.Numerical.NcArgs.NcArgG68p2.html","topicHref":"Hi.Numerical.NcArgs.NcArgG68p2.html","topicUid":"Hi.Numerical.NcArgs.NcArgG68p2","type":"Class"},{"name":"PausingNcArg","href":"Hi.Numerical.NcArgs.PausingNcArg.html","topicHref":"Hi.Numerical.NcArgs.PausingNcArg.html","topicUid":"Hi.Numerical.NcArgs.PausingNcArg","type":"Class"}]},{"name":"Hi.Numerical.StepSelectionUtils","href":"Hi.Numerical.StepSelectionUtils.html","topicHref":"Hi.Numerical.StepSelectionUtils.html","topicUid":"Hi.Numerical.StepSelectionUtils","type":"Namespace","items":[{"name":"AnchorMode","href":"Hi.Numerical.StepSelectionUtils.AnchorMode.html","topicHref":"Hi.Numerical.StepSelectionUtils.AnchorMode.html","topicUid":"Hi.Numerical.StepSelectionUtils.AnchorMode","type":"Enum"},{"name":"BoundSelector","href":"Hi.Numerical.StepSelectionUtils.BoundSelector.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelector.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelector","type":"Class"},{"name":"BoundSelectorHost","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost","type":"Class"},{"name":"BoundSelectorPair","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair","type":"Class"},{"name":"BoundSelectorPair.BoundLocale","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale","type":"Enum"},{"name":"BoundSelectorStepSectionBundle","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle","type":"Class"},{"name":"BoundSelectorUtil","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil","type":"Class"},{"name":"DistanceShift","href":"Hi.Numerical.StepSelectionUtils.DistanceShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.DistanceShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.DistanceShift","type":"Class"},{"name":"IStepShift","href":"Hi.Numerical.StepSelectionUtils.IStepShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.IStepShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.IStepShift","type":"Interface"},{"name":"TimeShift","href":"Hi.Numerical.StepSelectionUtils.TimeShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.TimeShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.TimeShift","type":"Class"}]},{"name":"Hi.Numerical.Xyzabc","href":"Hi.Numerical.Xyzabc.html","topicHref":"Hi.Numerical.Xyzabc.html","topicUid":"Hi.Numerical.Xyzabc","type":"Namespace","items":[{"name":"Abc","href":"Hi.Numerical.Xyzabc.Abc.html","topicHref":"Hi.Numerical.Xyzabc.Abc.html","topicUid":"Hi.Numerical.Xyzabc.Abc","type":"Struct"},{"name":"CodeXyzabcChain","href":"Hi.Numerical.Xyzabc.CodeXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.CodeXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.CodeXyzabcChain","type":"Class"},{"name":"GeneralXyzabcChain","href":"Hi.Numerical.Xyzabc.GeneralXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.GeneralXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.GeneralXyzabcChain","type":"Class"},{"name":"ICoordinateConverter","href":"Hi.Numerical.Xyzabc.ICoordinateConverter.html","topicHref":"Hi.Numerical.Xyzabc.ICoordinateConverter.html","topicUid":"Hi.Numerical.Xyzabc.ICoordinateConverter","type":"Interface"},{"name":"IGetMcXyzabc","href":"Hi.Numerical.Xyzabc.IGetMcXyzabc.html","topicHref":"Hi.Numerical.Xyzabc.IGetMcXyzabc.html","topicUid":"Hi.Numerical.Xyzabc.IGetMcXyzabc","type":"Interface"},{"name":"IGetXyzabcChain","href":"Hi.Numerical.Xyzabc.IGetXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.IGetXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.IGetXyzabcChain","type":"Interface"},{"name":"IXyzabcChain","href":"Hi.Numerical.Xyzabc.IXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.IXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.IXyzabcChain","type":"Interface"},{"name":"ReflectedXyzabcChain","href":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain","type":"Class"},{"name":"SimpleChainCoordinateConverter","href":"Hi.Numerical.Xyzabc.SimpleChainCoordinateConverter.html","topicHref":"Hi.Numerical.Xyzabc.SimpleChainCoordinateConverter.html","topicUid":"Hi.Numerical.Xyzabc.SimpleChainCoordinateConverter","type":"Class"},{"name":"XyzabcChainMillingCoordinateConverter","href":"Hi.Numerical.Xyzabc.XyzabcChainMillingCoordinateConverter.html","topicHref":"Hi.Numerical.Xyzabc.XyzabcChainMillingCoordinateConverter.html","topicUid":"Hi.Numerical.Xyzabc.XyzabcChainMillingCoordinateConverter","type":"Class"},{"name":"XyzabcSolver","href":"Hi.Numerical.Xyzabc.XyzabcSolver.html","topicHref":"Hi.Numerical.Xyzabc.XyzabcSolver.html","topicUid":"Hi.Numerical.Xyzabc.XyzabcSolver","type":"Class"},{"name":"XyzabcUtil","href":"Hi.Numerical.Xyzabc.XyzabcUtil.html","topicHref":"Hi.Numerical.Xyzabc.XyzabcUtil.html","topicUid":"Hi.Numerical.Xyzabc.XyzabcUtil","type":"Class"}]},{"name":"Hi.PanelModels","href":"Hi.PanelModels.html","topicHref":"Hi.PanelModels.html","topicUid":"Hi.PanelModels","type":"Namespace","items":[{"name":"HiKey","href":"Hi.PanelModels.HiKey.html","topicHref":"Hi.PanelModels.HiKey.html","topicUid":"Hi.PanelModels.HiKey","type":"Enum"},{"name":"HiKeyEvent","href":"Hi.PanelModels.HiKeyEvent.html","topicHref":"Hi.PanelModels.HiKeyEvent.html","topicUid":"Hi.PanelModels.HiKeyEvent","type":"Class"},{"name":"HiModifierKeys","href":"Hi.PanelModels.HiModifierKeys.html","topicHref":"Hi.PanelModels.HiModifierKeys.html","topicUid":"Hi.PanelModels.HiModifierKeys","type":"Enum"},{"name":"HiMouseButton","href":"Hi.PanelModels.HiMouseButton.html","topicHref":"Hi.PanelModels.HiMouseButton.html","topicUid":"Hi.PanelModels.HiMouseButton","type":"Enum"},{"name":"HiMouseButtonEvent","href":"Hi.PanelModels.HiMouseButtonEvent.html","topicHref":"Hi.PanelModels.HiMouseButtonEvent.html","topicUid":"Hi.PanelModels.HiMouseButtonEvent","type":"Class"},{"name":"HiMouseButtonMask","href":"Hi.PanelModels.HiMouseButtonMask.html","topicHref":"Hi.PanelModels.HiMouseButtonMask.html","topicUid":"Hi.PanelModels.HiMouseButtonMask","type":"Enum"},{"name":"HiMouseButtonMaskUtil","href":"Hi.PanelModels.HiMouseButtonMaskUtil.html","topicHref":"Hi.PanelModels.HiMouseButtonMaskUtil.html","topicUid":"Hi.PanelModels.HiMouseButtonMaskUtil","type":"Class"},{"name":"HiMouseMoveEvent","href":"Hi.PanelModels.HiMouseMoveEvent.html","topicHref":"Hi.PanelModels.HiMouseMoveEvent.html","topicUid":"Hi.PanelModels.HiMouseMoveEvent","type":"Class"},{"name":"HiMouseWheelEvent","href":"Hi.PanelModels.HiMouseWheelEvent.html","topicHref":"Hi.PanelModels.HiMouseWheelEvent.html","topicUid":"Hi.PanelModels.HiMouseWheelEvent","type":"Class"},{"name":"PanelModel","href":"Hi.PanelModels.PanelModel.html","topicHref":"Hi.PanelModels.PanelModel.html","topicUid":"Hi.PanelModels.PanelModel","type":"Class"}]},{"name":"Hi.Parallels","href":"Hi.Parallels.html","topicHref":"Hi.Parallels.html","topicUid":"Hi.Parallels","type":"Namespace","items":[{"name":"CurrentThreadTaskScheduler","href":"Hi.Parallels.CurrentThreadTaskScheduler.html","topicHref":"Hi.Parallels.CurrentThreadTaskScheduler.html","topicUid":"Hi.Parallels.CurrentThreadTaskScheduler","type":"Class"},{"name":"DistributedQueueTaskScheduler","href":"Hi.Parallels.DistributedQueueTaskScheduler.html","topicHref":"Hi.Parallels.DistributedQueueTaskScheduler.html","topicUid":"Hi.Parallels.DistributedQueueTaskScheduler","type":"Class"},{"name":"DistributedQueueTaskStarter","href":"Hi.Parallels.DistributedQueueTaskStarter.html","topicHref":"Hi.Parallels.DistributedQueueTaskStarter.html","topicUid":"Hi.Parallels.DistributedQueueTaskStarter","type":"Class"},{"name":"LockUtil","href":"Hi.Parallels.LockUtil.html","topicHref":"Hi.Parallels.LockUtil.html","topicUid":"Hi.Parallels.LockUtil","type":"Class"},{"name":"PriorityTaskScheduler","href":"Hi.Parallels.PriorityTaskScheduler.html","topicHref":"Hi.Parallels.PriorityTaskScheduler.html","topicUid":"Hi.Parallels.PriorityTaskScheduler","type":"Class"},{"name":"QueueTaskScheduler","href":"Hi.Parallels.QueueTaskScheduler.html","topicHref":"Hi.Parallels.QueueTaskScheduler.html","topicUid":"Hi.Parallels.QueueTaskScheduler","type":"Class"},{"name":"ReaderWriterLockUtil","href":"Hi.Parallels.ReaderWriterLockUtil.html","topicHref":"Hi.Parallels.ReaderWriterLockUtil.html","topicUid":"Hi.Parallels.ReaderWriterLockUtil","type":"Class"},{"name":"SemaphoreUtil","href":"Hi.Parallels.SemaphoreUtil.html","topicHref":"Hi.Parallels.SemaphoreUtil.html","topicUid":"Hi.Parallels.SemaphoreUtil","type":"Class"},{"name":"ThreadSafeSet","href":"Hi.Parallels.ThreadSafeSet-1.html","topicHref":"Hi.Parallels.ThreadSafeSet-1.html","topicUid":"Hi.Parallels.ThreadSafeSet`1","type":"Class"}]},{"name":"Hi.Physics","href":"Hi.Physics.html","topicHref":"Hi.Physics.html","topicUid":"Hi.Physics","type":"Namespace","items":[{"name":"AmpPhase","href":"Hi.Physics.AmpPhase.html","topicHref":"Hi.Physics.AmpPhase.html","topicUid":"Hi.Physics.AmpPhase","type":"Class"},{"name":"CoatingMaterial","href":"Hi.Physics.CoatingMaterial.html","topicHref":"Hi.Physics.CoatingMaterial.html","topicUid":"Hi.Physics.CoatingMaterial","type":"Class"},{"name":"CoolantHeatCondition","href":"Hi.Physics.CoolantHeatCondition.html","topicHref":"Hi.Physics.CoolantHeatCondition.html","topicUid":"Hi.Physics.CoolantHeatCondition","type":"Class"},{"name":"CutterMaterial","href":"Hi.Physics.CutterMaterial.html","topicHref":"Hi.Physics.CutterMaterial.html","topicUid":"Hi.Physics.CutterMaterial","type":"Class"},{"name":"IGetThermalLayerList","href":"Hi.Physics.IGetThermalLayerList.html","topicHref":"Hi.Physics.IGetThermalLayerList.html","topicUid":"Hi.Physics.IGetThermalLayerList","type":"Interface"},{"name":"IStructureMaterial","href":"Hi.Physics.IStructureMaterial.html","topicHref":"Hi.Physics.IStructureMaterial.html","topicUid":"Hi.Physics.IStructureMaterial","type":"Interface"},{"name":"ISuccessivePhysicsBriefAccessor","href":"Hi.Physics.ISuccessivePhysicsBriefAccessor.html","topicHref":"Hi.Physics.ISuccessivePhysicsBriefAccessor.html","topicUid":"Hi.Physics.ISuccessivePhysicsBriefAccessor","type":"Interface"},{"name":"ISurfaceMaterial","href":"Hi.Physics.ISurfaceMaterial.html","topicHref":"Hi.Physics.ISurfaceMaterial.html","topicUid":"Hi.Physics.ISurfaceMaterial","type":"Interface"},{"name":"ITimeGetter","href":"Hi.Physics.ITimeGetter.html","topicHref":"Hi.Physics.ITimeGetter.html","topicUid":"Hi.Physics.ITimeGetter","type":"Interface"},{"name":"MillingTemperatureUtil","href":"Hi.Physics.MillingTemperatureUtil.html","topicHref":"Hi.Physics.MillingTemperatureUtil.html","topicUid":"Hi.Physics.MillingTemperatureUtil","type":"Class"},{"name":"SeqPhysicsBrief","href":"Hi.Physics.SeqPhysicsBrief.html","topicHref":"Hi.Physics.SeqPhysicsBrief.html","topicUid":"Hi.Physics.SeqPhysicsBrief","type":"Class"},{"name":"StructureMaterial","href":"Hi.Physics.StructureMaterial.html","topicHref":"Hi.Physics.StructureMaterial.html","topicUid":"Hi.Physics.StructureMaterial","type":"Class"},{"name":"TemperatureUtil","href":"Hi.Physics.TemperatureUtil.html","topicHref":"Hi.Physics.TemperatureUtil.html","topicUid":"Hi.Physics.TemperatureUtil","type":"Class"},{"name":"TemperatureVsHardness","href":"Hi.Physics.TemperatureVsHardness.html","topicHref":"Hi.Physics.TemperatureVsHardness.html","topicUid":"Hi.Physics.TemperatureVsHardness","type":"Class"},{"name":"ThermalLayer1D","href":"Hi.Physics.ThermalLayer1D.html","topicHref":"Hi.Physics.ThermalLayer1D.html","topicUid":"Hi.Physics.ThermalLayer1D","type":"Class"},{"name":"TimeSeriesUtil","href":"Hi.Physics.TimeSeriesUtil.html","topicHref":"Hi.Physics.TimeSeriesUtil.html","topicUid":"Hi.Physics.TimeSeriesUtil","type":"Class"},{"name":"TimeValue","href":"Hi.Physics.TimeValue.html","topicHref":"Hi.Physics.TimeValue.html","topicUid":"Hi.Physics.TimeValue","type":"Class"},{"name":"WorkpieceMaterial","href":"Hi.Physics.WorkpieceMaterial.html","topicHref":"Hi.Physics.WorkpieceMaterial.html","topicUid":"Hi.Physics.WorkpieceMaterial","type":"Class"}]},{"name":"Hi.ScriptApiUtils","href":"Hi.ScriptApiUtils.html","topicHref":"Hi.ScriptApiUtils.html","topicUid":"Hi.ScriptApiUtils","type":"Namespace","items":[{"name":"ICsScriptApi","href":"Hi.ScriptApiUtils.ICsScriptApi.html","topicHref":"Hi.ScriptApiUtils.ICsScriptApi.html","topicUid":"Hi.ScriptApiUtils.ICsScriptApi","type":"Interface"},{"name":"JsAceAttribute","href":"Hi.ScriptApiUtils.JsAceAttribute.html","topicHref":"Hi.ScriptApiUtils.JsAceAttribute.html","topicUid":"Hi.ScriptApiUtils.JsAceAttribute","type":"Class"}]},{"name":"Hi.ShellCommands","href":"Hi.ShellCommands.html","topicHref":"Hi.ShellCommands.html","topicUid":"Hi.ShellCommands","type":"Namespace","items":[{"name":"EnablingWrapper","href":"Hi.ShellCommands.EnablingWrapper.html","topicHref":"Hi.ShellCommands.EnablingWrapper.html","topicUid":"Hi.ShellCommands.EnablingWrapper","type":"Class"},{"name":"GeomDiffCommand","href":"Hi.ShellCommands.GeomDiffCommand.html","topicHref":"Hi.ShellCommands.GeomDiffCommand.html","topicUid":"Hi.ShellCommands.GeomDiffCommand","type":"Class"},{"name":"IShellCommand","href":"Hi.ShellCommands.IShellCommand.html","topicHref":"Hi.ShellCommands.IShellCommand.html","topicUid":"Hi.ShellCommands.IShellCommand","type":"Interface"},{"name":"ITitleCommand","href":"Hi.ShellCommands.ITitleCommand.html","topicHref":"Hi.ShellCommands.ITitleCommand.html","topicUid":"Hi.ShellCommands.ITitleCommand","type":"Interface"},{"name":"Lang","href":"Hi.ShellCommands.Lang.html","topicHref":"Hi.ShellCommands.Lang.html","topicUid":"Hi.ShellCommands.Lang","type":"Class"},{"name":"ListCommand","href":"Hi.ShellCommands.ListCommand.html","topicHref":"Hi.ShellCommands.ListCommand.html","topicUid":"Hi.ShellCommands.ListCommand","type":"Class"},{"name":"MachiningMotionResolutionCommand","href":"Hi.ShellCommands.MachiningMotionResolutionCommand.html","topicHref":"Hi.ShellCommands.MachiningMotionResolutionCommand.html","topicUid":"Hi.ShellCommands.MachiningMotionResolutionCommand","type":"Class"},{"name":"NcCodeCommand","href":"Hi.ShellCommands.NcCodeCommand.html","topicHref":"Hi.ShellCommands.NcCodeCommand.html","topicUid":"Hi.ShellCommands.NcCodeCommand","type":"Class"},{"name":"NcFileCommand","href":"Hi.ShellCommands.NcFileCommand.html","topicHref":"Hi.ShellCommands.NcFileCommand.html","topicUid":"Hi.ShellCommands.NcFileCommand","type":"Class"},{"name":"NcFileListCommand","href":"Hi.ShellCommands.NcFileListCommand.html","topicHref":"Hi.ShellCommands.NcFileListCommand.html","topicUid":"Hi.ShellCommands.NcFileListCommand","type":"Class"},{"name":"NcOptOptionCommand","href":"Hi.ShellCommands.NcOptOptionCommand.html","topicHref":"Hi.ShellCommands.NcOptOptionCommand.html","topicUid":"Hi.ShellCommands.NcOptOptionCommand","type":"Class"},{"name":"OptimizeToFilesCommand","href":"Hi.ShellCommands.OptimizeToFilesCommand.html","topicHref":"Hi.ShellCommands.OptimizeToFilesCommand.html","topicUid":"Hi.ShellCommands.OptimizeToFilesCommand","type":"Class"},{"name":"PostExecutionCommand","href":"Hi.ShellCommands.PostExecutionCommand.html","topicHref":"Hi.ShellCommands.PostExecutionCommand.html","topicUid":"Hi.ShellCommands.PostExecutionCommand","type":"Class"},{"name":"PreSettingCommand","href":"Hi.ShellCommands.PreSettingCommand.html","topicHref":"Hi.ShellCommands.PreSettingCommand.html","topicUid":"Hi.ShellCommands.PreSettingCommand","type":"Class"},{"name":"RecordRuntimeGeomActionEnum","href":"Hi.ShellCommands.RecordRuntimeGeomActionEnum.html","topicHref":"Hi.ShellCommands.RecordRuntimeGeomActionEnum.html","topicUid":"Hi.ShellCommands.RecordRuntimeGeomActionEnum","type":"Enum"},{"name":"RecordRuntimeGeomCommand","href":"Hi.ShellCommands.RecordRuntimeGeomCommand.html","topicHref":"Hi.ShellCommands.RecordRuntimeGeomCommand.html","topicUid":"Hi.ShellCommands.RecordRuntimeGeomCommand","type":"Class"},{"name":"ScriptCommand","href":"Hi.ShellCommands.ScriptCommand.html","topicHref":"Hi.ShellCommands.ScriptCommand.html","topicUid":"Hi.ShellCommands.ScriptCommand","type":"Class"},{"name":"SimpleSessionCommand","href":"Hi.ShellCommands.SimpleSessionCommand.html","topicHref":"Hi.ShellCommands.SimpleSessionCommand.html","topicUid":"Hi.ShellCommands.SimpleSessionCommand","type":"Class"},{"name":"WriteRuntimeGeomToStlCommand","href":"Hi.ShellCommands.WriteRuntimeGeomToStlCommand.html","topicHref":"Hi.ShellCommands.WriteRuntimeGeomToStlCommand.html","topicUid":"Hi.ShellCommands.WriteRuntimeGeomToStlCommand","type":"Class"},{"name":"WriteShotFilesCommand","href":"Hi.ShellCommands.WriteShotFilesCommand.html","topicHref":"Hi.ShellCommands.WriteShotFilesCommand.html","topicUid":"Hi.ShellCommands.WriteShotFilesCommand","type":"Class"},{"name":"WriteStepFilesCommand","href":"Hi.ShellCommands.WriteStepFilesCommand.html","topicHref":"Hi.ShellCommands.WriteStepFilesCommand.html","topicUid":"Hi.ShellCommands.WriteStepFilesCommand","type":"Class"}]},{"name":"Hi.Test","href":"Hi.Test.html","topicHref":"Hi.Test.html","topicUid":"Hi.Test","type":"Namespace","items":[{"name":"TestCollision","href":"Hi.Test.TestCollision.html","topicHref":"Hi.Test.TestCollision.html","topicUid":"Hi.Test.TestCollision","type":"Class"}]},{"name":"Hi.UiExtensions","href":"Hi.UiExtensions.html","topicHref":"Hi.UiExtensions.html","topicUid":"Hi.UiExtensions","type":"Namespace","items":[{"name":"ChartBoundary","href":"Hi.UiExtensions.ChartBoundary.html","topicHref":"Hi.UiExtensions.ChartBoundary.html","topicUid":"Hi.UiExtensions.ChartBoundary","type":"Class"},{"name":"ChartBoundaryEnum","href":"Hi.UiExtensions.ChartBoundaryEnum.html","topicHref":"Hi.UiExtensions.ChartBoundaryEnum.html","topicUid":"Hi.UiExtensions.ChartBoundaryEnum","type":"Enum"},{"name":"NativeVisibility","href":"Hi.UiExtensions.NativeVisibility.html","topicHref":"Hi.UiExtensions.NativeVisibility.html","topicUid":"Hi.UiExtensions.NativeVisibility","type":"Enum"},{"name":"UiUtil","href":"Hi.UiExtensions.UiUtil.html","topicHref":"Hi.UiExtensions.UiUtil.html","topicUid":"Hi.UiExtensions.UiUtil","type":"Class"},{"name":"UiUtil.InvokeFunc","href":"Hi.UiExtensions.UiUtil.InvokeFunc.html","topicHref":"Hi.UiExtensions.UiUtil.InvokeFunc.html","topicUid":"Hi.UiExtensions.UiUtil.InvokeFunc","type":"Delegate"}]},{"name":"Hi.UniversalNc","href":"Hi.UniversalNc.html","topicHref":"Hi.UniversalNc.html","topicUid":"Hi.UniversalNc","type":"Namespace","items":[{"name":"Lang","href":"Hi.UniversalNc.Lang.html","topicHref":"Hi.UniversalNc.Lang.html","topicUid":"Hi.UniversalNc.Lang","type":"Class"}]},{"name":"Hi.Vibrations","href":"Hi.Vibrations.html","topicHref":"Hi.Vibrations.html","topicUid":"Hi.Vibrations","type":"Namespace","items":[{"name":"AngularVelocityUtil","href":"Hi.Vibrations.AngularVelocityUtil.html","topicHref":"Hi.Vibrations.AngularVelocityUtil.html","topicUid":"Hi.Vibrations.AngularVelocityUtil","type":"Class"},{"name":"ForceAccelAmpPhase","href":"Hi.Vibrations.ForceAccelAmpPhase.html","topicHref":"Hi.Vibrations.ForceAccelAmpPhase.html","topicUid":"Hi.Vibrations.ForceAccelAmpPhase","type":"Class"},{"name":"ForceAccelFourierSeries","href":"Hi.Vibrations.ForceAccelFourierSeries.html","topicHref":"Hi.Vibrations.ForceAccelFourierSeries.html","topicUid":"Hi.Vibrations.ForceAccelFourierSeries","type":"Class"},{"name":"ForceAccelShot","href":"Hi.Vibrations.ForceAccelShot.html","topicHref":"Hi.Vibrations.ForceAccelShot.html","topicUid":"Hi.Vibrations.ForceAccelShot","type":"Class"},{"name":"ForceAccelUtil","href":"Hi.Vibrations.ForceAccelUtil.html","topicHref":"Hi.Vibrations.ForceAccelUtil.html","topicUid":"Hi.Vibrations.ForceAccelUtil","type":"Class"},{"name":"IAngularVelocityOwner","href":"Hi.Vibrations.IAngularVelocityOwner.html","topicHref":"Hi.Vibrations.IAngularVelocityOwner.html","topicUid":"Hi.Vibrations.IAngularVelocityOwner","type":"Interface"},{"name":"VibrationUtil","href":"Hi.Vibrations.VibrationUtil.html","topicHref":"Hi.Vibrations.VibrationUtil.html","topicUid":"Hi.Vibrations.VibrationUtil","type":"Class"},{"name":"WAmpPhase","href":"Hi.Vibrations.WAmpPhase.html","topicHref":"Hi.Vibrations.WAmpPhase.html","topicUid":"Hi.Vibrations.WAmpPhase","type":"Class"},{"name":"WAmpPhaseXyzTransformation","href":"Hi.Vibrations.WAmpPhaseXyzTransformation.html","topicHref":"Hi.Vibrations.WAmpPhaseXyzTransformation.html","topicUid":"Hi.Vibrations.WAmpPhaseXyzTransformation","type":"Class"}]},{"name":"Hi.WinForm.Disp","href":"Hi.WinForm.Disp.html","topicHref":"Hi.WinForm.Disp.html","topicUid":"Hi.WinForm.Disp","type":"Namespace","items":[{"name":"RenderingCanvas","href":"Hi.WinForm.Disp.RenderingCanvas.html","topicHref":"Hi.WinForm.Disp.RenderingCanvas.html","topicUid":"Hi.WinForm.Disp.RenderingCanvas","type":"Class"},{"name":"RenderingForm","href":"Hi.WinForm.Disp.RenderingForm.html","topicHref":"Hi.WinForm.Disp.RenderingForm.html","topicUid":"Hi.WinForm.Disp.RenderingForm","type":"Class"}]},{"name":"Hi.WpfPlus.Disp","href":"Hi.WpfPlus.Disp.html","topicHref":"Hi.WpfPlus.Disp.html","topicUid":"Hi.WpfPlus.Disp","type":"Namespace","items":[{"name":"RenderingCanvas","href":"Hi.WpfPlus.Disp.RenderingCanvas.html","topicHref":"Hi.WpfPlus.Disp.RenderingCanvas.html","topicUid":"Hi.WpfPlus.Disp.RenderingCanvas","type":"Class"},{"name":"RenderingWindow","href":"Hi.WpfPlus.Disp.RenderingWindow.html","topicHref":"Hi.WpfPlus.Disp.RenderingWindow.html","topicUid":"Hi.WpfPlus.Disp.RenderingWindow","type":"Class"}]},{"name":"HiMachining.Milling","href":"HiMachining.Milling.html","topicHref":"HiMachining.Milling.html","topicUid":"HiMachining.Milling","type":"Namespace","items":[{"name":"ClMillingDevice","href":"HiMachining.Milling.ClMillingDevice.html","topicHref":"HiMachining.Milling.ClMillingDevice.html","topicUid":"HiMachining.Milling.ClMillingDevice","type":"Class"}]},{"name":"HiNc.Grpcs","href":"HiNc.Grpcs.html","topicHref":"HiNc.Grpcs.html","topicUid":"HiNc.Grpcs","type":"Namespace","items":[{"name":"MachiningProjectGrpcServer","href":"HiNc.Grpcs.MachiningProjectGrpcServer.html","topicHref":"HiNc.Grpcs.MachiningProjectGrpcServer.html","topicUid":"HiNc.Grpcs.MachiningProjectGrpcServer","type":"Class"}]},{"name":"numerical","href":"numerical.html","topicHref":"numerical.html","topicUid":"numerical","type":"Namespace","items":[{"name":"Empty","href":"numerical.Empty.html","topicHref":"numerical.Empty.html","topicUid":"numerical.Empty","type":"Class"},{"name":"GrpcCsvRowDictionary","href":"numerical.GrpcCsvRowDictionary.html","topicHref":"numerical.GrpcCsvRowDictionary.html","topicUid":"numerical.GrpcCsvRowDictionary","type":"Class"},{"name":"GrpcNcStep","href":"numerical.GrpcNcStep.html","topicHref":"numerical.GrpcNcStep.html","topicUid":"numerical.GrpcNcStep","type":"Class"},{"name":"NumericalReflection","href":"numerical.NumericalReflection.html","topicHref":"numerical.NumericalReflection.html","topicUid":"numerical.NumericalReflection","type":"Class"},{"name":"NumericalService","href":"numerical.NumericalService.html","topicHref":"numerical.NumericalService.html","topicUid":"numerical.NumericalService","type":"Class"},{"name":"NumericalService.NumericalServiceBase","href":"numerical.NumericalService.NumericalServiceBase.html","topicHref":"numerical.NumericalService.NumericalServiceBase.html","topicUid":"numerical.NumericalService.NumericalServiceBase","type":"Class"},{"name":"NumericalService.NumericalServiceClient","href":"numerical.NumericalService.NumericalServiceClient.html","topicHref":"numerical.NumericalService.NumericalServiceClient.html","topicUid":"numerical.NumericalService.NumericalServiceClient","type":"Class"},{"name":"UniversalNcReflection","href":"numerical.UniversalNcReflection.html","topicHref":"numerical.UniversalNcReflection.html","topicUid":"numerical.UniversalNcReflection","type":"Class"},{"name":"UniversalNcService","href":"numerical.UniversalNcService.html","topicHref":"numerical.UniversalNcService.html","topicUid":"numerical.UniversalNcService","type":"Class"},{"name":"UniversalNcService.UniversalNcServiceBase","href":"numerical.UniversalNcService.UniversalNcServiceBase.html","topicHref":"numerical.UniversalNcService.UniversalNcServiceBase.html","topicUid":"numerical.UniversalNcService.UniversalNcServiceBase","type":"Class"},{"name":"UniversalNcService.UniversalNcServiceClient","href":"numerical.UniversalNcService.UniversalNcServiceClient.html","topicHref":"numerical.UniversalNcService.UniversalNcServiceClient.html","topicUid":"numerical.UniversalNcService.UniversalNcServiceClient","type":"Class"}]}],"memberLayout":"SamePage"} diff --git a/App/wwwroot/HiAPI-docsite/brief/dev-doc/basic/rendering/rendering-canvas/custom-implementation.html b/App/wwwroot/HiAPI-docsite/brief/dev-doc/basic/rendering/rendering-canvas/custom-implementation.html index acd608e..5870cef 100644 --- a/App/wwwroot/HiAPI-docsite/brief/dev-doc/basic/rendering/rendering-canvas/custom-implementation.html +++ b/App/wwwroot/HiAPI-docsite/brief/dev-doc/basic/rendering/rendering-canvas/custom-implementation.html @@ -208,7 +208,11 @@ public unsafe RenderingCanvas(params IDisplayee[] displayees)

    Input Handling

    Windows Message Handling for Touch

    WinForm implementation intercepts Windows touch messages and forwards them to DispEngine:

    -
    protected override void WndProc(ref Message m)
    +
    /// <summary>
    +/// Processes Windows messages, handling touch input and forwarding other messages to the base class.
    +/// </summary>
    +/// <param name="m">The Windows message to process.</param>
    +protected override void WndProc(ref Message m)
     {
         if (m.Msg == WM_TOUCH)
         {
    diff --git a/App/wwwroot/HiAPI-docsite/brief/dev-doc/build-hinc/player/player-tool-bar.html b/App/wwwroot/HiAPI-docsite/brief/dev-doc/build-hinc/player/player-tool-bar.html
    index 1573989..4e61fae 100644
    --- a/App/wwwroot/HiAPI-docsite/brief/dev-doc/build-hinc/player/player-tool-bar.html
    +++ b/App/wwwroot/HiAPI-docsite/brief/dev-doc/build-hinc/player/player-tool-bar.html
    @@ -296,16 +296,12 @@ namespace HiNcRcl.Areas.Player
                 {
                     using var _ = await DisposeSemaphore.EmbraceAsync();
                     if (disposedValue) return;
    -                var machiningProject = MachiningProject;
    -                if (machiningProject != null)
    -                {
    -                    LocalProjectService.PacePlayer.IsLockedChangedEvent
    -                        += EnumerablePlayer_IsLockedEventHandler;
    -                    LocalProjectService.PacePlayer.IsRunningChangedEvent
    -                        += EnumerablePlayer_IsLockedEventHandler;
    -                    LocalProjectService.PacePlayer.IsFinishedChangedEvent
    -                        += EnumerablePlayer_IsLockedEventHandler;
    -                }
    +                LocalProjectService.PacePlayer.IsLockedChangedEvent
    +                    += EnumerablePlayer_IsLockedEventHandler;
    +                LocalProjectService.PacePlayer.IsRunningChangedEvent
    +                    += EnumerablePlayer_IsLockedEventHandler;
    +                LocalProjectService.PacePlayer.IsFinishedChangedEvent
    +                    += EnumerablePlayer_IsLockedEventHandler;
                 }
             }
     
    @@ -313,16 +309,12 @@ namespace HiNcRcl.Areas.Player
             public async ValueTask DisposeAsync()
             {
                 using var _ = await DisposeSemaphore.EmbraceAsync();
    -            var machiningProject = MachiningProject;
    -            if (machiningProject != null)
    -            {
    -                LocalProjectService.PacePlayer.IsLockedChangedEvent
    -                    -= EnumerablePlayer_IsLockedEventHandler;
    -                LocalProjectService.PacePlayer.IsRunningChangedEvent
    -                    -= EnumerablePlayer_IsLockedEventHandler;
    -                LocalProjectService.PacePlayer.IsFinishedChangedEvent
    -                    -= EnumerablePlayer_IsLockedEventHandler;
    -            }
    +            LocalProjectService.PacePlayer.IsLockedChangedEvent
    +                -= EnumerablePlayer_IsLockedEventHandler;
    +            LocalProjectService.PacePlayer.IsRunningChangedEvent
    +                -= EnumerablePlayer_IsLockedEventHandler;
    +            LocalProjectService.PacePlayer.IsFinishedChangedEvent
    +                -= EnumerablePlayer_IsLockedEventHandler;
                 disposedValue = true;
                 await ValueTask.CompletedTask;
             }
    @@ -352,21 +344,21 @@ namespace HiNcRcl.Areas.Player
                 await Task.Run(() =>
                 {
                     LocalProjectService.PacePlayer.Pause();
    -            }).ShowIfCatched(this);			
    +            }).ShowIfCatched(this);
             }
             public async Task RunToLineEnd()
             {
                 await Task.Run(() =>
                 {
                     LocalProjectService.NcRunner.RunToLineEnd();
    -            }).ShowIfCatched(this);			
    +            }).ShowIfCatched(this);
             }
             public async Task RunToNextPace()
             {
                 await Task.Run(() =>
                 {
                     LocalProjectService.PacePlayer.RunToNextPace();
    -            }).ShowIfCatched(this);			
    +            }).ShowIfCatched(this);
             }
             public async Task Break()
             {
    diff --git a/App/wwwroot/HiAPI-docsite/brief/dev-doc/release-note/index.html b/App/wwwroot/HiAPI-docsite/brief/dev-doc/release-note/index.html
    index 68e4e18..fadd6a6 100644
    --- a/App/wwwroot/HiAPI-docsite/brief/dev-doc/release-note/index.html
    +++ b/App/wwwroot/HiAPI-docsite/brief/dev-doc/release-note/index.html
    @@ -87,6 +87,19 @@
             

    Release Note

    +

    HiNc Packages Version 3.1.106

    +
      +
    • Rename mapping API for clearer naming: + +
    • +
    • Unify CSV column tags to MappingUtil for consistent data mapping
    • +
    • Fix ChartRange manipulation to be time-based instead of step-based for more accurate time chart display
    • +
    • Tune thread priority for machining parallel processing to improve UI responsiveness during simulation
    • +
    • Various code cleanup and improvements
    • +

    HiNc Packages Version 3.1.102

    • Separate resource files (Resource, wwwroot, Doc) to HiNc-Resource nuget package for smaller package size
    • diff --git a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/output/simulation-step-output.html b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/output/simulation-step-output.html index b04fdc8..409fef9 100644 --- a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/output/simulation-step-output.html +++ b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/output/simulation-step-output.html @@ -134,7 +134,7 @@

      功率、扭矩與能耗

      • SpindleInputPower_W(輸入功率):進入主軸的能量。
      • -
      • SpindleOutputPower_W(輸出功率):經過主軸能量損耗後,作用於切削端的能量,亦即造成工件與切屑形變、溫度改變的能量。
      • +
      • SpindleOutputPower_W(輸出功率):經過主軸能量損耗後,作用於切削端的能量,亦即造成工件與切屑形變、溫度改變的能量。通常輸出功率與輸入功率成比例,比例為主軸設置中的能量效率 EnergyEfficiency(API)
      • MaxSpindlePowerRatio(最大主軸功率比率):輸入功率 / 基於主軸性能的瞬間最大功率。
      • InfInsistentSpindlePowerRatio(持續主軸功率比率):輸入功率 / 基於主軸性能的不限時最大功率。
      • AccumulatedSpindleEnergyConsumption_kWh:主軸累積能耗。
      • diff --git a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/Mapping/index.html b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/Mapping/index.html index 988f31a..296c951 100644 --- a/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/Mapping/index.html +++ b/App/wwwroot/HiAPI-docsite/brief/user-guide/zh-Hant/script/Mapping/index.html @@ -98,16 +98,16 @@

        一對一的資料映射方式:

        PlayCsvFile

        執行CSV檔 可以與一對多的資料映射協同使用,詳見 執行CSV檔

        -

        ReadCsvByTimeInterpolation

        -

        ReadCsvByTimeInterpolation(API) 讀取CSV檔案並使用時間插值將資料映射到加工步階。每個仿真步對應一個外部資料點(透過時間插值計算)。

        +

        MapSingleByCsvFile

        +

        MapSingleByCsvFile(API) 讀取CSV檔案並使用時間插值將資料映射到加工步階。每個仿真步對應一個外部資料點(透過時間插值計算)。

        Note

        指令格式

        -
        ReadCsvByTimeInterpolation(<CSV檔案路徑>);
        +
        MapSingleByCsvFile(<CSV檔案路徑>);
         
        @@ -115,7 +115,7 @@

        指令範例

        // 讀取CSV檔案並映射到步階
         PlayNcFile("NC/file1.nc");
        -ReadCsvByTimeInterpolation("Data/sensor.csv");
        +MapSingleByCsvFile("Data/sensor.csv");
         
        @@ -127,12 +127,12 @@ ReadCsvByTimeInterpolation("Data/sensor.csv");

        一對多的形式適用智慧刀把、加速規、測力計等高採樣率資料。

        一對多的資料映射可以直接對應真實加工時間全局映射,也可以對指定數控路徑及時間局部映射

        對應真實加工時間全局映射

        -

        需使用執行CSV檔作為前置,以獲取真實加工時間,csv檔案中須包含ActualTime欄位(ActualTime(API))。然後使用MapByActualTime(API)映射外部資料。

        +

        需使用執行CSV檔作為前置,以獲取真實加工時間,csv檔案中須包含ActualTime欄位(ActualTime(API))。然後使用MapSeriesByCsvFile(API)映射外部資料。

        此方法為一對多映射,每個仿真步會對應多個外部資料點。

        Note

        指令格式

        -
        MapByActualTime(<檔案名>);
        +
        MapSeriesByCsvFile(<檔案名>);
         

        指定數控路徑及時間局部映射

        @@ -237,7 +237,36 @@ X25. F10 (;@LineSelection("lineB", FirstTouch, null, LastTouch, null); ...
    -

    外部資料檔案格式

    +

    選區結束映射設定

    +

    EnableMapOnSelectionEnd(API) 設定是否在選擇結束時連帶執行映射。

    +
    +
    Note
    +

    指令格式

    +
    EnableMapOnSelectionEnd = true; // 或 false
    +
    +
    +
    +
    Tip
    +

    指令範例

    +
    // 啟用選區結束映射
    +EnableMapOnSelectionEnd = true;
    +BeginSelection("region1");
    +// ... NC 代碼 ...
    +EndSelection("region1"); // 連帶執行映射
    +
    +// 停用選區結束映射
    +EnableMapOnSelectionEnd = false;
    +BeginSelection("region2");
    +// ... NC 代碼 ...
    +EndSelection("region2"); // 不連帶執行映射
    +Map("region2"); // 手動執行映射
    +
    +
    +
    +
    Note
    +

    預設值為 true。當設為 true 時,EndSelection 會連帶執行對應的 Map 操作。

    +
    +

    感測器資料檔案格式

    輸入檔案格式為csv,須包含時間資訊,其餘資訊可選擇包含或不包含。

    csv檔案需有標題列,欄位標題需用特定指示詞標示。 部分欄位指示詞為方便性是多擇一。

    @@ -277,19 +306,19 @@ X25. F10 (;@LineSelection("lineB", FirstTouch, null, LastTouch, null);
  • X方向力矩:
    • Mx
    • -
    • Spindle.Mx
    • +
    • Holder.Mx
  • Y方向力矩:
    • My
    • -
    • Spindle.My
    • +
    • Holder.My
  • Z方向力矩:
    • Mz
    • -
    • Spindle.Mz
    • +
    • Holder.Mz
  • @@ -312,36 +341,48 @@ X25. F10 (;@LineSelection("lineB", FirstTouch, null, LastTouch, null); ...
    -

    其他設置

    -

    自動映射設定

    -

    EnableAutoMapOnSelectionEnd(API) 設定是否在選擇結束時自動執行映射。

    +

    串接控制器資料及感測器資料至數控路徑

    +

    因為機台加減速,模擬加工時間與實際加工時間會累積誤差,時間拉長了對不上。所以在資料映射時透過錨點做線性投影。

    +
      +
    • 模擬步資料及控制器資料皆含檔案號行號,故可依此設定兩者相應錨點
    • +
    • 控制器資料及感測器資料皆含實際時間,故可依此設定兩者相應錨點
    • +
    +

    串接後可使模擬步索引感測器資料。

    Note
    -

    指令格式

    -
    EnableAutoMapOnSelectionEnd = true; // 或 false
    -
    +

    為何使用兩層映射?

    +

    雖然可以直接使用 執行CSV檔 執行模擬,但控制器的採樣頻率有限,直接播放會導致模擬路徑失真。

    +

    透過系統解譯器解譯數控路徑(執行NC檔),再將控制器資料與感測器資料映射至模擬步,可獲得較精確的模擬路徑。

    +

    操作流程

    +

    依序使用兩指令串聯控制器資料及感測器資料至虛擬環境:

    +
      +
    1. 先使用 MapSingleByCsvFile(API) 將控制器資料映射至模擬數控路徑

      +
        +
      • 控制器資料至少包含 FileNoLineNoActualTime
      • +
      • 該指令會依 FileNoLineNoActualTime 及其他控制器資料插補至模擬步中
      • +
      +
    2. +
    3. 而後使用 MapSeriesByCsvFile(API) 將感測器資料映射至模擬數控路徑

      +
        +
      • 感測器資料至少包含 ActualTime
      • +
      • 該指令會依 ActualTime 將其他感測器資料插補至模擬步中
      • +
      +
    4. +
    Tip

    指令範例

    -
    // 啟用自動映射
    -EnableAutoMapOnSelectionEnd = true;
    -BeginSelection("region1");
    -// ... NC 代碼 ...
    -EndSelection("region1"); // 自動執行映射
    +
    // 1. 使用系統解譯器解譯數控路徑(獲得精確的模擬路徑)
    +PlayNcFile("NC/machining.nc");
     
    -// 停用自動映射
    -EnableAutoMapOnSelectionEnd = false;
    -BeginSelection("region2");
    -// ... NC 代碼 ...
    -EndSelection("region2"); // 不自動執行映射
    -Map("region2"); // 手動執行映射
    +// 2. 映射控制器資料(含FileNo, LineNo, ActualTime)
    +MapSingleByCsvFile("Data/controller.csv");
    +
    +// 3. 映射感測器資料(含ActualTime及感測器數據)
    +MapSeriesByCsvFile("Data/sensor.csv");
     
    -
    -
    Note
    -

    預設值為 true。當設為 true 時,EndSelection 會自動執行對應的 Map 操作。

    -
    diff --git a/App/wwwroot/HiAPI-docsite/index.json b/App/wwwroot/HiAPI-docsite/index.json index 02fedf5..0393a1d 100644 --- a/App/wwwroot/HiAPI-docsite/index.json +++ b/App/wwwroot/HiAPI-docsite/index.json @@ -357,7 +357,7 @@ "api/Hi.Common.Collections.ListUtil.html": { "href": "api/Hi.Common.Collections.ListUtil.html", "title": "Class ListUtil | HiAPI-C# 2025", - "summary": "Class ListUtil Namespace Hi.Common.Collections Assembly HiGeom.dll Provides utility methods for working with lists and collections. public static class ListUtil Inheritance object ListUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetCeilBySeek(IList, TKey, Func, out TItem, out int, int, SeekDirection) Gets the ceil item by seeking with the specified direction. public static SearchResult GetCeilBySeek(this IList src, TKey key, Func getKeyFunc, out TItem ceilValue, out int ceilIndex, int seekingStartIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable Parameters src IList The source list. key TKey The key to search for. getKeyFunc Func A function that extracts the key from an item. ceilValue TItem The output ceil value. ceilIndex int The output ceil index. seekingStartIndex int The start index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The search result. Type Parameters TItem The type of items in the list. TKey The type of the key. GetCeilIndexBySeek(IList, TKey, Func, out int, int, SeekDirection) Gets the ceil index by seeking with the specified direction. public static SearchResult GetCeilIndexBySeek(this IList src, TKey key, Func getKeyFunc, out int ceilIndex, int seekingStartIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable Parameters src IList The source list. key TKey The key to search for. getKeyFunc Func A function that extracts the key from an item. ceilIndex int The output ceil index. seekingStartIndex int The start index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The search result. Type Parameters TItem The type of items in the list. TKey The type of the key. Remarks The Free seek direction does not loss additional performance. The seek direction only effect the resulting value by the seekingStartIndex bound. GetCeilIndex(IList, ItemKey, Func, out int) Gets the ceiling index of an item in a sorted list based on a key comparison. public static SearchResult GetCeilIndex(this IList sortedItems, ItemKey key, Func comparingFunc, out int index) Parameters sortedItems IList The sorted list to search in. key ItemKey The key to search for. comparingFunc Func A function that compares an item to the key. index int When this method returns, contains the index of the ceiling item if found; otherwise, -1. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters Item The type of items in the list. ItemKey The type of the key to search for. GetCeilIndex(IList, TKey, Func, out int) Gets the ceiling index of an item in a sorted list based on a key selector function. public static SearchResult GetCeilIndex(this IList sortedItems, TKey keyQuantity, Func getKeyQuantityFunc, out int index) where TKey : IComparable Parameters sortedItems IList The sorted list to search in. keyQuantity TKey The key to search for. getKeyQuantityFunc Func A function that extracts the key from an item. index int When this method returns, contains the index of the ceiling item if found; otherwise, -1. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters TKey The type of the key. Item The type of items in the list. GetCeil(IList, TKey, Func, out Item) Gets the ceiling item in a sorted list based on a key selector function. public static SearchResult GetCeil(this IList sortedItems, TKey keyQuantity, Func getKeyQuantityFunc, out Item dst) where TKey : IComparable Parameters sortedItems IList The sorted list to search in. keyQuantity TKey The key to search for. getKeyQuantityFunc Func A function that extracts the key from an item. dst Item When this method returns, contains the ceiling item if found; otherwise, the default value for the type. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters TKey The type of the key. Item The type of items in the list. GetFloorBySeek(IList, TKey, Func, out TItem, out int, int, SeekDirection) Gets the floor item by seeking with the specified direction. public static SearchResult GetFloorBySeek(this IList src, TKey key, Func getKeyFunc, out TItem floorValue, out int floorIndex, int seekingStartIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable Parameters src IList The source list. key TKey The key to search for. getKeyFunc Func A function that extracts the key from an item. floorValue TItem The output floor value. floorIndex int The output floor index. seekingStartIndex int The start index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The search result. Type Parameters TItem The type of items in the list. TKey The type of the key. GetFloorIndexBySeek(IList, TKey, Func, out int, int, SeekDirection) Gets the floor index by seeking with the specified direction. public static SearchResult GetFloorIndexBySeek(this IList src, TKey key, Func getKeyFunc, out int floorIndex, int seekingStartIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable Parameters src IList The source list. key TKey The key to search for. getKeyFunc Func A function that extracts the key from an item. floorIndex int The output floor index. seekingStartIndex int The start index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The search result. Type Parameters TItem The type of items in the list. TKey The type of the key. Remarks The Free seek direction does not loss additional performance. The seek direction only effect the resulting value by the seekingStartIndex bound. GetFloorIndex(IList, ItemKey, Func, out int) Gets the floor index of an item in a sorted list based on a key comparison. public static SearchResult GetFloorIndex(this IList sortedItems, ItemKey key, Func comparingFunc, out int index) Parameters sortedItems IList The sorted list to search in. key ItemKey The key to search for. comparingFunc Func A function that compares an item to the key. index int When this method returns, contains the index of the floor item if found; otherwise, -1. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters Item The type of items in the list. ItemKey The type of the key to search for. GetFloorIndex(IList, TKey, Func, out int) Gets the floor index of an item in a sorted list based on a key selector function. public static SearchResult GetFloorIndex(this IList sortedItems, TKey key, Func getKeyFunc, out int index) where TKey : IComparable Parameters sortedItems IList The sorted list to search in. key TKey The key to search for. getKeyFunc Func A function that extracts the key from an item. index int When this method returns, contains the index of the floor item if found; otherwise, -1. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters TKey The type of the key. Item The type of items in the list. GetFloor(IList, TKey, Func, out Item) Gets the floor item in a sorted list based on a key selector function. public static SearchResult GetFloor(this IList sortedItems, TKey keyQuantity, Func getKeyQuantityFunc, out Item dst) where TKey : IComparable Parameters sortedItems IList The sorted list to search in. keyQuantity TKey The key to search for. getKeyQuantityFunc Func A function that extracts the key from an item. dst Item When this method returns, contains the floor item if found; otherwise, the default value for the type. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters TKey The type of the key. Item The type of items in the list. GetIndexBasedEnumerable(IList) Creates an enumerable that provides access to all elements in a list by index. public static ListIndexBasedEnumerable GetIndexBasedEnumerable(this IList src) Parameters src IList The source list Returns ListIndexBasedEnumerable A ListIndexBasedEnumerable for the entire list Type Parameters TItem The type of elements in the list GetIndexBasedEnumerable(IList, int, int) Creates an enumerable that provides access to a range of elements in a list by index. public static ListIndexBasedEnumerable GetIndexBasedEnumerable(this IList src, int begin, int end) Parameters src IList The source list begin int The starting index (inclusive) end int The ending index (exclusive) Returns ListIndexBasedEnumerable A ListIndexBasedEnumerable for the specified range Type Parameters TItem The type of elements in the list GetIndexByBinarySearch(IList, TItem) Performs a binary search on the specified collection. public static int GetIndexByBinarySearch(this IList sortedItems, TItem value) Parameters sortedItems IList The list to be searched. value TItem The value to search for. Returns int Type Parameters TItem The type of the item. GetIndexByBinarySearch(IList, TItem, IComparer) Performs a binary search on the specified collection. public static int GetIndexByBinarySearch(this IList sortedItems, TItem value, IComparer comparer) Parameters sortedItems IList The list to be searched. value TItem The value to search for. comparer IComparer The comparer that is used to compare the value with the list items. Returns int Type Parameters TItem The type of the item. GetIndexByBinarySearch(IList, TSearch, Func) Performs a binary search on the specified collection. public static int GetIndexByBinarySearch(this IList sortedItems, TSearch value, Func comparer) Parameters sortedItems IList The list to be searched. value TSearch The value to search for. comparer Func The comparer that is used to compare the value with the list items. Returns int Type Parameters TItem The type of the item. TSearch The type of the searched item. GetInterpolatedBoundary(List, double, double, Func, out TItem, out TItem, out TItem) Gets interpolated boundary items from a list based on a key value and interval. public static void GetInterpolatedBoundary(this List scpList, double z, double zInterval, Func keyFunc, out TItem cur, out TItem floor, out TItem ceil) where TItem : IAdditionOperators, IMultiplyOperators Parameters scpList List The source list. z double The key value to find or interpolate at. zInterval double The interval to consider around the key value. keyFunc Func A function that extracts the key from an item. cur TItem When this method returns, contains the interpolated item at the key value. floor TItem When this method returns, contains the floor item. ceil TItem When this method returns, contains the ceiling item. Type Parameters TItem The type of items in the list, which must support addition and multiplication operators. GetInterpolatedValue(List, double, Func, OuterPolationMode) Gets an interpolated value from a sorted list based on a double key, using operators for addition and multiplication. public static TItem GetInterpolatedValue(this List sortedItems, double keyQuantity, Func getKeyQuantityFunc, ListUtil.OuterPolationMode outerPolationMode) where TItem : IAdditionOperators, IMultiplyOperators Parameters sortedItems List The sorted list to interpolate from. keyQuantity double The key to find or interpolate at. getKeyQuantityFunc Func A function that extracts the key from an item. outerPolationMode ListUtil.OuterPolationMode The mode to use when the key is outside the range of the list. Returns TItem The interpolated value. Type Parameters TItem The type of items in the list, which must support addition and multiplication operators. GetInterpolatedValue(List, double, Func, Func, Func, OuterPolationMode) Gets an interpolated value from a sorted list based on a double key. public static TItem GetInterpolatedValue(this List sortedItems, double key, Func getKeyFunc, Func itemAddingFunc, Func itemScalingFunc, ListUtil.OuterPolationMode outerPolationMode) Parameters sortedItems List The sorted list to interpolate from. key double The key to find or interpolate at. getKeyFunc Func A function that extracts the key from an item. itemAddingFunc Func A function that adds two items together. itemScalingFunc Func A function that scales an item by a factor. outerPolationMode ListUtil.OuterPolationMode The mode to use when the key is outside the range of the list. Returns TItem The interpolated value. Type Parameters TItem The type of items in the list. GetInterpolatedValue(List, TimeSpan, Func, OuterPolationMode) Gets an interpolated value from a sorted list based on a TimeSpan key, using operators for addition and multiplication. public static TItem GetInterpolatedValue(this List sortedItems, TimeSpan keyQuantity, Func getKeyQuantityFunc, ListUtil.OuterPolationMode outerPolationMode) where TItem : IAdditionOperators, IMultiplyOperators Parameters sortedItems List The sorted list to interpolate from. keyQuantity TimeSpan The TimeSpan key to find or interpolate at. getKeyQuantityFunc Func A function that extracts the TimeSpan key from an item. outerPolationMode ListUtil.OuterPolationMode The mode to use when the key is outside the range of the list. Returns TItem The interpolated value. Type Parameters TItem The type of items in the list, which must support addition and multiplication operators. GetInterpolatedValue(List, TimeSpan, Func, Func, Func, OuterPolationMode) Gets an interpolated value from a sorted list based on a TimeSpan key. public static TItem GetInterpolatedValue(this List sortedItems, TimeSpan key, Func getKeyFunc, Func itemAddingFunc, Func itemScalingFunc, ListUtil.OuterPolationMode outerPolationMode) Parameters sortedItems List The sorted list to interpolate from. key TimeSpan The TimeSpan key to find or interpolate at. getKeyFunc Func A function that extracts the TimeSpan key from an item. itemAddingFunc Func A function that adds two items together. itemScalingFunc Func A function that scales an item by a factor. outerPolationMode ListUtil.OuterPolationMode The mode to use when the key is outside the range of the list. Returns TItem The interpolated value. Type Parameters TItem The type of items in the list. GetInterpolatedValue(List, TKey, Func, Func, Func, Func, Func, Func, OuterPolationMode) Gets an interpolated value from a sorted list based on a key using custom comparison and arithmetic functions. public static TItem GetInterpolatedValue(this List sortedItems, TKey key, Func getKeyFunc, Func keyCompareFunc, Func keyMinusFunc, Func keyDivFunc, Func addingFunc, Func scalingFunc, ListUtil.OuterPolationMode outerPolationMode) Parameters sortedItems List The sorted list of items key TKey The key to search for getKeyFunc Func A function that extracts the key from an item keyCompareFunc Func A function that compares two keys keyMinusFunc Func A function that subtracts one key from another keyDivFunc Func A function that divides one key by another addingFunc Func A function that adds two items scalingFunc Func A function that scales an item by a factor outerPolationMode ListUtil.OuterPolationMode The mode for handling values outside the range Returns TItem The interpolated value Type Parameters TKey The type of the key TItem The type of elements in the list GetListByKeyBoundary(List, Func, TKey, bool, TKey, bool) Gets a subset of a sorted list based on key boundaries. public static List GetListByKeyBoundary(this List sortedItems, Func getKeyQuantityFunc, TKey begin, bool isIncludingBeginFloor, TKey end, bool isIncludingEndCeil) where TKey : IComparable Parameters sortedItems List The sorted list to filter. getKeyQuantityFunc Func A function that extracts the key from an item. begin TKey The beginning key of the range. isIncludingBeginFloor bool Whether to include the floor of the beginning key. end TKey The ending key of the range. isIncludingEndCeil bool Whether to include the ceiling of the ending key. Returns List A new list containing only the items within the specified key range. Type Parameters TKey The type of the key, which must be comparable. TItem The type of items in the list. GetNearestIndex(IList, TItemKey, Func, out int) Finds the index of the element in a sorted list that is nearest to the specified key. public static SearchResult GetNearestIndex(this IList src, TItemKey key, Func itemToKeyDistanceFunc, out int index) Parameters src IList The source list key TItemKey The key to search for itemToKeyDistanceFunc Func A function that calculates the distance between an item and the key index int When this method returns, contains the index of the nearest element if found; otherwise, -1 Returns SearchResult A BinarySearchResult indicating the result of the search Type Parameters TItem The type of elements in the list TItemKey The type of the key to search for GetNearestIndex(IList, TItemKey, Func, Func, out int) Finds the index of the element in a sorted list that is nearest to the specified key using custom comparison functions. public static SearchResult GetNearestIndex(this IList src, TItemKey key, Func itemCompareToKeyFunc, Func itemToKeyDistanceFunc, out int index) Parameters src IList The source list (must be in ascending order) key TItemKey The key to search for itemCompareToKeyFunc Func A function that compares an item to the key itemToKeyDistanceFunc Func A function that calculates the distance between an item and the key index int When this method returns, contains the index of the nearest element if found; otherwise, -1 Returns SearchResult A BinarySearchResult indicating the result of the search Type Parameters TItem The type of elements in the list TItemKey The type of the key to search for Exceptions InvalidProgramException Thrown when an unexpected search result occurs GetSubListWithInterpolatedHeadAndTail(List, double, double, Func, Func, Func) Creates a new list with interpolated head and tail items based on the specified double key range. public static List GetSubListWithInterpolatedHeadAndTail(this List src, double beginKey, double endKey, Func getKeyFunc, Func itemAddingFunc, Func itemScalingFunc) Parameters src List The source list. beginKey double The beginning key of the range. endKey double The ending key of the range. getKeyFunc Func A function that extracts the double key from an item. itemAddingFunc Func A function that adds two items together. itemScalingFunc Func A function that scales an item by a factor. Returns List A new list with interpolated head and tail items. Type Parameters TItem The type of items in the list. GetSubListWithInterpolatedHeadAndTail(List, TimeSpan, TimeSpan, Func, Func, Func) Creates a new list with interpolated head and tail items based on the specified TimeSpan key range. public static List GetSubListWithInterpolatedHeadAndTail(this List src, TimeSpan beginKey, TimeSpan endKey, Func getKeyFunc, Func itemAddingFunc, Func itemScalingFunc) Parameters src List The source list. beginKey TimeSpan The beginning TimeSpan key of the range. endKey TimeSpan The ending TimeSpan key of the range. getKeyFunc Func A function that extracts the TimeSpan key from an item. itemAddingFunc Func A function that adds two items together. itemScalingFunc Func A function that scales an item by a factor. Returns List A new list with interpolated head and tail items. Type Parameters TItem The type of items in the list. GetSubListWithInterpolatedHeadAndTail(List, TKey, TKey, Func, Func, Func, Func, Func, Func) Creates a new list with interpolated head and tail items based on the specified key range. public static List GetSubListWithInterpolatedHeadAndTail(this List src, TKey beginKey, TKey endKey, Func getKeyFunc, Func keyCompareFunc, Func keyMinusFunc, Func keyDivFunc, Func itemAddingFunc, Func itemScalingFunc) Parameters src List The source list. beginKey TKey The beginning key of the range. endKey TKey The ending key of the range. getKeyFunc Func A function that extracts the key from an item. keyCompareFunc Func A function that compares two keys. keyMinusFunc Func A function that subtracts one key from another. keyDivFunc Func A function that divides one key by another to get a ratio. itemAddingFunc Func A function that adds two items together. itemScalingFunc Func A function that scales an item by a factor. Returns List A new list with interpolated head and tail items. Type Parameters TKey The type of the key. TItem The type of items in the list. GetSubListWithInterpolatedTail(List, TimeSpan, Func, Func, Func) Creates a new list with an interpolated tail item based on the specified TimeSpan key. public static List GetSubListWithInterpolatedTail(this List src, TimeSpan endKey, Func getKeyFunc, Func addingFunc, Func scalingFunc) Parameters src List The source list. endKey TimeSpan The ending TimeSpan key for interpolation. getKeyFunc Func A function that extracts the TimeSpan key from an item. addingFunc Func A function that adds two items together. scalingFunc Func A function that scales an item by a factor. Returns List A new list with an interpolated tail item. Type Parameters TItem The type of items in the list. GetSubListWithInterpolatedTail(List, TKey, Func) Creates a new list with an interpolated tail item based on the specified key, using operators for both key and item operations. public static List GetSubListWithInterpolatedTail(this List src, TKey endKey, Func getKeyFunc) where TKey : IComparable, ISubtractionOperators, IDivisionOperators where TItem : IAdditionOperators, IMultiplyOperators Parameters src List The source list. endKey TKey The ending key for interpolation. getKeyFunc Func A function that extracts the key from an item. Returns List A new list with an interpolated tail item. Type Parameters TKey The type of the key, which must support comparison, subtraction, and division operators. TItem The type of items in the list, which must support addition and multiplication operators. GetSubListWithInterpolatedTail(List, TKey, Func, Func, Func, Func, Func, Func) Creates a new list with an interpolated tail item based on the specified key. public static List GetSubListWithInterpolatedTail(this List src, TKey endKey, Func getKeyFunc, Func keyCompareFunc, Func keyMinusFunc, Func keyDivFunc, Func itemAddingFunc, Func itemScalingFunc) Parameters src List The source list. endKey TKey The ending key for interpolation. getKeyFunc Func A function that extracts the key from an item. keyCompareFunc Func A function that compares two keys. keyMinusFunc Func A function that subtracts one key from another. keyDivFunc Func A function that divides one key by another to get a ratio. itemAddingFunc Func A function that adds two items together. itemScalingFunc Func A function that scales an item by a factor. Returns List A new list with an interpolated tail item. Type Parameters TKey The type of the key. TItem The type of items in the list. GetSubListWithInterpolatedTail(List, TKey, Func, Func, Func) Creates a new list with an interpolated tail item based on the specified key, using operators for key operations. public static List GetSubListWithInterpolatedTail(this List src, TKey endKey, Func getKeyFunc, Func addingFunc, Func scalingFunc) where TKey : IComparable, ISubtractionOperators, IDivisionOperators Parameters src List The source list. endKey TKey The ending key for interpolation. getKeyFunc Func A function that extracts the key from an item. addingFunc Func A function that adds two items together. scalingFunc Func A function that scales an item by a factor. Returns List A new list with an interpolated tail item. Type Parameters TKey The type of the key, which must support comparison, subtraction, and division operators. TItem The type of items in the list. GetSubList(IList, int, int) public static SubList GetSubList(this IList src, int beginIndex, int endIndex) Parameters src IList beginIndex int endIndex int Returns SubList Type Parameters TItem Swap(IList, int, int) Swaps two elements in a list at the specified indices. public static void Swap(this IList src, int indexA, int indexB) Parameters src IList The source list indexA int The index of the first element to swap indexB int The index of the second element to swap Type Parameters TItem The type of elements in the list TestFloorCeil() Tests the floor and ceiling functionality with sample data. public static void TestFloorCeil()" + "summary": "Class ListUtil Namespace Hi.Common.Collections Assembly HiGeom.dll Provides utility methods for working with lists and collections. public static class ListUtil Inheritance object ListUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetCeilBySeek(IList, TKey, Func, out TItem, out int, int, SeekDirection) Gets the ceil item by seeking with the specified direction. public static SearchResult GetCeilBySeek(this IList src, TKey key, Func getKeyFunc, out TItem ceilValue, out int ceilIndex, int seekingStartIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable Parameters src IList The source list. key TKey The key to search for. getKeyFunc Func A function that extracts the key from an item. ceilValue TItem The output ceil value. ceilIndex int The output ceil index. seekingStartIndex int The start index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The search result. Type Parameters TItem The type of items in the list. TKey The type of the key. GetCeilIndexBySeek(IList, TKey, Func, out int, int, SeekDirection) Gets the ceil index by seeking with the specified direction. public static SearchResult GetCeilIndexBySeek(this IList src, TKey key, Func getKeyFunc, out int ceilIndex, int seekingStartIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable Parameters src IList The source list. key TKey The key to search for. getKeyFunc Func A function that extracts the key from an item. ceilIndex int The output ceil index. seekingStartIndex int The start index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The search result. Type Parameters TItem The type of items in the list. TKey The type of the key. Remarks The Free seek direction does not loss additional performance. The seek direction only effect the resulting value by the seekingStartIndex bound. GetCeilIndex(IList, ItemKey, Func, out int) Gets the ceiling index of an item in a sorted list based on a key comparison. public static SearchResult GetCeilIndex(this IList sortedItems, ItemKey key, Func comparingFunc, out int index) Parameters sortedItems IList The sorted list to search in. key ItemKey The key to search for. comparingFunc Func A function that compares an item to the key. index int When this method returns, contains the index of the ceiling item if found; otherwise, -1. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters Item The type of items in the list. ItemKey The type of the key to search for. GetCeilIndex(IList, TKey, Func, out int) Gets the ceiling index of an item in a sorted list based on a key selector function. public static SearchResult GetCeilIndex(this IList sortedItems, TKey keyQuantity, Func getKeyQuantityFunc, out int index) where TKey : IComparable Parameters sortedItems IList The sorted list to search in. keyQuantity TKey The key to search for. getKeyQuantityFunc Func A function that extracts the key from an item. index int When this method returns, contains the index of the ceiling item if found; otherwise, -1. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters TKey The type of the key. Item The type of items in the list. GetCeil(IList, TKey, Func, out Item) Gets the ceiling item in a sorted list based on a key selector function. public static SearchResult GetCeil(this IList sortedItems, TKey keyQuantity, Func getKeyQuantityFunc, out Item dst) where TKey : IComparable Parameters sortedItems IList The sorted list to search in. keyQuantity TKey The key to search for. getKeyQuantityFunc Func A function that extracts the key from an item. dst Item When this method returns, contains the ceiling item if found; otherwise, the default value for the type. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters TKey The type of the key. Item The type of items in the list. GetFloorBySeek(IList, TKey, Func, out TItem, out int, int, SeekDirection) Gets the floor item by seeking with the specified direction. public static SearchResult GetFloorBySeek(this IList src, TKey key, Func getKeyFunc, out TItem floorValue, out int floorIndex, int seekingStartIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable Parameters src IList The source list. key TKey The key to search for. getKeyFunc Func A function that extracts the key from an item. floorValue TItem The output floor value. floorIndex int The output floor index. seekingStartIndex int The start index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The search result. Type Parameters TItem The type of items in the list. TKey The type of the key. GetFloorIndexBySeek(IList, TKey, Func, out int, int, SeekDirection) Gets the floor index by seeking with the specified direction. public static SearchResult GetFloorIndexBySeek(this IList src, TKey key, Func getKeyFunc, out int floorIndex, int seekingStartIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable Parameters src IList The source list. key TKey The key to search for. getKeyFunc Func A function that extracts the key from an item. floorIndex int The output floor index. seekingStartIndex int The start index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The search result. Type Parameters TItem The type of items in the list. TKey The type of the key. Remarks The Free seek direction does not loss additional performance. The seek direction only effect the resulting value by the seekingStartIndex bound. GetFloorIndex(IList, ItemKey, Func, out int) Gets the floor index of an item in a sorted list based on a key comparison. public static SearchResult GetFloorIndex(this IList sortedItems, ItemKey key, Func comparingFunc, out int index) Parameters sortedItems IList The sorted list to search in. key ItemKey The key to search for. comparingFunc Func A function that compares an item to the key. index int When this method returns, contains the index of the floor item if found; otherwise, -1. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters Item The type of items in the list. ItemKey The type of the key to search for. GetFloorIndex(IList, TKey, Func, out int) Gets the floor index of an item in a sorted list based on a key selector function. public static SearchResult GetFloorIndex(this IList sortedItems, TKey key, Func getKeyFunc, out int index) where TKey : IComparable Parameters sortedItems IList The sorted list to search in. key TKey The key to search for. getKeyFunc Func A function that extracts the key from an item. index int When this method returns, contains the index of the floor item if found; otherwise, -1. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters TKey The type of the key. Item The type of items in the list. GetFloor(IList, TKey, Func, out Item) Gets the floor item in a sorted list based on a key selector function. public static SearchResult GetFloor(this IList sortedItems, TKey keyQuantity, Func getKeyQuantityFunc, out Item dst) where TKey : IComparable Parameters sortedItems IList The sorted list to search in. keyQuantity TKey The key to search for. getKeyQuantityFunc Func A function that extracts the key from an item. dst Item When this method returns, contains the floor item if found; otherwise, the default value for the type. Returns SearchResult A SearchResult indicating the result of the search. Type Parameters TKey The type of the key. Item The type of items in the list. GetIndexBasedEnumerable(IList) Creates an enumerable that provides access to all elements in a list by index. public static ListIndexBasedEnumerable GetIndexBasedEnumerable(this IList src) Parameters src IList The source list Returns ListIndexBasedEnumerable A ListIndexBasedEnumerable for the entire list Type Parameters TItem The type of elements in the list GetIndexBasedEnumerable(IList, int, int) Creates an enumerable that provides access to a range of elements in a list by index. public static ListIndexBasedEnumerable GetIndexBasedEnumerable(this IList src, int begin, int end) Parameters src IList The source list begin int The starting index (inclusive) end int The ending index (exclusive) Returns ListIndexBasedEnumerable A ListIndexBasedEnumerable for the specified range Type Parameters TItem The type of elements in the list GetIndexByBinarySearch(IList, TItem) Performs a binary search on the specified collection. public static int GetIndexByBinarySearch(this IList sortedItems, TItem value) Parameters sortedItems IList The list to be searched. value TItem The value to search for. Returns int Type Parameters TItem The type of the item. GetIndexByBinarySearch(IList, TItem, IComparer) Performs a binary search on the specified collection. public static int GetIndexByBinarySearch(this IList sortedItems, TItem value, IComparer comparer) Parameters sortedItems IList The list to be searched. value TItem The value to search for. comparer IComparer The comparer that is used to compare the value with the list items. Returns int Type Parameters TItem The type of the item. GetIndexByBinarySearch(IList, TSearch, Func) Performs a binary search on the specified collection. public static int GetIndexByBinarySearch(this IList sortedItems, TSearch value, Func comparer) Parameters sortedItems IList The list to be searched. value TSearch The value to search for. comparer Func The comparer that is used to compare the value with the list items. Returns int Type Parameters TItem The type of the item. TSearch The type of the searched item. GetInterpolatedBoundary(List, double, double, Func, out TItem, out TItem, out TItem) Gets interpolated boundary items from a list based on a key value and interval. public static void GetInterpolatedBoundary(this List scpList, double z, double zInterval, Func keyFunc, out TItem cur, out TItem floor, out TItem ceil) where TItem : IAdditionOperators, IMultiplyOperators Parameters scpList List The source list. z double The key value to find or interpolate at. zInterval double The interval to consider around the key value. keyFunc Func A function that extracts the key from an item. cur TItem When this method returns, contains the interpolated item at the key value. floor TItem When this method returns, contains the floor item. ceil TItem When this method returns, contains the ceiling item. Type Parameters TItem The type of items in the list, which must support addition and multiplication operators. GetInterpolatedValue(List, double, Func, OuterPolationMode) Gets an interpolated value from a sorted list based on a double key, using operators for addition and multiplication. public static TItem GetInterpolatedValue(this List sortedItems, double keyQuantity, Func getKeyQuantityFunc, ListUtil.OuterPolationMode outerPolationMode) where TItem : IAdditionOperators, IMultiplyOperators Parameters sortedItems List The sorted list to interpolate from. keyQuantity double The key to find or interpolate at. getKeyQuantityFunc Func A function that extracts the key from an item. outerPolationMode ListUtil.OuterPolationMode The mode to use when the key is outside the range of the list. Returns TItem The interpolated value. Type Parameters TItem The type of items in the list, which must support addition and multiplication operators. GetInterpolatedValue(List, double, Func, Func, Func, OuterPolationMode) Gets an interpolated value from a sorted list based on a double key. public static TItem GetInterpolatedValue(this List sortedItems, double key, Func getKeyFunc, Func itemAddingFunc, Func itemScalingFunc, ListUtil.OuterPolationMode outerPolationMode) Parameters sortedItems List The sorted list to interpolate from. key double The key to find or interpolate at. getKeyFunc Func A function that extracts the key from an item. itemAddingFunc Func A function that adds two items together. itemScalingFunc Func A function that scales an item by a factor. outerPolationMode ListUtil.OuterPolationMode The mode to use when the key is outside the range of the list. Returns TItem The interpolated value. Type Parameters TItem The type of items in the list. GetInterpolatedValue(List, TimeSpan, Func, OuterPolationMode) Gets an interpolated value from a sorted list based on a TimeSpan key, using operators for addition and multiplication. public static TItem GetInterpolatedValue(this List sortedItems, TimeSpan keyQuantity, Func getKeyQuantityFunc, ListUtil.OuterPolationMode outerPolationMode) where TItem : IAdditionOperators, IMultiplyOperators Parameters sortedItems List The sorted list to interpolate from. keyQuantity TimeSpan The TimeSpan key to find or interpolate at. getKeyQuantityFunc Func A function that extracts the TimeSpan key from an item. outerPolationMode ListUtil.OuterPolationMode The mode to use when the key is outside the range of the list. Returns TItem The interpolated value. Type Parameters TItem The type of items in the list, which must support addition and multiplication operators. GetInterpolatedValue(List, TimeSpan, Func, Func, Func, OuterPolationMode) Gets an interpolated value from a sorted list based on a TimeSpan key. public static TItem GetInterpolatedValue(this List sortedItems, TimeSpan key, Func getKeyFunc, Func itemAddingFunc, Func itemScalingFunc, ListUtil.OuterPolationMode outerPolationMode) Parameters sortedItems List The sorted list to interpolate from. key TimeSpan The TimeSpan key to find or interpolate at. getKeyFunc Func A function that extracts the TimeSpan key from an item. itemAddingFunc Func A function that adds two items together. itemScalingFunc Func A function that scales an item by a factor. outerPolationMode ListUtil.OuterPolationMode The mode to use when the key is outside the range of the list. Returns TItem The interpolated value. Type Parameters TItem The type of items in the list. GetInterpolatedValue(List, TKey, Func, Func, Func, Func, Func, Func, OuterPolationMode) Gets an interpolated value from a sorted list based on a key using custom comparison and arithmetic functions. public static TItem GetInterpolatedValue(this List sortedItems, TKey key, Func getKeyFunc, Func keyCompareFunc, Func keyMinusFunc, Func keyDivFunc, Func addingFunc, Func scalingFunc, ListUtil.OuterPolationMode outerPolationMode) Parameters sortedItems List The sorted list of items key TKey The key to search for getKeyFunc Func A function that extracts the key from an item keyCompareFunc Func A function that compares two keys keyMinusFunc Func A function that subtracts one key from another keyDivFunc Func A function that divides one key by another addingFunc Func A function that adds two items scalingFunc Func A function that scales an item by a factor outerPolationMode ListUtil.OuterPolationMode The mode for handling values outside the range Returns TItem The interpolated value Type Parameters TKey The type of the key TItem The type of elements in the list GetListByKeyBoundary(List, Func, TKey, bool, TKey, bool) Gets a subset of a sorted list based on key boundaries. public static List GetListByKeyBoundary(this List sortedItems, Func getKeyQuantityFunc, TKey begin, bool isIncludingBeginFloor, TKey end, bool isIncludingEndCeil) where TKey : IComparable Parameters sortedItems List The sorted list to filter. getKeyQuantityFunc Func A function that extracts the key from an item. begin TKey The beginning key of the range. isIncludingBeginFloor bool Whether to include the floor of the beginning key. end TKey The ending key of the range. isIncludingEndCeil bool Whether to include the ceiling of the ending key. Returns List A new list containing only the items within the specified key range. Type Parameters TKey The type of the key, which must be comparable. TItem The type of items in the list. GetNearestIndex(IList, TItemKey, Func, out int) Finds the index of the element in a sorted list that is nearest to the specified key. public static SearchResult GetNearestIndex(this IList src, TItemKey key, Func itemToKeyDistanceFunc, out int index) Parameters src IList The source list key TItemKey The key to search for itemToKeyDistanceFunc Func A function that calculates the distance between an item and the key index int When this method returns, contains the index of the nearest element if found; otherwise, -1 Returns SearchResult A BinarySearchResult indicating the result of the search Type Parameters TItem The type of elements in the list TItemKey The type of the key to search for GetNearestIndex(IList, TItemKey, Func, Func, out int) Finds the index of the element in a sorted list that is nearest to the specified key using custom comparison functions. public static SearchResult GetNearestIndex(this IList src, TItemKey key, Func itemCompareToKeyFunc, Func itemToKeyDistanceFunc, out int index) Parameters src IList The source list (must be in ascending order) key TItemKey The key to search for itemCompareToKeyFunc Func A function that compares an item to the key itemToKeyDistanceFunc Func A function that calculates the distance between an item and the key index int When this method returns, contains the index of the nearest element if found; otherwise, -1 Returns SearchResult A BinarySearchResult indicating the result of the search Type Parameters TItem The type of elements in the list TItemKey The type of the key to search for Exceptions InvalidProgramException Thrown when an unexpected search result occurs GetSubListWithInterpolatedHeadAndTail(List, double, double, Func, Func, Func) Creates a new list with interpolated head and tail items based on the specified double key range. public static List GetSubListWithInterpolatedHeadAndTail(this List src, double beginKey, double endKey, Func getKeyFunc, Func itemAddingFunc, Func itemScalingFunc) Parameters src List The source list. beginKey double The beginning key of the range. endKey double The ending key of the range. getKeyFunc Func A function that extracts the double key from an item. itemAddingFunc Func A function that adds two items together. itemScalingFunc Func A function that scales an item by a factor. Returns List A new list with interpolated head and tail items. Type Parameters TItem The type of items in the list. GetSubListWithInterpolatedHeadAndTail(List, TimeSpan, TimeSpan, Func, Func, Func) Creates a new list with interpolated head and tail items based on the specified TimeSpan key range. public static List GetSubListWithInterpolatedHeadAndTail(this List src, TimeSpan beginKey, TimeSpan endKey, Func getKeyFunc, Func itemAddingFunc, Func itemScalingFunc) Parameters src List The source list. beginKey TimeSpan The beginning TimeSpan key of the range. endKey TimeSpan The ending TimeSpan key of the range. getKeyFunc Func A function that extracts the TimeSpan key from an item. itemAddingFunc Func A function that adds two items together. itemScalingFunc Func A function that scales an item by a factor. Returns List A new list with interpolated head and tail items. Type Parameters TItem The type of items in the list. GetSubListWithInterpolatedHeadAndTail(List, TKey, TKey, Func, Func, Func, Func, Func, Func) Creates a new list with interpolated head and tail items based on the specified key range. public static List GetSubListWithInterpolatedHeadAndTail(this List src, TKey beginKey, TKey endKey, Func getKeyFunc, Func keyCompareFunc, Func keyMinusFunc, Func keyDivFunc, Func itemAddingFunc, Func itemScalingFunc) Parameters src List The source list. beginKey TKey The beginning key of the range. endKey TKey The ending key of the range. getKeyFunc Func A function that extracts the key from an item. keyCompareFunc Func A function that compares two keys. keyMinusFunc Func A function that subtracts one key from another. keyDivFunc Func A function that divides one key by another to get a ratio. itemAddingFunc Func A function that adds two items together. itemScalingFunc Func A function that scales an item by a factor. Returns List A new list with interpolated head and tail items. Type Parameters TKey The type of the key. TItem The type of items in the list. GetSubListWithInterpolatedTail(List, TimeSpan, Func, Func, Func) Creates a new list with an interpolated tail item based on the specified TimeSpan key. public static List GetSubListWithInterpolatedTail(this List src, TimeSpan endKey, Func getKeyFunc, Func addingFunc, Func scalingFunc) Parameters src List The source list. endKey TimeSpan The ending TimeSpan key for interpolation. getKeyFunc Func A function that extracts the TimeSpan key from an item. addingFunc Func A function that adds two items together. scalingFunc Func A function that scales an item by a factor. Returns List A new list with an interpolated tail item. Type Parameters TItem The type of items in the list. GetSubListWithInterpolatedTail(List, TKey, Func) Creates a new list with an interpolated tail item based on the specified key, using operators for both key and item operations. public static List GetSubListWithInterpolatedTail(this List src, TKey endKey, Func getKeyFunc) where TKey : IComparable, ISubtractionOperators, IDivisionOperators where TItem : IAdditionOperators, IMultiplyOperators Parameters src List The source list. endKey TKey The ending key for interpolation. getKeyFunc Func A function that extracts the key from an item. Returns List A new list with an interpolated tail item. Type Parameters TKey The type of the key, which must support comparison, subtraction, and division operators. TItem The type of items in the list, which must support addition and multiplication operators. GetSubListWithInterpolatedTail(List, TKey, Func, Func, Func, Func, Func, Func) Creates a new list with an interpolated tail item based on the specified key. public static List GetSubListWithInterpolatedTail(this List src, TKey endKey, Func getKeyFunc, Func keyCompareFunc, Func keyMinusFunc, Func keyDivFunc, Func itemAddingFunc, Func itemScalingFunc) Parameters src List The source list. endKey TKey The ending key for interpolation. getKeyFunc Func A function that extracts the key from an item. keyCompareFunc Func A function that compares two keys. keyMinusFunc Func A function that subtracts one key from another. keyDivFunc Func A function that divides one key by another to get a ratio. itemAddingFunc Func A function that adds two items together. itemScalingFunc Func A function that scales an item by a factor. Returns List A new list with an interpolated tail item. Type Parameters TKey The type of the key. TItem The type of items in the list. GetSubListWithInterpolatedTail(List, TKey, Func, Func, Func) Creates a new list with an interpolated tail item based on the specified key, using operators for key operations. public static List GetSubListWithInterpolatedTail(this List src, TKey endKey, Func getKeyFunc, Func addingFunc, Func scalingFunc) where TKey : IComparable, ISubtractionOperators, IDivisionOperators Parameters src List The source list. endKey TKey The ending key for interpolation. getKeyFunc Func A function that extracts the key from an item. addingFunc Func A function that adds two items together. scalingFunc Func A function that scales an item by a factor. Returns List A new list with an interpolated tail item. Type Parameters TKey The type of the key, which must support comparison, subtraction, and division operators. TItem The type of items in the list. GetSubList(IList, int, int) Gets a sub-list view of the specified list within the given index range. public static SubList GetSubList(this IList src, int beginIndex, int endIndex) Parameters src IList The source list. beginIndex int The starting index (inclusive). endIndex int The ending index (exclusive). Returns SubList A sub-list view of the specified range. Type Parameters TItem The type of items in the list. Swap(IList, int, int) Swaps two elements in a list at the specified indices. public static void Swap(this IList src, int indexA, int indexB) Parameters src IList The source list indexA int The index of the first element to swap indexB int The index of the second element to swap Type Parameters TItem The type of elements in the list TestFloorCeil() Tests the floor and ceiling functionality with sample data. public static void TestFloorCeil()" }, "api/Hi.Common.Collections.SearchTargetMode.html": { "href": "api/Hi.Common.Collections.SearchTargetMode.html", @@ -372,12 +372,12 @@ "api/Hi.Common.Collections.SortedListUtil.html": { "href": "api/Hi.Common.Collections.SortedListUtil.html", "title": "Class SortedListUtil | HiAPI-C# 2025", - "summary": "Class SortedListUtil Namespace Hi.Common.Collections Assembly HiGeom.dll Utility class providing extension methods for SortedList operations. public static class SortedListUtil Inheritance object SortedListUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetByMethod(SortedList, TKey, SearchTargetMode, out V, int, int) Get value by searchMethod. If return value is NotExisted, resultValue will be the default value of V. public static SearchResult GetByMethod(this SortedList src, TKey key, SearchTargetMode searchMethod, out V resultValue, int beginIndex = 0, int endIndex = -1) where TKey : IComparable Parameters src SortedList source key TKey key searchMethod SearchTargetMode search method resultValue V searched value beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult search result Type Parameters TKey Key type V Value type GetCeilBySeek(SortedList, TKey, out V, out int, int, SeekDirection) Gets the ceil value by seeking with the specified direction. public static SearchResult GetCeilBySeek(this SortedList src, TKey key, out V ceilValue, out int ceilListIndex, int seekingStartListIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable Parameters src SortedList The source sorted list. key TKey The key to search for. ceilValue V The output ceil value. ceilListIndex int The output ceil list index. seekingStartListIndex int The start list index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The binary search result. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetCeilListIndexBySeek(SortedList, TKey, out int, int, SeekDirection) public static SearchResult GetCeilListIndexBySeek(this SortedList src, TKey key, out int ceilListIndex, int seekingStartListIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable Parameters src SortedList key TKey ceilListIndex int seekingStartListIndex int start list index for seeking. seekDirection SeekDirection Returns SearchResult Type Parameters TKey V Remarks The Free seek direction does not loss additional performance. The seek direction only effect the resulting value by the seekingStartListIndex bound. GetCeilListIndex(SortedList, TKey, out int, int, int) Gets the index of the element in a sorted list that has a key greater than or equal to a specified key. public static SearchResult GetCeilListIndex(this SortedList src, TKey key, out int resultListIndex, int beginListIndex = 0, int endListIndex = -1) where TKey : IComparable Parameters src SortedList The source sorted list. key TKey The key to search for. resultListIndex int When this method returns, contains the index of the ceiling element if found; otherwise, -1. beginListIndex int The starting index for the search range (inclusive). endListIndex int The ending index for the search range (exclusive). Returns SearchResult A value indicating whether an exact match was found, a ceiling value was found, or no suitable element exists. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetCeil(SortedList, TKey, out V, int, int) Get ceil value by key without returning the ceil index. public static SearchResult GetCeil(this SortedList src, TKey key, out V resultValue, int beginIndex = 0, int endIndex = -1) where TKey : IComparable Parameters src SortedList The source sorted list. key TKey The key to search for. resultValue V The ceil value. beginIndex int The starting index for the search range (inclusive). endIndex int The ending index for the search range (exclusive). Returns SearchResult The binary search result. Type Parameters TKey Key type. V Value type. GetCeil(SortedList, TKey, out V, out int, int, int) Get ceil value by key. If return value is NotExisted, resultValue will be the default value of V. public static SearchResult GetCeil(this SortedList src, TKey key, out V resultValue, out int ceilIndex, int beginIndex = 0, int endIndex = -1) where TKey : IComparable Parameters src SortedList source key TKey key resultValue V ceil value ceilIndex int The output ceil index. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult search result Type Parameters TKey Key type V Value type GetEnumerableByKeyBoundary(SortedList, TKey, bool, TKey, bool, int, int) Gets a sequence of key-value pairs from a sorted list within a specified key range. public static IEnumerable> GetEnumerableByKeyBoundary(this SortedList src, TKey begin, bool isIncludingBeginFloor, TKey end, bool isIncludingEndCeil, int beginIndex = 0, int endIndex = -1) where TKey : IComparable Parameters src SortedList The source sorted list. begin TKey The beginning key of the range. isIncludingBeginFloor bool Whether to include the floor value of the beginning key. end TKey The ending key of the range. isIncludingEndCeil bool Whether to include the ceiling value of the ending key. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns IEnumerable> A sequence of key-value pairs within the specified range. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetFloorBySeek(SortedList, TKey, out V, out int, int, SeekDirection) Gets the floor value by seeking with the specified direction. public static SearchResult GetFloorBySeek(this SortedList src, TKey key, out V floorValue, out int floorListIndex, int seekingStartListIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable Parameters src SortedList The source sorted list. key TKey The key to search for. floorValue V The output floor value. floorListIndex int The output floor list index. seekingStartListIndex int The start list index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The binary search result. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetFloorListIndexBySeek(SortedList, TKey, out int, int, SeekDirection) public static SearchResult GetFloorListIndexBySeek(this SortedList src, TKey key, out int floorListIndex, int seekingStartListIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable Parameters src SortedList key TKey floorListIndex int seekingStartListIndex int start list index for seeking. seekDirection SeekDirection Returns SearchResult Type Parameters TKey V Remarks The Free seek direction does not loss additional performance. The seek direction only effect the resulting value by the seekingStartListIndex bound. GetFloorListIndex(SortedList, TKey, out int, int, int) Gets the index of the element in a sorted list that has a key less than or equal to a specified key. public static SearchResult GetFloorListIndex(this SortedList src, TKey key, out int resultListIndex, int beginListIndex = 0, int endListIndex = -1) where TKey : IComparable Parameters src SortedList The source sorted list. key TKey The key to search for. resultListIndex int When this method returns, contains the index of the floor element if found; otherwise, -1. beginListIndex int The starting index for the search range (inclusive). endListIndex int The ending index for the search range (exclusive). Returns SearchResult A value indicating whether an exact match was found, a floor value was found, or no suitable element exists. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetFloor(SortedList, TKey, out V, int, int) Get floor value by key. If return value is NotExisted, resultValue will be the default value of V. public static SearchResult GetFloor(this SortedList src, TKey key, out V resultValue, int beginIndex = 0, int endIndex = -1) where TKey : IComparable Parameters src SortedList source key TKey key resultValue V floor value beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult search result Type Parameters TKey Key type V Value type GetFloor(SortedList, TKey, out V, out int, int, int) Get floor value by key. If return value is NotExisted, resultValue will be the default value of V. public static SearchResult GetFloor(this SortedList src, TKey key, out V resultValue, out int floorIndex, int beginIndex = 0, int endIndex = -1) where TKey : IComparable Parameters src SortedList source key TKey key resultValue V floor value floorIndex int The output floor index. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult search result Type Parameters TKey Key type V Value type GetIndexRangeByKeyBoundary(SortedList, TKey, bool, TKey, bool, int, int) Gets the index range by key boundary. public static Range GetIndexRangeByKeyBoundary(this SortedList src, TKey begin, bool isIncludingBeginFloor, TKey end, bool isIncludingEndCeil, int beginListIndex = 0, int endListIndex = -1) where TKey : IComparable Parameters src SortedList The source sorted list. begin TKey The begin key. isIncludingBeginFloor bool Whether to include the floor of begin key. end TKey The end key. isIncludingEndCeil bool Whether to include the ceil of end key. beginListIndex int The starting index for the search range (inclusive). endListIndex int The ending index for the search range (exclusive). Returns Range The index range, or null if not found. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetNearestIndex(SortedList, double, out int, int, int) Gets the index of the element in a sorted list that has a key nearest to a specified key. public static SearchResult GetNearestIndex(this SortedList src, double key, out int resultIndex, int beginIndex = 0, int endIndex = -1) Parameters src SortedList The source sorted list. key double The key to search for. resultIndex int When this method returns, contains the index of the nearest element if found; otherwise, -1. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult A value indicating whether an exact match was found, or the nearest floor/ceiling value. Type Parameters V The type of values in the sorted list. GetNearestKey(SortedList, double, out double, int, int) Gets the key in a sorted list that is nearest to a specified key. public static SearchResult GetNearestKey(this SortedList src, double key, out double resultKey, int beginIndex = 0, int endIndex = -1) Parameters src SortedList The source sorted list. key double The key to search for. resultKey double When this method returns, contains the nearest key if found; otherwise, NaN. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult A value indicating whether an exact match was found, or the nearest floor/ceiling value. Type Parameters V The type of values in the sorted list. GetNearestValue(SortedList, double, out V, int, int) Gets the value in a sorted list that corresponds to the key nearest to a specified key. public static SearchResult GetNearestValue(this SortedList src, double key, out V resultValue, int beginIndex = 0, int endIndex = -1) Parameters src SortedList The source sorted list. key double The key to search for. resultValue V When this method returns, contains the value corresponding to the nearest key if found; otherwise, the default value for the type. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult A value indicating whether an exact match was found, or the nearest floor/ceiling value. Type Parameters V The type of values in the sorted list. GetSortedListByKeyBoundary(SortedList, TKey, bool, TKey, bool, int, int) Creates a new sorted list containing key-value pairs from a source sorted list within a specified key range. public static SortedList GetSortedListByKeyBoundary(this SortedList src, TKey begin, bool isIncludingBeginFloor, TKey end, bool isIncludingEndCeil, int beginIndex = 0, int endIndex = -1) where TKey : IComparable Parameters src SortedList The source sorted list. begin TKey The beginning key of the range. isIncludingBeginFloor bool Whether to include the floor value of the beginning key. end TKey The ending key of the range. isIncludingEndCeil bool Whether to include the ceiling value of the ending key. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SortedList A new sorted list containing key-value pairs within the specified range. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetValuesByKeyBoundary(SortedList, TKey, bool, TKey, bool, int, int) Gets a list of values from a sorted list within a specified key range. public static List GetValuesByKeyBoundary(this SortedList src, TKey begin, bool isIncludingBeginFloor, TKey end, bool isIncludingEndCeil, int beginIndex = 0, int endIndex = -1) where TKey : IComparable Parameters src SortedList The source sorted list. begin TKey The beginning key of the range. isIncludingBeginFloor bool Whether to include the floor value of the beginning key. end TKey The ending key of the range. isIncludingEndCeil bool Whether to include the ceiling value of the ending key. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns List A list of values within the specified range. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. ToSortedList(List, Func) Converts a list of values to a sorted list using a key selector function. public static SortedList ToSortedList(this List src, Func keyFunc) where TKey : IComparable Parameters src List The source list of values. keyFunc Func A function to extract a key from each value. Returns SortedList A sorted list containing the values from the source list, keyed by the extracted keys. Type Parameters TKey The type of keys in the resulting sorted list. TValue The type of values in the list and the resulting sorted list." + "summary": "Class SortedListUtil Namespace Hi.Common.Collections Assembly HiGeom.dll Utility class providing extension methods for SortedList operations. public static class SortedListUtil Inheritance object SortedListUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetByMethod(SortedList, TKey, SearchTargetMode, out V, int, int) Get value by searchMethod. If return value is NotExisted, resultValue will be the default value of V. public static SearchResult GetByMethod(this SortedList src, TKey key, SearchTargetMode searchMethod, out V resultValue, int beginIndex = 0, int endIndex = -1) where TKey : IComparable Parameters src SortedList source key TKey key searchMethod SearchTargetMode search method resultValue V searched value beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult search result Type Parameters TKey Key type V Value type GetCeilBySeek(SortedList, TKey, out V, out int, int, SeekDirection) Gets the ceil value by seeking with the specified direction. public static SearchResult GetCeilBySeek(this SortedList src, TKey key, out V ceilValue, out int ceilListIndex, int seekingStartListIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable Parameters src SortedList The source sorted list. key TKey The key to search for. ceilValue V The output ceil value. ceilListIndex int The output ceil list index. seekingStartListIndex int The start list index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The binary search result. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetCeilListIndexBySeek(SortedList, TKey, out int, int, SeekDirection) Gets the ceil list index by seeking with the specified direction. public static SearchResult GetCeilListIndexBySeek(this SortedList src, TKey key, out int ceilListIndex, int seekingStartListIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable Parameters src SortedList The source sorted list. key TKey The key to search for. ceilListIndex int The output ceil list index. seekingStartListIndex int Start list index for seeking. seekDirection SeekDirection The seek direction. Default is Free. Returns SearchResult The search result. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. Remarks The Free seek direction does not loss additional performance. The seek direction only effect the resulting value by the seekingStartListIndex bound. GetCeilListIndex(SortedList, TKey, out int, int, int) Gets the index of the element in a sorted list that has a key greater than or equal to a specified key. public static SearchResult GetCeilListIndex(this SortedList src, TKey key, out int resultListIndex, int beginListIndex = 0, int endListIndex = -1) where TKey : IComparable Parameters src SortedList The source sorted list. key TKey The key to search for. resultListIndex int When this method returns, contains the index of the ceiling element if found; otherwise, -1. beginListIndex int The starting index for the search range (inclusive). endListIndex int The ending index for the search range (exclusive). Returns SearchResult A value indicating whether an exact match was found, a ceiling value was found, or no suitable element exists. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetCeil(SortedList, TKey, out V, int, int) Get ceil value by key without returning the ceil index. public static SearchResult GetCeil(this SortedList src, TKey key, out V resultValue, int beginIndex = 0, int endIndex = -1) where TKey : IComparable Parameters src SortedList The source sorted list. key TKey The key to search for. resultValue V The ceil value. beginIndex int The starting index for the search range (inclusive). endIndex int The ending index for the search range (exclusive). Returns SearchResult The binary search result. Type Parameters TKey Key type. V Value type. GetCeil(SortedList, TKey, out V, out int, int, int) Get ceil value by key. If return value is NotExisted, resultValue will be the default value of V. public static SearchResult GetCeil(this SortedList src, TKey key, out V resultValue, out int ceilIndex, int beginIndex = 0, int endIndex = -1) where TKey : IComparable Parameters src SortedList source key TKey key resultValue V ceil value ceilIndex int The output ceil index. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult search result Type Parameters TKey Key type V Value type GetEnumerableByKeyBoundary(SortedList, TKey, bool, TKey, bool, int, int) Gets a sequence of key-value pairs from a sorted list within a specified key range. public static IEnumerable> GetEnumerableByKeyBoundary(this SortedList src, TKey begin, bool isIncludingBeginFloor, TKey end, bool isIncludingEndCeil, int beginIndex = 0, int endIndex = -1) where TKey : IComparable Parameters src SortedList The source sorted list. begin TKey The beginning key of the range. isIncludingBeginFloor bool Whether to include the floor value of the beginning key. end TKey The ending key of the range. isIncludingEndCeil bool Whether to include the ceiling value of the ending key. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns IEnumerable> A sequence of key-value pairs within the specified range. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetFloorBySeek(SortedList, TKey, out V, out int, int, SeekDirection) Gets the floor value by seeking with the specified direction. public static SearchResult GetFloorBySeek(this SortedList src, TKey key, out V floorValue, out int floorListIndex, int seekingStartListIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable Parameters src SortedList The source sorted list. key TKey The key to search for. floorValue V The output floor value. floorListIndex int The output floor list index. seekingStartListIndex int The start list index for seeking. seekDirection SeekDirection The seek direction. Returns SearchResult The binary search result. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetFloorListIndexBySeek(SortedList, TKey, out int, int, SeekDirection) Gets the floor list index by seeking with the specified direction. public static SearchResult GetFloorListIndexBySeek(this SortedList src, TKey key, out int floorListIndex, int seekingStartListIndex, SeekDirection seekDirection = SeekDirection.Free) where TKey : IComparable Parameters src SortedList The source sorted list. key TKey The key to search for. floorListIndex int The output floor list index. seekingStartListIndex int Start list index for seeking. seekDirection SeekDirection The seek direction. Default is Free. Returns SearchResult The search result. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. Remarks The Free seek direction does not loss additional performance. The seek direction only effect the resulting value by the seekingStartListIndex bound. GetFloorListIndex(SortedList, TKey, out int, int, int) Gets the index of the element in a sorted list that has a key less than or equal to a specified key. public static SearchResult GetFloorListIndex(this SortedList src, TKey key, out int resultListIndex, int beginListIndex = 0, int endListIndex = -1) where TKey : IComparable Parameters src SortedList The source sorted list. key TKey The key to search for. resultListIndex int When this method returns, contains the index of the floor element if found; otherwise, -1. beginListIndex int The starting index for the search range (inclusive). endListIndex int The ending index for the search range (exclusive). Returns SearchResult A value indicating whether an exact match was found, a floor value was found, or no suitable element exists. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetFloor(SortedList, TKey, out V, int, int) Get floor value by key. If return value is NotExisted, resultValue will be the default value of V. public static SearchResult GetFloor(this SortedList src, TKey key, out V resultValue, int beginIndex = 0, int endIndex = -1) where TKey : IComparable Parameters src SortedList source key TKey key resultValue V floor value beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult search result Type Parameters TKey Key type V Value type GetFloor(SortedList, TKey, out V, out int, int, int) Get floor value by key. If return value is NotExisted, resultValue will be the default value of V. public static SearchResult GetFloor(this SortedList src, TKey key, out V resultValue, out int floorIndex, int beginIndex = 0, int endIndex = -1) where TKey : IComparable Parameters src SortedList source key TKey key resultValue V floor value floorIndex int The output floor index. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult search result Type Parameters TKey Key type V Value type GetIndexRangeByKeyBoundary(SortedList, TKey, bool, TKey, bool, int, int) Gets the index range by key boundary. public static Range GetIndexRangeByKeyBoundary(this SortedList src, TKey begin, bool isIncludingBeginFloor, TKey end, bool isIncludingEndCeil, int beginListIndex = 0, int endListIndex = -1) where TKey : IComparable Parameters src SortedList The source sorted list. begin TKey The begin key. isIncludingBeginFloor bool Whether to include the floor of begin key. end TKey The end key. isIncludingEndCeil bool Whether to include the ceil of end key. beginListIndex int The starting index for the search range (inclusive). endListIndex int The ending index for the search range (exclusive). Returns Range The index range, or null if not found. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetNearestIndex(SortedList, double, out int, int, int) Gets the index of the element in a sorted list that has a key nearest to a specified key. public static SearchResult GetNearestIndex(this SortedList src, double key, out int resultIndex, int beginIndex = 0, int endIndex = -1) Parameters src SortedList The source sorted list. key double The key to search for. resultIndex int When this method returns, contains the index of the nearest element if found; otherwise, -1. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult A value indicating whether an exact match was found, or the nearest floor/ceiling value. Type Parameters V The type of values in the sorted list. GetNearestKey(SortedList, double, out double, int, int) Gets the key in a sorted list that is nearest to a specified key. public static SearchResult GetNearestKey(this SortedList src, double key, out double resultKey, int beginIndex = 0, int endIndex = -1) Parameters src SortedList The source sorted list. key double The key to search for. resultKey double When this method returns, contains the nearest key if found; otherwise, NaN. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult A value indicating whether an exact match was found, or the nearest floor/ceiling value. Type Parameters V The type of values in the sorted list. GetNearestValue(SortedList, double, out V, int, int) Gets the value in a sorted list that corresponds to the key nearest to a specified key. public static SearchResult GetNearestValue(this SortedList src, double key, out V resultValue, int beginIndex = 0, int endIndex = -1) Parameters src SortedList The source sorted list. key double The key to search for. resultValue V When this method returns, contains the value corresponding to the nearest key if found; otherwise, the default value for the type. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SearchResult A value indicating whether an exact match was found, or the nearest floor/ceiling value. Type Parameters V The type of values in the sorted list. GetSortedListByKeyBoundary(SortedList, TKey, bool, TKey, bool, int, int) Creates a new sorted list containing key-value pairs from a source sorted list within a specified key range. public static SortedList GetSortedListByKeyBoundary(this SortedList src, TKey begin, bool isIncludingBeginFloor, TKey end, bool isIncludingEndCeil, int beginIndex = 0, int endIndex = -1) where TKey : IComparable Parameters src SortedList The source sorted list. begin TKey The beginning key of the range. isIncludingBeginFloor bool Whether to include the floor value of the beginning key. end TKey The ending key of the range. isIncludingEndCeil bool Whether to include the ceiling value of the ending key. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns SortedList A new sorted list containing key-value pairs within the specified range. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. GetValuesByKeyBoundary(SortedList, TKey, bool, TKey, bool, int, int) Gets a list of values from a sorted list within a specified key range. public static List GetValuesByKeyBoundary(this SortedList src, TKey begin, bool isIncludingBeginFloor, TKey end, bool isIncludingEndCeil, int beginIndex = 0, int endIndex = -1) where TKey : IComparable Parameters src SortedList The source sorted list. begin TKey The beginning key of the range. isIncludingBeginFloor bool Whether to include the floor value of the beginning key. end TKey The ending key of the range. isIncludingEndCeil bool Whether to include the ceiling value of the ending key. beginIndex int The starting index for the search range (inclusive). Default is 0. endIndex int The ending index for the search range (exclusive). Default is -1, which means the end of the list. Returns List A list of values within the specified range. Type Parameters TKey The type of keys in the sorted list. V The type of values in the sorted list. ToSortedList(List, Func) Converts a list of values to a sorted list using a key selector function. public static SortedList ToSortedList(this List src, Func keyFunc) where TKey : IComparable Parameters src List The source list of values. keyFunc Func A function to extract a key from each value. Returns SortedList A sorted list containing the values from the source list, keyed by the extracted keys. Type Parameters TKey The type of keys in the resulting sorted list. TValue The type of values in the list and the resulting sorted list." }, "api/Hi.Common.Collections.SubList-1.html": { "href": "api/Hi.Common.Collections.SubList-1.html", "title": "Class SubList | HiAPI-C# 2025", - "summary": "Class SubList Namespace Hi.Common.Collections Assembly HiGeom.dll public class SubList : IList, ICollection, IEnumerable, IEnumerable Type Parameters T Inheritance object SubList Implements IList ICollection IEnumerable IEnumerable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) StringUtil.ToDotSplitedString(IEnumerable) ListUtil.GetCeilBySeek(IList, TKey, Func, out TItem, out int, int, SeekDirection) ListUtil.GetCeilIndexBySeek(IList, TKey, Func, out int, int, SeekDirection) ListUtil.GetCeilIndex(IList, ItemKey, Func, out int) ListUtil.GetCeilIndex(IList, TKey, Func, out int) ListUtil.GetCeil(IList, TKey, Func, out Item) ListUtil.GetFloorBySeek(IList, TKey, Func, out TItem, out int, int, SeekDirection) ListUtil.GetFloorIndexBySeek(IList, TKey, Func, out int, int, SeekDirection) ListUtil.GetFloorIndex(IList, ItemKey, Func, out int) ListUtil.GetFloorIndex(IList, TKey, Func, out int) ListUtil.GetFloor(IList, TKey, Func, out Item) ListUtil.GetIndexBasedEnumerable(IList) ListUtil.GetIndexBasedEnumerable(IList, int, int) ListUtil.GetIndexByBinarySearch(IList, TItem) ListUtil.GetIndexByBinarySearch(IList, TItem, IComparer) ListUtil.GetIndexByBinarySearch(IList, TSearch, Func) ListUtil.GetNearestIndex(IList, TItemKey, Func, out int) ListUtil.GetNearestIndex(IList, TItemKey, Func, Func, out int) ListUtil.GetSubList(IList, int, int) ListUtil.Swap(IList, int, int) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SubList(IList, int, int) public SubList(IList source, int beginIndex, int endIndex) Parameters source IList beginIndex int endIndex int Properties Count Gets the number of elements contained in the ICollection. public int Count { get; } Property Value int The number of elements contained in the ICollection. IsReadOnly Gets a value indicating whether the ICollection is read-only. public bool IsReadOnly { get; } Property Value bool true if the ICollection is read-only; otherwise, false. this[int] Gets or sets the element at the specified index. public T this[int index] { get; set; } Parameters index int The zero-based index of the element to get or set. Property Value T The element at the specified index. Exceptions ArgumentOutOfRangeException index is not a valid index in the IList. NotSupportedException The property is set and the IList is read-only. Methods Add(T) Adds an item to the ICollection. public void Add(T item) Parameters item T The object to add to the ICollection. Exceptions NotSupportedException The ICollection is read-only. Clear() Removes all items from the ICollection. public void Clear() Exceptions NotSupportedException The ICollection is read-only. Contains(T) Determines whether the ICollection contains a specific value. public bool Contains(T item) Parameters item T The object to locate in the ICollection. Returns bool true if item is found in the ICollection; otherwise, false. CopyTo(T[], int) Copies the elements of the ICollection to an Array, starting at a particular Array index. public void CopyTo(T[] array, int arrayIndex) Parameters array T[] The one-dimensional Array that is the destination of the elements copied from ICollection. The Array must have zero-based indexing. arrayIndex int The zero-based index in array at which copying begins. Exceptions ArgumentNullException array is null. ArgumentOutOfRangeException arrayIndex is less than 0. ArgumentException The number of elements in the source ICollection is greater than the available space from arrayIndex to the end of the destination array. GetEnumerator() Returns an enumerator that iterates through the collection. public IEnumerator GetEnumerator() Returns IEnumerator An enumerator that can be used to iterate through the collection. IndexOf(T) Determines the index of a specific item in the IList. public int IndexOf(T item) Parameters item T The object to locate in the IList. Returns int The index of item if found in the list; otherwise, -1. Insert(int, T) Inserts an item to the IList at the specified index. public void Insert(int index, T item) Parameters index int The zero-based index at which item should be inserted. item T The object to insert into the IList. Exceptions ArgumentOutOfRangeException index is not a valid index in the IList. NotSupportedException The IList is read-only. Remove(T) Removes the first occurrence of a specific object from the ICollection. public bool Remove(T item) Parameters item T The object to remove from the ICollection. Returns bool true if item was successfully removed from the ICollection; otherwise, false. This method also returns false if item is not found in the original ICollection. Exceptions NotSupportedException The ICollection is read-only. RemoveAt(int) Removes the IList item at the specified index. public void RemoveAt(int index) Parameters index int The zero-based index of the item to remove. Exceptions ArgumentOutOfRangeException index is not a valid index in the IList. NotSupportedException The IList is read-only." + "summary": "Class SubList Namespace Hi.Common.Collections Assembly HiGeom.dll Represents a sub-list view of a source list within a specified index range. public class SubList : IList, ICollection, IEnumerable, IEnumerable Type Parameters T The type of elements in the list. Inheritance object SubList Implements IList ICollection IEnumerable IEnumerable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) StringUtil.ToDotSplitedString(IEnumerable) ListUtil.GetCeilBySeek(IList, TKey, Func, out TItem, out int, int, SeekDirection) ListUtil.GetCeilIndexBySeek(IList, TKey, Func, out int, int, SeekDirection) ListUtil.GetCeilIndex(IList, ItemKey, Func, out int) ListUtil.GetCeilIndex(IList, TKey, Func, out int) ListUtil.GetCeil(IList, TKey, Func, out Item) ListUtil.GetFloorBySeek(IList, TKey, Func, out TItem, out int, int, SeekDirection) ListUtil.GetFloorIndexBySeek(IList, TKey, Func, out int, int, SeekDirection) ListUtil.GetFloorIndex(IList, ItemKey, Func, out int) ListUtil.GetFloorIndex(IList, TKey, Func, out int) ListUtil.GetFloor(IList, TKey, Func, out Item) ListUtil.GetIndexBasedEnumerable(IList) ListUtil.GetIndexBasedEnumerable(IList, int, int) ListUtil.GetIndexByBinarySearch(IList, TItem) ListUtil.GetIndexByBinarySearch(IList, TItem, IComparer) ListUtil.GetIndexByBinarySearch(IList, TSearch, Func) ListUtil.GetNearestIndex(IList, TItemKey, Func, out int) ListUtil.GetNearestIndex(IList, TItemKey, Func, Func, out int) ListUtil.GetSubList(IList, int, int) ListUtil.Swap(IList, int, int) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SubList(IList, int, int) Initializes a new instance. public SubList(IList source, int beginIndex, int endIndex) Parameters source IList The source list. beginIndex int The starting index (inclusive). endIndex int The ending index (exclusive). Properties Count Gets the number of elements contained in the ICollection. public int Count { get; } Property Value int The number of elements contained in the ICollection. IsReadOnly Gets a value indicating whether the ICollection is read-only. public bool IsReadOnly { get; } Property Value bool true if the ICollection is read-only; otherwise, false. this[int] Gets or sets the element at the specified index. public T this[int index] { get; set; } Parameters index int The zero-based index of the element to get or set. Property Value T The element at the specified index. Exceptions ArgumentOutOfRangeException index is not a valid index in the IList. NotSupportedException The property is set and the IList is read-only. Methods Add(T) Adds an item to the ICollection. public void Add(T item) Parameters item T The object to add to the ICollection. Exceptions NotSupportedException The ICollection is read-only. Clear() Removes all items from the ICollection. public void Clear() Exceptions NotSupportedException The ICollection is read-only. Contains(T) Determines whether the ICollection contains a specific value. public bool Contains(T item) Parameters item T The object to locate in the ICollection. Returns bool true if item is found in the ICollection; otherwise, false. CopyTo(T[], int) Copies the elements of the ICollection to an Array, starting at a particular Array index. public void CopyTo(T[] array, int arrayIndex) Parameters array T[] The one-dimensional Array that is the destination of the elements copied from ICollection. The Array must have zero-based indexing. arrayIndex int The zero-based index in array at which copying begins. Exceptions ArgumentNullException array is null. ArgumentOutOfRangeException arrayIndex is less than 0. ArgumentException The number of elements in the source ICollection is greater than the available space from arrayIndex to the end of the destination array. GetEnumerator() Returns an enumerator that iterates through the collection. public IEnumerator GetEnumerator() Returns IEnumerator An enumerator that can be used to iterate through the collection. IndexOf(T) Determines the index of a specific item in the IList. public int IndexOf(T item) Parameters item T The object to locate in the IList. Returns int The index of item if found in the list; otherwise, -1. Insert(int, T) Inserts an item to the IList at the specified index. public void Insert(int index, T item) Parameters index int The zero-based index at which item should be inserted. item T The object to insert into the IList. Exceptions ArgumentOutOfRangeException index is not a valid index in the IList. NotSupportedException The IList is read-only. Remove(T) Removes the first occurrence of a specific object from the ICollection. public bool Remove(T item) Parameters item T The object to remove from the ICollection. Returns bool true if item was successfully removed from the ICollection; otherwise, false. This method also returns false if item is not found in the original ICollection. Exceptions NotSupportedException The ICollection is read-only. RemoveAt(int) Removes the IList item at the specified index. public void RemoveAt(int index) Parameters index int The zero-based index of the item to remove. Exceptions ArgumentOutOfRangeException index is not a valid index in the IList. NotSupportedException The IList is read-only." }, "api/Hi.Common.Collections.SynList-1.html": { "href": "api/Hi.Common.Collections.SynList-1.html", @@ -387,7 +387,7 @@ "api/Hi.Common.Collections.html": { "href": "api/Hi.Common.Collections.html", "title": "Namespace Hi.Common.Collections | HiAPI-C# 2025", - "summary": "Namespace Hi.Common.Collections Classes DictionaryUtil Utility class providing extension methods for dictionary operations. EnumerableUtil Utility class providing extension methods for enumerable collections. FixedSizeConcurrentLinkedListUtil Utility of Fixed Size Concurrent LinkedList. ListIndexBasedEnumerable Provides an enumerable wrapper for a list that iterates over a specified range of indices. ListIndexBasedIEnumerator Provides an enumerator that iterates over a specified range of indices in a list. ListUtil Provides utility methods for working with lists and collections. SortedListUtil Utility class providing extension methods for SortedList operations. SubList SynList Thread-safe List. Enums ListUtil.OuterPolationMode Defines the mode for handling values outside the range of a collection during interpolation. SearchTargetMode Specifies the search method to use when looking for values in a sorted list. SeekDirection Specifies the seek direction for sorted list operations." + "summary": "Namespace Hi.Common.Collections Classes DictionaryUtil Utility class providing extension methods for dictionary operations. EnumerableUtil Utility class providing extension methods for enumerable collections. FixedSizeConcurrentLinkedListUtil Utility of Fixed Size Concurrent LinkedList. ListIndexBasedEnumerable Provides an enumerable wrapper for a list that iterates over a specified range of indices. ListIndexBasedIEnumerator Provides an enumerator that iterates over a specified range of indices in a list. ListUtil Provides utility methods for working with lists and collections. SortedListUtil Utility class providing extension methods for SortedList operations. SubList Represents a sub-list view of a source list within a specified index range. SynList Thread-safe List. Enums ListUtil.OuterPolationMode Defines the mode for handling values outside the range of a collection during interpolation. SearchTargetMode Specifies the search method to use when looking for values in a sorted list. SeekDirection Specifies the seek direction for sorted list operations." }, "api/Hi.Common.ConcurrentTimeCounter.html": { "href": "api/Hi.Common.ConcurrentTimeCounter.html", @@ -992,7 +992,7 @@ "api/Hi.CutterLocations.ClStrips.ClStrip.html": { "href": "api/Hi.CutterLocations.ClStrips.ClStrip.html", "title": "Class ClStrip | HiAPI-C# 2025", - "summary": "Class ClStrip Namespace Hi.CutterLocations.ClStrips Assembly HiMech.dll Represents a CL (Cutter Location) strip for 3D display. This class manages the display and interaction of cutter location points and lines. public class ClStrip : IDisplayee, IExpandToBox3d, IDisposable Inheritance object ClStrip Implements IDisplayee IExpandToBox3d IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) BoundSelectorUtil.GetStepRange(ClStrip, BoundSelectorPair) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ClStrip(int) Initializes a new instance of the ClStrip class. public ClStrip(int cap = 2048) Parameters cap int The initial capacity of the strip Fields slice_distance The distance between slices for efficient rendering. public const int slice_distance = 8192 Field Value int Properties AbsDispEnd Gets the absolute display end position. If the display end is set to -1, returns the total number of positions. public int AbsDispEnd { get; } Property Value int CallRefreshDrawing internal use public bool CallRefreshDrawing { get; } Property Value bool ChartRange Synchoronized Chart Time Range. Always not null. The members' value is possible to be null for the un-available status. public Range ChartRange { get; } Property Value Range IsKeepingDispAlive Keep the disp range to at least two dots while the stripe length enough. public bool IsKeepingDispAlive { get; set; } Property Value bool IsShowDot Gets or sets whether to display dots at each position. public bool IsShowDot { get; set; } Property Value bool StripPoses Gets the list of strip positions. Do not add or remove elements directly. public SynList StripPoses { get; } Property Value SynList StripPosesClearLock Gets the lock for thread-safe operations on strip positions. public ReaderWriterLockSlim StripPosesClearLock { get; } Property Value ReaderWriterLockSlim StripPosesCount Gets the thread-safe count of strip positions. public int StripPosesCount { get; } Property Value int Methods Add(object, DVec3d) Adds a new position to the strip. public ClStripPos Add(object state, DVec3d programCl) Parameters state object The state object associated with the position programCl DVec3d The cutter location Returns ClStripPos The newly created strip position Clear(object) Clears all strip positions and resets the display state. public void Clear(object sender) Parameters sender object The object that initiated this clear operation Display(Bind) Displays the strip. public void Display(Bind bind) Parameters bind Bind The binding context for display Dispose() Disposes of the resources used by this strip. public void Dispose() Dispose(bool) Disposes of the resources used by this strip. protected virtual void Dispose(bool disposing) Parameters disposing bool Whether this is being called from Dispose ExpandToBox3d(Box3d) Expands the given box to include all strip positions. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The box to expand GetDispBegin() Gets the current display begin position. public int GetDispBegin() Returns int The display begin position GetDispEnd() Gets the current display end position. A value of -1 indicates that the display should follow the end of the strip. public int GetDispEnd() Returns int The display end position GetEnteredPos() Gets the currently entered position. public ClStripPos GetEnteredPos() Returns ClStripPos The entered position GetFittingView(Mat4d, Mat4d) Gets a scaled fitting view based on the strip display range. public Mat4d GetFittingView(Mat4d sketchView, Mat4d clStripZeroToRoot = null) Parameters sketchView Mat4d The sketch view matrix clStripZeroToRoot Mat4d The transformation from strip zero to root Returns Mat4d The scaled fitting view matrix GetSelectedPos() Gets the currently selected position. public ClStripPos GetSelectedPos() Returns ClStripPos The selected position GetStripPos(int, bool) Gets a strip position by index. public ClStripPos GetStripPos(int index, bool isLocked = false) Parameters index int The index of the position isLocked bool Whether the strip positions are already locked Returns ClStripPos The strip position at the specified index LimitChartRange(bool) public void LimitChartRange(bool isLocked) Parameters isLocked bool RefreshDrawing() Marks the drawing for refresh. public void RefreshDrawing() RefreshDrawingInRendering(bool) internal use public void RefreshDrawingInRendering(bool isLocked) Parameters isLocked bool SetDispBegin(int, object) Sets the display begin position. public void SetDispBegin(int value, object caller) Parameters value int The new display begin position caller object The object that initiated this change SetDispEnd(int, object) Sets the display end position. A value of -1 indicates that the display should follow the end of the strip. public void SetDispEnd(int value, object caller) Parameters value int The new display end position caller object The object that initiated this change SetDispSegment(int, int, object) Sets the display range for the cutter location strip. This method sets both the beginning and ending positions of the display range. public void SetDispSegment(int beginIndex, int endIndex, object caller) Parameters beginIndex int The beginning index of the display range. Will be clamped to [0, StripPoses.Count - 1]. endIndex int The ending index of the display range. A value of -1 indicates that the display should follow the end of the strip. Values greater than or equal to StripPoses.Count will be converted to -1. Will be clamped to [-1, StripPoses.Count]. caller object The caller object that requests the display range change. Used for event notifications. SetEnteredPos(ClStripPos, object) Sets the currently entered position. public void SetEnteredPos(ClStripPos value, object sender) Parameters value ClStripPos The new entered position sender object The object that initiated this change SetSelectedPos(ClStripPos, object) Sets the currently selected position. public void SetSelectedPos(ClStripPos value, object sender) Parameters value ClStripPos The new selected position sender object The object that initiated this change ShrinkAttachmentMemory(CancellationToken?) Shrinks the attachment memory for all positions. public void ShrinkAttachmentMemory(CancellationToken? cancellationToken = null) Parameters cancellationToken CancellationToken? StripPosesThreadSafeSelect(Func) Thread-safe selection of strip positions. public List StripPosesThreadSafeSelect(Func func) Parameters func Func The function to transform each strip position Returns List A list of transformed strip positions Type Parameters T The type of the selected data UpdateDispSegmentByChartRange(object) Updates the display segment based on the current chart range. public void UpdateDispSegmentByChartRange(object caller) Parameters caller object The caller object that triggered the update. Events AbsDispEndChanged Event raised when the absolute display end position changes. public event EventHandler AbsDispEndChanged Event Type EventHandler DispBeginChanged Event raised when the display begin position changes. public event EventHandler DispBeginChanged Event Type EventHandler DispEndChanged Event raised when the display end position changes. public event EventHandler DispEndChanged Event Type EventHandler DrawingRefreshing Event raised when the drawing is being refreshed. public event EventHandler DrawingRefreshing Event Type EventHandler MachiningStepSelected The same effecting position as PosSelected but with more convenient arguments for the end-user. public event Action MachiningStepSelected Event Type Action PosAdded Event raised when a new position is added to the strip. public event Action PosAdded Event Type Action PosEntered Event raised when the mouse enters a position. public event EventHandler PosEntered Event Type EventHandler PosSelected Event raised when a position is selected. public event EventHandler PosSelected Event Type EventHandler StaticPosSelected Static event raised when any position is selected. public static event EventHandler StaticPosSelected Event Type EventHandler" + "summary": "Class ClStrip Namespace Hi.CutterLocations.ClStrips Assembly HiMech.dll Represents a CL (Cutter Location) strip for 3D display. This class manages the display and interaction of cutter location points and lines. public class ClStrip : IDisplayee, IExpandToBox3d, IDisposable Inheritance object ClStrip Implements IDisplayee IExpandToBox3d IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) BoundSelectorUtil.GetStepRange(ClStrip, BoundSelectorPair) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ClStrip(int) Initializes a new instance of the ClStrip class. public ClStrip(int cap = 2048) Parameters cap int The initial capacity of the strip Fields slice_distance The distance between slices for efficient rendering. public const int slice_distance = 8192 Field Value int Properties AbsDispEnd Gets the absolute display end position. If the display end is set to -1, returns the total number of positions. public int AbsDispEnd { get; } Property Value int CallRefreshDrawing internal use public bool CallRefreshDrawing { get; } Property Value bool ChartRange Synchoronized Chart Time Range. Always not null. The members' value is possible to be null for the un-available status. public Range ChartRange { get; } Property Value Range IsKeepingDispAlive Keep the disp range to at least two dots while the stripe length enough. public bool IsKeepingDispAlive { get; set; } Property Value bool IsShowDot Gets or sets whether to display dots at each position. public bool IsShowDot { get; set; } Property Value bool StripPoses Gets the list of strip positions. Do not add or remove elements directly. public SynList StripPoses { get; } Property Value SynList StripPosesClearLock Gets the lock for thread-safe operations on strip positions. public ReaderWriterLockSlim StripPosesClearLock { get; } Property Value ReaderWriterLockSlim StripPosesCount Gets the thread-safe count of strip positions. public int StripPosesCount { get; } Property Value int Methods Add(object, DVec3d) Adds a new position to the strip. public ClStripPos Add(object state, DVec3d programCl) Parameters state object The state object associated with the position programCl DVec3d The cutter location Returns ClStripPos The newly created strip position Clear(object) Clears all strip positions and resets the display state. public void Clear(object sender) Parameters sender object The object that initiated this clear operation Display(Bind) Displays the strip. public void Display(Bind bind) Parameters bind Bind The binding context for display Dispose() Disposes of the resources used by this strip. public void Dispose() Dispose(bool) Disposes of the resources used by this strip. protected virtual void Dispose(bool disposing) Parameters disposing bool Whether this is being called from Dispose ExpandToBox3d(Box3d) Expands the given box to include all strip positions. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The box to expand GetDispBegin() Gets the current display begin position. public int GetDispBegin() Returns int The display begin position GetDispEnd() Gets the current display end position. A value of -1 indicates that the display should follow the end of the strip. public int GetDispEnd() Returns int The display end position GetEnteredPos() Gets the currently entered position. public ClStripPos GetEnteredPos() Returns ClStripPos The entered position GetFittingView(Mat4d, Mat4d) Gets a scaled fitting view based on the strip display range. public Mat4d GetFittingView(Mat4d sketchView, Mat4d clStripZeroToRoot = null) Parameters sketchView Mat4d The sketch view matrix clStripZeroToRoot Mat4d The transformation from strip zero to root Returns Mat4d The scaled fitting view matrix GetSelectedPos() Gets the currently selected position. public ClStripPos GetSelectedPos() Returns ClStripPos The selected position GetStripPos(int, bool) Gets a strip position by index. public ClStripPos GetStripPos(int index, bool isLocked = false) Parameters index int The index of the position isLocked bool Whether the strip positions are already locked Returns ClStripPos The strip position at the specified index LimitChartRange(bool) Limits the chart range based on the time range of the strip positions. public void LimitChartRange(bool isLocked) Parameters isLocked bool Whether the strip positions are locked. RefreshDrawing() Marks the drawing for refresh. public void RefreshDrawing() RefreshDrawingInRendering(bool) internal use public void RefreshDrawingInRendering(bool isLocked) Parameters isLocked bool SetDispBegin(int, object) Sets the display begin position. public void SetDispBegin(int value, object caller) Parameters value int The new display begin position caller object The object that initiated this change SetDispEnd(int, object) Sets the display end position. A value of -1 indicates that the display should follow the end of the strip. public void SetDispEnd(int value, object caller) Parameters value int The new display end position caller object The object that initiated this change SetDispSegment(int, int, object) Sets the display range for the cutter location strip. This method sets both the beginning and ending positions of the display range. public void SetDispSegment(int beginIndex, int endIndex, object caller) Parameters beginIndex int The beginning index of the display range. Will be clamped to [0, StripPoses.Count - 1]. endIndex int The ending index of the display range. A value of -1 indicates that the display should follow the end of the strip. Values greater than or equal to StripPoses.Count will be converted to -1. Will be clamped to [-1, StripPoses.Count]. caller object The caller object that requests the display range change. Used for event notifications. SetEnteredPos(ClStripPos, object) Sets the currently entered position. public void SetEnteredPos(ClStripPos value, object sender) Parameters value ClStripPos The new entered position sender object The object that initiated this change SetSelectedPos(ClStripPos, object) Sets the currently selected position. public void SetSelectedPos(ClStripPos value, object sender) Parameters value ClStripPos The new selected position sender object The object that initiated this change ShrinkAttachmentMemory(CancellationToken?) Shrinks the attachment memory for all positions. public void ShrinkAttachmentMemory(CancellationToken? cancellationToken = null) Parameters cancellationToken CancellationToken? StripPosesThreadSafeSelect(Func) Thread-safe selection of strip positions. public List StripPosesThreadSafeSelect(Func func) Parameters func Func The function to transform each strip position Returns List A list of transformed strip positions Type Parameters T The type of the selected data UpdateDispSegmentByChartRange(object) Updates the display segment based on the current chart range. public void UpdateDispSegmentByChartRange(object caller) Parameters caller object The caller object that triggered the update. Events AbsDispEndChanged Event raised when the absolute display end position changes. public event EventHandler AbsDispEndChanged Event Type EventHandler DispBeginChanged Event raised when the display begin position changes. public event EventHandler DispBeginChanged Event Type EventHandler DispEndChanged Event raised when the display end position changes. public event EventHandler DispEndChanged Event Type EventHandler DrawingRefreshing Event raised when the drawing is being refreshed. public event EventHandler DrawingRefreshing Event Type EventHandler MachiningStepSelected The same effecting position as PosSelected but with more convenient arguments for the end-user. public event Action MachiningStepSelected Event Type Action PosAdded Event raised when a new position is added to the strip. public event Action PosAdded Event Type Action PosEntered Event raised when the mouse enters a position. public event EventHandler PosEntered Event Type EventHandler PosSelected Event raised when a position is selected. public event EventHandler PosSelected Event Type EventHandler StaticPosSelected Static event raised when any position is selected. public static event EventHandler StaticPosSelected Event Type EventHandler" }, "api/Hi.CutterLocations.ClStrips.ClStripPos.html": { "href": "api/Hi.CutterLocations.ClStrips.ClStripPos.html", @@ -1407,7 +1407,7 @@ "api/Hi.Geom.MathUtil.html": { "href": "api/Hi.Geom.MathUtil.html", "title": "Class MathUtil | HiAPI-C# 2025", - "summary": "Class MathUtil Namespace Hi.Geom Assembly HiGeom.dll Math Utility. public static class MathUtil Inheritance object MathUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields sqrt2 square root of 2. public const double sqrt2 = 1.4142135623730951 Field Value double sqrt3 square root of 3. public const double sqrt3 = 1.7320508075688772 Field Value double Methods AbsDiffAngle(double, double) Calculates the absolute difference between two angles in radians public static double AbsDiffAngle(double angleA_rad, double angleB_rad) Parameters angleA_rad double First angle in radians angleB_rad double Second angle in radians Returns double The absolute difference between the two angles Add(double[], double[]) Adds the elements of the second array to the corresponding elements of the first array in-place. public static double[] Add(this double[] src, double[] src2) Parameters src double[] The source array to which elements will be added. src2 double[] The array containing elements to add. Returns double[] The modified source array. AlterIfNan(double, double) public static double AlterIfNan(double primaryValue, double alteringValue) Parameters primaryValue double primary value alteringValue double the candidate value Returns double ApplyAlterIf(T, Func, T) Applies an alternative value if the source value meets a specified condition. public static T ApplyAlterIf(T src, Func isApplyingAlternateFunc, T alternative) Parameters src T The source value to check. isApplyingAlternateFunc Func Function that determines if the alternative should be applied. alternative T The alternative value to use if the condition is met. Returns T Either the original value or the alternative value based on the condition. Type Parameters T The type of the values. Average(IEnumerable) Average. public static Vec3d Average(this IEnumerable src) Parameters src IEnumerable src Returns Vec3d Average BilinearInterpolate(double, double, double, double, double, double) Performs bilinear interpolation between four double values public static double BilinearInterpolate(double v00, double v01, double v10, double v11, double u, double v) Parameters v00 double Value at (0,0) on normalized bilinear coordinate v01 double Value at (0,1) on normalized bilinear coordinate v10 double Value at (1,0) on normalized bilinear coordinate v11 double Value at (1,1) on normalized bilinear coordinate u double Ratio along v00 and v10, etc. v double Ratio along v00 and v01, etc. Returns double The interpolated value BilinearInterpolate(T, T, T, T, double, double) Bilinear interpolate. public static T BilinearInterpolate(T v00, T v01, T v10, T v11, double u, double v) where T : IAdditionOperators, IMultiplyOperators Parameters v00 T value at (0,0) on normalized bilinear coordinate v01 T value at (0,1) on normalized bilinear coordinate v10 T value at (1,0) on normalized bilinear coordinate v11 T value at (1,1) on normalized bilinear coordinate u double ratio along v00 and v10, etc. v double ratio along v00 and v01, etc. Returns T interpolated value Type Parameters T value type. BilinearInterpolate(T, T, T, T, double, double, Func, Func) Bilinear interpolate. public static T BilinearInterpolate(T v00, T v01, T v10, T v11, double u, double v, Func scalingFunc, Func addingFunc) Parameters v00 T value at (0,0) on normalized bilinear coordinate v01 T value at (0,1) on normalized bilinear coordinate v10 T value at (1,0) on normalized bilinear coordinate v11 T value at (1,1) on normalized bilinear coordinate u double ratio along v00 and v10, etc. v double ratio along v00 and v01, etc. scalingFunc Func scaling function addingFunc Func adding function Returns T interpolated value Type Parameters T value type. BinaryDividentSequence(int) Generates a value in a binary divident sequence based on the seed. public static double BinaryDividentSequence(int seed) Parameters seed int The seed value for the sequence. Returns double The value in the binary divident sequence. Cbrt(double) Calculates the cube root of a number. public static double Cbrt(double v) Parameters v double The value to calculate the cube root of. Returns double The cube root of the specified value. Clamp(T, T, T) Clamps a value within an inclusive range of minimum and maximum values. public static T Clamp(this T val, T min, T max) where T : IComparable Parameters val T min T max T Returns T Type Parameters T Convert_inchdmin_To_mmds(double) Converts inches per minute to millimeters per second. public static double Convert_inchdmin_To_mmds(double inchdmin) Parameters inchdmin double Value in inches per minute. Returns double Value in millimeters per second. Convert_mdmin_To_mmds(double) Converts meters per minute to millimeters per second. public static double Convert_mdmin_To_mmds(double mdmin) Parameters mdmin double Value in meters per minute. Returns double Value in millimeters per second. Convert_mmdmin_To_mmds(double) Converts millimeters per minute to millimeters per second. public static double Convert_mmdmin_To_mmds(double mmdmin) Parameters mmdmin double Value in millimeters per minute. Returns double Value in millimeters per second. Convert_mmds_To_mdmin(double) Converts millimeters per second to meters per minute. public static double Convert_mmds_To_mdmin(double mmds) Parameters mmds double Value in millimeters per second. Returns double Value in meters per minute. Convert_mmds_To_mmdmin(double) Converts millimeters per second to millimeters per minute. public static double Convert_mmds_To_mmdmin(double mmds) Parameters mmds double Value in millimeters per second. Returns double Value in millimeters per minute. Convert_radds_To_rpm(double) Converts radians per second to revolutions per minute (RPM). public static double Convert_radds_To_rpm(double radds) Parameters radds double Value in radians per second. Returns double Value in revolutions per minute. Convert_rpm_To_radds(double) Converts revolutions per minute (RPM) to radians per second. public static double Convert_rpm_To_radds(double rpm) Parameters rpm double Value in revolutions per minute. Returns double Value in radians per second. Cycle(double, double, double) If the value is within lowerBound and upperBound, return value. Otherwise, perform looped value according to the direction from lower to upper. ex. bound=(0,1), value=3.1, than return 0.1. public static double Cycle(double value, double lowerBound, double upperBound) Parameters value double value lowerBound double lower bound, inclusive upperBound double upper bound, exclusive Returns double cycled value Cycle(double, double, double, bool) Cycles a value to be within the specified range, with configurable bound inclusivity. public static double Cycle(double value, double lowerBound, double upperBound, bool isBothBoundInclusive) Parameters value double The value to cycle. lowerBound double The lower bound of the range. upperBound double The upper bound of the range. isBothBoundInclusive bool If true, both bounds are inclusive; otherwise, only the lower bound is inclusive. Returns double The cycled value within the specified range. Cycle2Pi_rad(double, double, bool) Get value by the cycle range transformation. The cycle is from anchor_rad-pi to anchor_rad+pi. public static double Cycle2Pi_rad(double target_rad, double anchor_rad = 0, bool isBothBoundInclusive = false) Parameters target_rad double target angle anchor_rad double anchor angle isBothBoundInclusive bool if true, both bounds are inclusive; otherwise, only the lower bound is inclusive Returns double adjusted target angle CycleUnit(double) Get the value locates on 0(inclusive) ~ 1(exclusive). The source code: return v - Math.Floor(v); public static double CycleUnit(double v) Parameters v double value Returns double 0 (inclusive) ~1 (exclusive) Decompose(double[,], out int[], out int) Performs LU decomposition with partial pivoting on a matrix. public static double[,] Decompose(double[,] matrix, out int[] perm, out int toggle) Parameters matrix double[,] The matrix to decompose. perm int[] Output parameter that holds row permutations. toggle int Output parameter that is +1 or -1 depending on whether the number of row exchanges is even or odd. Returns double[,] The LU decomposition of the matrix. Exceptions Exception Thrown when attempting to decompose a non-square matrix. Div(double[], double) Divides each element of the array by a scalar value in-place. public static double[] Div(this double[] src, double scale) Parameters src double[] The source array to be modified. scale double The scalar value to divide by. Returns double[] The modified source array. Erf(double) Calculates the error function (erf) for the specified value. public static double Erf(double x) Parameters x double The value to calculate the error function for Returns double The error function value Erfc(double) Calculates the complementary error function (erfc) for the specified value. public static double Erfc(double x) Parameters x double The value to calculate the complementary error function for Returns double The complementary error function value GetAbs(double[]) Creates a new array containing the absolute values of the elements in the source array. public static double[] GetAbs(this double[] src) Parameters src double[] The source array. Returns double[] A new array containing the absolute values of the elements in the source array. GetAdd(double[], double[]) Creates a new array by adding corresponding elements of two arrays. public static double[] GetAdd(this double[] src, double[] src2) Parameters src double[] The first array. src2 double[] The second array. Returns double[] A new array containing the sum of corresponding elements. GetCommonRatioFromGeometricSeries(double, double, double) Calculates the common ratio from a geometric series sum. public static double GetCommonRatioFromGeometricSeries(double geometricSeriesSum, double powIndex, double convergenceLimit = 0.001) Parameters geometricSeriesSum double The sum of the geometric series. powIndex double The power index in the series. convergenceLimit double The convergence limit for the calculation. Returns double The common ratio of the geometric series. GetDiv(double[], double) Creates a new array by dividing each element of the source array by a scalar value. public static double[] GetDiv(this double[] src, double scale) Parameters src double[] The source array. scale double The scalar value to divide by. Returns double[] A new array with each element divided by the scalar value. GetDot(double[], double[]) Creates a new array by multiplying corresponding elements of two arrays. public static double[] GetDot(this double[] a, double[] b) Parameters a double[] The first array. b double[] The second array. Returns double[] A new array containing the product of corresponding elements. GetInterpolationRatio(TimeSpan, TimeSpan, TimeSpan) Gets the interpolation ratio between two TimeSpan values public static double GetInterpolationRatio(TimeSpan begin, TimeSpan end, TimeSpan pos) Parameters begin TimeSpan The beginning TimeSpan end TimeSpan The ending TimeSpan pos TimeSpan The position TimeSpan to calculate the ratio for Returns double The interpolation ratio: (pos - begin) / (end - begin) GetInterpolationRatio(T, T, T) Get position ratio. (pos - begin) / (end - begin) . public static double GetInterpolationRatio(T begin, T end, T pos) where T : ISubtractionOperators, IDivisionOperators Parameters begin T range begin end T range end pos T key position Returns double position ratio Type Parameters T GetInterpolationRatio(T, T, T, Func, Func) Gets the interpolation ratio between two values using custom subtraction and division functions public static double GetInterpolationRatio(T begin, T end, T pos, Func minusFunc, Func divFunc) Parameters begin T The beginning value end T The ending value pos T The position value to calculate the ratio for minusFunc Func The function to use for subtraction divFunc Func The function to use for division Returns double The interpolation ratio: (pos - begin) / (end - begin) Type Parameters T The type of the values GetMul(double[], double) Creates a new array by multiplying each element of the source array by a scalar value. public static double[] GetMul(this double[] src, double s) Parameters src double[] The source array. s double The scalar value to multiply by. Returns double[] A new array with each element multiplied by the scalar value. GetSub(double[], double[]) Creates a new array by subtracting corresponding elements of the second array from the first array. public static double[] GetSub(this double[] a, double[] b) Parameters a double[] The first array. b double[] The second array to subtract. Returns double[] A new array containing the difference of corresponding elements. Idt(int) Creates an identity matrix of the specified size. public static double[,] Idt(int n) Parameters n int The size of the square identity matrix. Returns double[,] An n x n identity matrix. Interpolate(TimeSpan, TimeSpan, double) Interpolates between two TimeSpan values using the specified ratio public static TimeSpan Interpolate(TimeSpan a, TimeSpan b, double ratio) Parameters a TimeSpan The first TimeSpan value b TimeSpan The second TimeSpan value ratio double The interpolation ratio (0.0 to 1.0) Returns TimeSpan The interpolated TimeSpan value: a * (1 - ratio) + b * ratio InterpolateWithinBoundary(T, T, double) If ratio smaller or equal 0, return a. If ratio larger or equal 1, return b. Otherwise, interpolate by ratio. public static T InterpolateWithinBoundary(T a, T b, double ratio) where T : IEqualityOperators, IAdditionOperators, IMultiplyOperators Parameters a T b T ratio double Returns T Type Parameters T Interpolate(T, T, double) Interpolate from a to b with ratio alpha:(1-alpha). public static T Interpolate(T a, T b, double ratio) where T : IEqualityOperators, IAdditionOperators, IMultiplyOperators Parameters a T a b T b ratio double ratio Returns T a * (1 - ratio) + b * ratio Type Parameters T Interpolate(T, T, double, Func) Interpolates between two values based on a position using a position function. public static T Interpolate(T a, T b, double pos, Func posFunc) where T : INumber, IMultiplyOperators Parameters a T The first value b T The second value pos double The position to interpolate at posFunc Func Function to extract a position from a value Returns T The interpolated value Type Parameters T The type of the values Interpolate(TItem, TItem, double, Func, Func, Func) Interpolates between two items based on a key value using custom functions. public static TItem Interpolate(TItem a, TItem b, double key, Func keyFunc, Func addingFunc, Func scalingFunc) Parameters a TItem The first item b TItem The second item key double The key value to interpolate at (0.0 to 1.0) keyFunc Func Function to extract a double key from an item addingFunc Func Function to add two items scalingFunc Func Function to scale an item by a double Returns TItem The interpolated item Type Parameters TItem The type of the items Interpolate(T, T, double, Func, Func) Interpolates between two values using custom addition and scaling functions public static T Interpolate(T a, T b, double ratio, Func addingFunc, Func scalingFunc) Parameters a T The first value b T The second value ratio double The interpolation ratio (0.0 to 1.0) addingFunc Func The function to use for addition scalingFunc Func The function to use for scaling Returns T The interpolated value: a * (1 - ratio) + b * ratio Type Parameters T The type of the values Interpolate(T[], T[], double) Interpolates between two arrays of values using the specified ratio public static T[] Interpolate(T[] a, T[] b, double ratio) where T : INumber, IMultiplyOperators Parameters a T[] The first array b T[] The second array ratio double The interpolation ratio (0.0 to 1.0) Returns T[] A new array containing the interpolated values Type Parameters T The type of the array elements Interpolate(TItem, TItem, TKey, Func, Func, Func, Func, Func) Interpolates between two items using custom key extraction, key operations, and item operations public static TItem Interpolate(TItem a, TItem b, TKey key, Func keyFunc, Func keyMinusFunc, Func keyDivFunc, Func itemAddingFunc, Func itemScalingFunc) Parameters a TItem The first item b TItem The second item key TKey The key value to interpolate at keyFunc Func Function to extract a key from an item keyMinusFunc Func Function to subtract keys keyDivFunc Func Function to divide keys itemAddingFunc Func Function to add items itemScalingFunc Func Function to scale items Returns TItem The interpolated item Type Parameters TKey The type of the key used for interpolation TItem The type of the items being interpolated Inverse(double[,]) Computes the inverse of a matrix. public static double[,] Inverse(double[,] matrix) Parameters matrix double[,] The matrix to invert. Returns double[,] The inverse of the matrix. Exceptions Exception Thrown when the matrix cannot be inverted. Inverse2d(double[,], double[,]) Calculates the inverse of a 2x2 matrix public static void Inverse2d(double[,] src, double[,] dst) Parameters src double[,] The source 2x2 matrix dst double[,] The destination matrix to store the inverse Inverse3d(double[,], double[,]) Calculates the inverse of a 3x3 matrix public static void Inverse3d(double[,] src, double[,] dst) Parameters src double[,] The source 3x3 matrix dst double[,] The destination matrix to store the inverse IsFinite(double) Is v neither NaN nor infinity. public static bool IsFinite(double v) Parameters v double value Returns bool Is v neither NaN nor infinity. Max(T, T) public static T Max(T a, T b) where T : IComparable Parameters a T b T Returns T Type Parameters T Min(T, T) public static T Min(T a, T b) where T : IComparable Parameters a T b T Returns T Type Parameters T Mul(double[], double) Multiplies each element of the array by a scalar value in-place. public static double[] Mul(this double[] src, double scale) Parameters src double[] The source array to be modified. scale double The scalar value to multiply by. Returns double[] The modified source array. NoChanged(double) Do nothing. public static double NoChanged(double src) Parameters src double src Returns double src Norm2(double[]) Calculates the Euclidean norm (L2 norm) of a vector. public static double Norm2(this double[] src) Parameters src double[] The source vector as an array of doubles. Returns double The Euclidean norm of the vector. Normalized(double[]) Creates a new array by normalizing the source array to have a unit norm. public static double[] Normalized(this double[] src) Parameters src double[] The source array. Returns double[] A new array with the same direction as the source array but with unit norm. Pow3(double) Calculates the cube (power of 3) of a double value. public static double Pow3(this double src) Parameters src double The source double value Returns double The cube of the source value Pow3(int) Calculates the cube (power of 3) of an integer value. public static int Pow3(this int src) Parameters src int The source integer value Returns int The cube of the source value Pow4(double) Calculates the fourth power of a double value. public static double Pow4(this double src) Parameters src double The source double value Returns double The fourth power of the source value Pow4(int) Calculates the fourth power of an integer value. public static int Pow4(this int src) Parameters src int The source integer value Returns int The fourth power of the source value Product(double[,], double[,]) Multiplies two matrices. public static double[,] Product(double[,] matrixA, double[,] matrixB) Parameters matrixA double[,] The first matrix. matrixB double[,] The second matrix. Returns double[,] The product of the two matrices. Exceptions Exception Thrown when the matrices are not conformable for multiplication. SolveCubic(double, double, double, double) public static Complex[] SolveCubic(double c0, double c1, double c2, double c3) Parameters c0 double constant term. c1 double coefficient of power of 1 of x. c2 double coefficient of power of 2 of x. c3 double coefficient of power of 3 of x. Returns Complex[] SolveQuadratic(double, double, double, out double, out double) Solve quadratic equation. public static double SolveQuadratic(double c, double b, double a, out double x0, out double x1) Parameters c double coefficient of constant of x. b double coefficient of power of 1 of x. a double coefficient of power of 2 of x. x0 double lower root x1 double higher root Returns double determinent SqrtVariance(IList, out double) Standard deviation with n denominator (instead of n-1). public static double SqrtVariance(IList src, out double avg) Parameters src IList avg double Returns double STD Square(double) Calculates the square of a double value. public static double Square(this double src) Parameters src double The source double value Returns double The square of the source value Square(int) Calculates the square of an integer value. public static int Square(this int src) Parameters src int The source integer value Returns int The square of the source value Sum(IEnumerable) Sum. public static Vec3d Sum(this IEnumerable src) Parameters src IEnumerable src Returns Vec3d Sum ToDeg(double) Get degree from radian. public static double ToDeg(double rad) Parameters rad double radian Returns double degree ToRad(double) Get radian from degree. public static double ToRad(double deg) Parameters deg double degree Returns double radian ToString(double[,], string) Converts a 2D double array to a string representation using the specified format public static string ToString(this double[,] src, string format) Parameters src double[,] The source 2D double array format string The format string to use for each double value Returns string A string representation of the 2D array ToString(double[], string) Converts a double array to a string representation using the specified format public static string ToString(this double[] src, string format) Parameters src double[] The source double array format string The format string to use for each double value Returns string A string representation of the array ToStringWithoutCultureNum(double, string) To string function. The special number is formatted by XmlConvert. public static string ToStringWithoutCultureNum(this double src, string format) Parameters src double src format string format Returns string string Transpose(double[,]) Transposes a 2D matrix represented as a 2D array. public static double[,] Transpose(double[,] src) Parameters src double[,] The source matrix to transpose. Returns double[,] A new matrix that is the transpose of the source matrix." + "summary": "Class MathUtil Namespace Hi.Geom Assembly HiGeom.dll Math Utility. public static class MathUtil Inheritance object MathUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields sqrt2 square root of 2. public const double sqrt2 = 1.4142135623730951 Field Value double sqrt3 square root of 3. public const double sqrt3 = 1.7320508075688772 Field Value double Methods AbsDiffAngle(double, double) Calculates the absolute difference between two angles in radians public static double AbsDiffAngle(double angleA_rad, double angleB_rad) Parameters angleA_rad double First angle in radians angleB_rad double Second angle in radians Returns double The absolute difference between the two angles Add(double[], double[]) Adds the elements of the second array to the corresponding elements of the first array in-place. public static double[] Add(this double[] src, double[] src2) Parameters src double[] The source array to which elements will be added. src2 double[] The array containing elements to add. Returns double[] The modified source array. AlterIfNan(double, double) public static double AlterIfNan(double primaryValue, double alteringValue) Parameters primaryValue double primary value alteringValue double the candidate value Returns double ApplyAlterIf(T, Func, T) Applies an alternative value if the source value meets a specified condition. public static T ApplyAlterIf(T src, Func isApplyingAlternateFunc, T alternative) Parameters src T The source value to check. isApplyingAlternateFunc Func Function that determines if the alternative should be applied. alternative T The alternative value to use if the condition is met. Returns T Either the original value or the alternative value based on the condition. Type Parameters T The type of the values. Average(IEnumerable) Average. public static Vec3d Average(this IEnumerable src) Parameters src IEnumerable src Returns Vec3d Average BilinearInterpolate(double, double, double, double, double, double) Performs bilinear interpolation between four double values public static double BilinearInterpolate(double v00, double v01, double v10, double v11, double u, double v) Parameters v00 double Value at (0,0) on normalized bilinear coordinate v01 double Value at (0,1) on normalized bilinear coordinate v10 double Value at (1,0) on normalized bilinear coordinate v11 double Value at (1,1) on normalized bilinear coordinate u double Ratio along v00 and v10, etc. v double Ratio along v00 and v01, etc. Returns double The interpolated value BilinearInterpolate(T, T, T, T, double, double) Bilinear interpolate. public static T BilinearInterpolate(T v00, T v01, T v10, T v11, double u, double v) where T : IAdditionOperators, IMultiplyOperators Parameters v00 T value at (0,0) on normalized bilinear coordinate v01 T value at (0,1) on normalized bilinear coordinate v10 T value at (1,0) on normalized bilinear coordinate v11 T value at (1,1) on normalized bilinear coordinate u double ratio along v00 and v10, etc. v double ratio along v00 and v01, etc. Returns T interpolated value Type Parameters T value type. BilinearInterpolate(T, T, T, T, double, double, Func, Func) Bilinear interpolate. public static T BilinearInterpolate(T v00, T v01, T v10, T v11, double u, double v, Func scalingFunc, Func addingFunc) Parameters v00 T value at (0,0) on normalized bilinear coordinate v01 T value at (0,1) on normalized bilinear coordinate v10 T value at (1,0) on normalized bilinear coordinate v11 T value at (1,1) on normalized bilinear coordinate u double ratio along v00 and v10, etc. v double ratio along v00 and v01, etc. scalingFunc Func scaling function addingFunc Func adding function Returns T interpolated value Type Parameters T value type. BinaryDividentSequence(int) Generates a value in a binary divident sequence based on the seed. public static double BinaryDividentSequence(int seed) Parameters seed int The seed value for the sequence. Returns double The value in the binary divident sequence. Cbrt(double) Calculates the cube root of a number. public static double Cbrt(double v) Parameters v double The value to calculate the cube root of. Returns double The cube root of the specified value. Clamp(T, T, T) Clamps a value within an inclusive range of minimum and maximum values. public static T Clamp(this T val, T min, T max) where T : IComparable Parameters val T min T max T Returns T Type Parameters T Convert_inchdmin_To_mmds(double) Converts inches per minute to millimeters per second. public static double Convert_inchdmin_To_mmds(double inchdmin) Parameters inchdmin double Value in inches per minute. Returns double Value in millimeters per second. Convert_mdmin_To_mmds(double) Converts meters per minute to millimeters per second. public static double Convert_mdmin_To_mmds(double mdmin) Parameters mdmin double Value in meters per minute. Returns double Value in millimeters per second. Convert_mmdmin_To_mmds(double) Converts millimeters per minute to millimeters per second. public static double Convert_mmdmin_To_mmds(double mmdmin) Parameters mmdmin double Value in millimeters per minute. Returns double Value in millimeters per second. Convert_mmds_To_mdmin(double) Converts millimeters per second to meters per minute. public static double Convert_mmds_To_mdmin(double mmds) Parameters mmds double Value in millimeters per second. Returns double Value in meters per minute. Convert_mmds_To_mmdmin(double) Converts millimeters per second to millimeters per minute. public static double Convert_mmds_To_mmdmin(double mmds) Parameters mmds double Value in millimeters per second. Returns double Value in millimeters per minute. Convert_radds_To_rpm(double) Converts radians per second to revolutions per minute (RPM). public static double Convert_radds_To_rpm(double radds) Parameters radds double Value in radians per second. Returns double Value in revolutions per minute. Convert_rpm_To_radds(double) Converts revolutions per minute (RPM) to radians per second. public static double Convert_rpm_To_radds(double rpm) Parameters rpm double Value in revolutions per minute. Returns double Value in radians per second. Cycle(double, double, double) If the value is within lowerBound and upperBound, return value. Otherwise, perform looped value according to the direction from lower to upper. ex. bound=(0,1), value=3.1, than return 0.1. public static double Cycle(double value, double lowerBound, double upperBound) Parameters value double value lowerBound double lower bound, inclusive upperBound double upper bound, exclusive Returns double cycled value Cycle(double, double, double, bool) Cycles a value to be within the specified range, with configurable bound inclusivity. public static double Cycle(double value, double lowerBound, double upperBound, bool isBothBoundInclusive) Parameters value double The value to cycle. lowerBound double The lower bound of the range. upperBound double The upper bound of the range. isBothBoundInclusive bool If true, both bounds are inclusive; otherwise, only the lower bound is inclusive. Returns double The cycled value within the specified range. Cycle2Pi_rad(double, double, bool) Get value by the cycle range transformation. The cycle is from anchor_rad-pi to anchor_rad+pi. public static double Cycle2Pi_rad(double target_rad, double anchor_rad = 0, bool isBothBoundInclusive = false) Parameters target_rad double target angle anchor_rad double anchor angle isBothBoundInclusive bool if true, both bounds are inclusive; otherwise, only the lower bound is inclusive Returns double adjusted target angle CycleUnit(double) Get the value locates on 0(inclusive) ~ 1(exclusive). The source code: return v - Math.Floor(v); public static double CycleUnit(double v) Parameters v double value Returns double 0 (inclusive) ~1 (exclusive) Decompose(double[,], out int[], out int) Performs LU decomposition with partial pivoting on a matrix. public static double[,] Decompose(double[,] matrix, out int[] perm, out int toggle) Parameters matrix double[,] The matrix to decompose. perm int[] Output parameter that holds row permutations. toggle int Output parameter that is +1 or -1 depending on whether the number of row exchanges is even or odd. Returns double[,] The LU decomposition of the matrix. Exceptions Exception Thrown when attempting to decompose a non-square matrix. Div(double[], double) Divides each element of the array by a scalar value in-place. public static double[] Div(this double[] src, double scale) Parameters src double[] The source array to be modified. scale double The scalar value to divide by. Returns double[] The modified source array. Erf(double) Calculates the error function (erf) for the specified value. public static double Erf(double x) Parameters x double The value to calculate the error function for Returns double The error function value Erfc(double) Calculates the complementary error function (erfc) for the specified value. public static double Erfc(double x) Parameters x double The value to calculate the complementary error function for Returns double The complementary error function value GetAbs(double[]) Creates a new array containing the absolute values of the elements in the source array. public static double[] GetAbs(this double[] src) Parameters src double[] The source array. Returns double[] A new array containing the absolute values of the elements in the source array. GetAdd(double[], double[]) Creates a new array by adding corresponding elements of two arrays. public static double[] GetAdd(this double[] src, double[] src2) Parameters src double[] The first array. src2 double[] The second array. Returns double[] A new array containing the sum of corresponding elements. GetCommonRatioFromGeometricSeries(double, double, double) Calculates the common ratio from a geometric series sum. public static double GetCommonRatioFromGeometricSeries(double geometricSeriesSum, double powIndex, double convergenceLimit = 0.001) Parameters geometricSeriesSum double The sum of the geometric series. powIndex double The power index in the series. convergenceLimit double The convergence limit for the calculation. Returns double The common ratio of the geometric series. GetDiv(double[], double) Creates a new array by dividing each element of the source array by a scalar value. public static double[] GetDiv(this double[] src, double scale) Parameters src double[] The source array. scale double The scalar value to divide by. Returns double[] A new array with each element divided by the scalar value. GetDot(double[], double[]) Creates a new array by multiplying corresponding elements of two arrays. public static double[] GetDot(this double[] a, double[] b) Parameters a double[] The first array. b double[] The second array. Returns double[] A new array containing the product of corresponding elements. GetInterpolationRatio(TimeSpan, TimeSpan, TimeSpan) Gets the interpolation ratio between two TimeSpan values public static double GetInterpolationRatio(TimeSpan begin, TimeSpan end, TimeSpan pos) Parameters begin TimeSpan The beginning TimeSpan end TimeSpan The ending TimeSpan pos TimeSpan The position TimeSpan to calculate the ratio for Returns double The interpolation ratio: (pos - begin) / (end - begin) GetInterpolationRatio(T, T, T) Get position ratio. (pos - begin) / (end - begin) . public static double GetInterpolationRatio(T begin, T end, T pos) where T : ISubtractionOperators, IDivisionOperators Parameters begin T range begin end T range end pos T key position Returns double position ratio Type Parameters T GetInterpolationRatio(T, T, T, Func, Func) Gets the interpolation ratio between two values using custom subtraction and division functions public static double GetInterpolationRatio(T begin, T end, T pos, Func minusFunc, Func divFunc) Parameters begin T The beginning value end T The ending value pos T The position value to calculate the ratio for minusFunc Func The function to use for subtraction divFunc Func The function to use for division Returns double The interpolation ratio: (pos - begin) / (end - begin) Type Parameters T The type of the values GetMul(double[], double) Creates a new array by multiplying each element of the source array by a scalar value. public static double[] GetMul(this double[] src, double s) Parameters src double[] The source array. s double The scalar value to multiply by. Returns double[] A new array with each element multiplied by the scalar value. GetSub(double[], double[]) Creates a new array by subtracting corresponding elements of the second array from the first array. public static double[] GetSub(this double[] a, double[] b) Parameters a double[] The first array. b double[] The second array to subtract. Returns double[] A new array containing the difference of corresponding elements. Idt(int) Creates an identity matrix of the specified size. public static double[,] Idt(int n) Parameters n int The size of the square identity matrix. Returns double[,] An n x n identity matrix. Interpolate(TimeSpan, TimeSpan, double) Interpolates between two TimeSpan values using the specified ratio public static TimeSpan Interpolate(TimeSpan a, TimeSpan b, double ratio) Parameters a TimeSpan The first TimeSpan value b TimeSpan The second TimeSpan value ratio double The interpolation ratio (0.0 to 1.0) Returns TimeSpan The interpolated TimeSpan value: a * (1 - ratio) + b * ratio InterpolateWithinBoundary(T, T, double) If ratio smaller or equal 0, return a. If ratio larger or equal 1, return b. Otherwise, interpolate by ratio. public static T InterpolateWithinBoundary(T a, T b, double ratio) where T : IEqualityOperators, IAdditionOperators, IMultiplyOperators Parameters a T b T ratio double Returns T Type Parameters T Interpolate(T, T, double) Interpolate from a to b with ratio alpha:(1-alpha). public static T Interpolate(T a, T b, double ratio) where T : IEqualityOperators, IAdditionOperators, IMultiplyOperators Parameters a T a b T b ratio double ratio Returns T a * (1 - ratio) + b * ratio Type Parameters T Interpolate(T, T, double, Func) Interpolates between two values based on a position using a position function. public static T Interpolate(T a, T b, double pos, Func posFunc) where T : INumber, IMultiplyOperators Parameters a T The first value b T The second value pos double The position to interpolate at posFunc Func Function to extract a position from a value Returns T The interpolated value Type Parameters T The type of the values Interpolate(TItem, TItem, double, Func, Func, Func) Interpolates between two items based on a key value using custom functions. public static TItem Interpolate(TItem a, TItem b, double key, Func keyFunc, Func addingFunc, Func scalingFunc) Parameters a TItem The first item b TItem The second item key double The key value to interpolate at (0.0 to 1.0) keyFunc Func Function to extract a double key from an item addingFunc Func Function to add two items scalingFunc Func Function to scale an item by a double Returns TItem The interpolated item Type Parameters TItem The type of the items Interpolate(T, T, double, Func, Func) Interpolates between two values using custom addition and scaling functions public static T Interpolate(T a, T b, double ratio, Func addingFunc, Func scalingFunc) Parameters a T The first value b T The second value ratio double The interpolation ratio (0.0 to 1.0) addingFunc Func The function to use for addition scalingFunc Func The function to use for scaling Returns T The interpolated value: a * (1 - ratio) + b * ratio Type Parameters T The type of the values Interpolate(T[], T[], double) Interpolates between two arrays of values using the specified ratio public static T[] Interpolate(T[] a, T[] b, double ratio) where T : INumber, IMultiplyOperators Parameters a T[] The first array b T[] The second array ratio double The interpolation ratio (0.0 to 1.0) Returns T[] A new array containing the interpolated values Type Parameters T The type of the array elements Interpolate(TItem, TItem, TKey, Func, Func, Func, Func, Func) Interpolates between two items using custom key extraction, key operations, and item operations public static TItem Interpolate(TItem a, TItem b, TKey key, Func keyFunc, Func keyMinusFunc, Func keyDivFunc, Func itemAddingFunc, Func itemScalingFunc) Parameters a TItem The first item b TItem The second item key TKey The key value to interpolate at keyFunc Func Function to extract a key from an item keyMinusFunc Func Function to subtract keys keyDivFunc Func Function to divide keys itemAddingFunc Func Function to add items itemScalingFunc Func Function to scale items Returns TItem The interpolated item Type Parameters TKey The type of the key used for interpolation TItem The type of the items being interpolated Inverse(double[,]) Computes the inverse of a matrix. public static double[,] Inverse(double[,] matrix) Parameters matrix double[,] The matrix to invert. Returns double[,] The inverse of the matrix. Exceptions Exception Thrown when the matrix cannot be inverted. Inverse2d(double[,], double[,]) Calculates the inverse of a 2x2 matrix public static void Inverse2d(double[,] src, double[,] dst) Parameters src double[,] The source 2x2 matrix dst double[,] The destination matrix to store the inverse Inverse3d(double[,], double[,]) Calculates the inverse of a 3x3 matrix public static void Inverse3d(double[,] src, double[,] dst) Parameters src double[,] The source 3x3 matrix dst double[,] The destination matrix to store the inverse IsFinite(double) Is v neither NaN nor infinity. public static bool IsFinite(double v) Parameters v double value Returns bool Is v neither NaN nor infinity. Max(T, T) Returns the larger of two values. public static T Max(T a, T b) where T : IComparable Parameters a T The first value to compare. b T The second value to compare. Returns T The larger of the two values. Type Parameters T The type of values to compare. Min(T, T) Returns the smaller of two values. public static T Min(T a, T b) where T : IComparable Parameters a T The first value to compare. b T The second value to compare. Returns T The smaller of the two values. Type Parameters T The type of values to compare. Mul(double[], double) Multiplies each element of the array by a scalar value in-place. public static double[] Mul(this double[] src, double scale) Parameters src double[] The source array to be modified. scale double The scalar value to multiply by. Returns double[] The modified source array. NoChanged(double) Do nothing. public static double NoChanged(double src) Parameters src double src Returns double src Norm2(double[]) Calculates the Euclidean norm (L2 norm) of a vector. public static double Norm2(this double[] src) Parameters src double[] The source vector as an array of doubles. Returns double The Euclidean norm of the vector. Normalized(double[]) Creates a new array by normalizing the source array to have a unit norm. public static double[] Normalized(this double[] src) Parameters src double[] The source array. Returns double[] A new array with the same direction as the source array but with unit norm. Pow3(double) Calculates the cube (power of 3) of a double value. public static double Pow3(this double src) Parameters src double The source double value Returns double The cube of the source value Pow3(int) Calculates the cube (power of 3) of an integer value. public static int Pow3(this int src) Parameters src int The source integer value Returns int The cube of the source value Pow4(double) Calculates the fourth power of a double value. public static double Pow4(this double src) Parameters src double The source double value Returns double The fourth power of the source value Pow4(int) Calculates the fourth power of an integer value. public static int Pow4(this int src) Parameters src int The source integer value Returns int The fourth power of the source value Product(double[,], double[,]) Multiplies two matrices. public static double[,] Product(double[,] matrixA, double[,] matrixB) Parameters matrixA double[,] The first matrix. matrixB double[,] The second matrix. Returns double[,] The product of the two matrices. Exceptions Exception Thrown when the matrices are not conformable for multiplication. SolveCubic(double, double, double, double) public static Complex[] SolveCubic(double c0, double c1, double c2, double c3) Parameters c0 double constant term. c1 double coefficient of power of 1 of x. c2 double coefficient of power of 2 of x. c3 double coefficient of power of 3 of x. Returns Complex[] SolveQuadratic(double, double, double, out double, out double) Solve quadratic equation. public static double SolveQuadratic(double c, double b, double a, out double x0, out double x1) Parameters c double coefficient of constant of x. b double coefficient of power of 1 of x. a double coefficient of power of 2 of x. x0 double lower root x1 double higher root Returns double determinent SqrtVariance(IList, out double) Standard deviation with n denominator (instead of n-1). public static double SqrtVariance(IList src, out double avg) Parameters src IList avg double Returns double STD Square(double) Calculates the square of a double value. public static double Square(this double src) Parameters src double The source double value Returns double The square of the source value Square(int) Calculates the square of an integer value. public static int Square(this int src) Parameters src int The source integer value Returns int The square of the source value Sum(IEnumerable) Sum. public static Vec3d Sum(this IEnumerable src) Parameters src IEnumerable src Returns Vec3d Sum ToDeg(double) Get degree from radian. public static double ToDeg(double rad) Parameters rad double radian Returns double degree ToRad(double) Get radian from degree. public static double ToRad(double deg) Parameters deg double degree Returns double radian ToString(double[,], string) Converts a 2D double array to a string representation using the specified format public static string ToString(this double[,] src, string format) Parameters src double[,] The source 2D double array format string The format string to use for each double value Returns string A string representation of the 2D array ToString(double[], string) Converts a double array to a string representation using the specified format public static string ToString(this double[] src, string format) Parameters src double[] The source double array format string The format string to use for each double value Returns string A string representation of the array ToStringWithoutCultureNum(double, string) To string function. The special number is formatted by XmlConvert. public static string ToStringWithoutCultureNum(this double src, string format) Parameters src double src format string format Returns string string Transpose(double[,]) Transposes a 2D matrix represented as a 2D array. public static double[,] Transpose(double[,] src) Parameters src double[,] The source matrix to transpose. Returns double[,] A new matrix that is the transpose of the source matrix." }, "api/Hi.Geom.NativeStl.html": { "href": "api/Hi.Geom.NativeStl.html", @@ -1947,7 +1947,7 @@ "api/Hi.MachiningProcs.ProxyProjectService.html": { "href": "api/Hi.MachiningProcs.ProxyProjectService.html", "title": "Class ProxyProjectService | HiAPI-C# 2025", - "summary": "Class ProxyProjectService Namespace Hi.MachiningProcs Assembly HiNc.dll Delegate (User-based) Project Service. Apply relative file path from AdminDirectory. public class ProxyProjectService : IProjectService, IMachiningProjectGetter Inheritance object ProxyProjectService Implements IProjectService IMachiningProjectGetter Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ProxyProjectService(LocalProjectService, ProxyConfig) Initializes a new instance of the ProxyProjectService class. public ProxyProjectService(LocalProjectService localProjectService, ProxyConfig proxyConfig) Parameters localProjectService LocalProjectService The local project service. proxyConfig ProxyConfig The proxy configuration options. Properties AdminDirectory Gets the admin directory path from the proxy configuration. public string AdminDirectory { get; set; } Property Value string LocalProjectService Gets the local project service instance. public LocalProjectService LocalProjectService { get; } Property Value LocalProjectService MachiningProjectPath public string MachiningProjectPath { get; set; } Property Value string ProxyConfig Gets the proxy configuration options. public ProxyConfig ProxyConfig { get; } Property Value ProxyConfig RelativeProjectPath Gets the project path relative to the AdminDirectory. public string RelativeProjectPath { get; } Property Value string Methods CloseProject() Closes the current project. public void CloseProject() GetLocalProjectService() Get Local Project Service as base-service. public LocalProjectService GetLocalProjectService() Returns LocalProjectService Local Project Service GetMachiningProject() Gets the MachiningProject instance. public MachiningProject GetMachiningProject() Returns MachiningProject The MachiningProject instance. LoadProject(string) Loads a project by file path relative to the admin directory. public void LoadProject(string relativeFilePath) Parameters relativeFilePath string The relative file path from the admin directory root NewProject(string) Creates a new project by file path relative to the admin directory. public void NewProject(string relativeFilePath) Parameters relativeFilePath string The relative file path from the admin directory ReloadProject() Reloads the current project. public void ReloadProject() SaveAsProject(string) Saves the current project to a specified relative file path. public void SaveAsProject(string relativeFilePath) Parameters relativeFilePath string The relative file path from the admin directory root SaveProject() Saves the current project. public void SaveProject()" + "summary": "Class ProxyProjectService Namespace Hi.MachiningProcs Assembly HiNc.dll Delegate (User-based) Project Service. Apply relative file path from AdminDirectory. public class ProxyProjectService : IProjectService, IMachiningProjectGetter Inheritance object ProxyProjectService Implements IProjectService IMachiningProjectGetter Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ProxyProjectService(LocalProjectService, ProxyConfig) Initializes a new instance of the ProxyProjectService class. public ProxyProjectService(LocalProjectService localProjectService, ProxyConfig proxyConfig) Parameters localProjectService LocalProjectService The local project service. proxyConfig ProxyConfig The proxy configuration options. Properties AdminDirectory Gets the admin directory path from the proxy configuration. public string AdminDirectory { get; set; } Property Value string LocalProjectService Gets the local project service instance. public LocalProjectService LocalProjectService { get; } Property Value LocalProjectService ProxyConfig Gets the proxy configuration options. public ProxyConfig ProxyConfig { get; } Property Value ProxyConfig RelativeProjectPath Gets the project path relative to the AdminDirectory. public string RelativeProjectPath { get; } Property Value string Methods CloseProject() Closes the current project. public void CloseProject() GetLocalProjectService() Get Local Project Service as base-service. public LocalProjectService GetLocalProjectService() Returns LocalProjectService Local Project Service GetMachiningProject() Gets the MachiningProject instance. public MachiningProject GetMachiningProject() Returns MachiningProject The MachiningProject instance. LoadProject(string) Loads a project by file path relative to the admin directory. public void LoadProject(string relativeFilePath) Parameters relativeFilePath string The relative file path from the admin directory root NewProject(string) Creates a new project by file path relative to the admin directory. public void NewProject(string relativeFilePath) Parameters relativeFilePath string The relative file path from the admin directory ReloadProject() Reloads the current project. public void ReloadProject() SaveAsProject(string) Saves the current project to a specified relative file path. public void SaveAsProject(string relativeFilePath) Parameters relativeFilePath string The relative file path from the admin directory root SaveProject() Saves the current project. public void SaveProject()" }, "api/Hi.MachiningProcs.RenderingFlag.html": { "href": "api/Hi.MachiningProcs.RenderingFlag.html", @@ -1957,7 +1957,7 @@ "api/Hi.MachiningProcs.RuntimeApi.html": { "href": "api/Hi.MachiningProcs.RuntimeApi.html", "title": "Class RuntimeApi | HiAPI-C# 2025", - "summary": "Class RuntimeApi Namespace Hi.MachiningProcs Assembly HiNc.dll Runtime API for machining operations. public class RuntimeApi : ICsScriptApi Inheritance object RuntimeApi Implements ICsScriptApi Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DefaultParaTemplateDimension Gets or sets the parameter template dimension (2D or 3D). [JsAce] public int DefaultParaTemplateDimension { get; set; } Property Value int DiffVisualRadius_mm Gets or sets the visual radius in millimeters for difference visualization. Controls the radius used for highlighting differences between workpiece states. [JsAce] public double DiffVisualRadius_mm { get; set; } Property Value double DispCacheMb Gets or sets the display cache size in megabytes. [Obsolete] public long DispCacheMb { get; set; } Property Value long DispCache_Mb Gets or sets the display cache size in megabytes. [JsAce] public long DispCache_Mb { get; set; } Property Value long EmbeddedLogMode Gets or sets the embedded log mode for NC optimization. [JsAce] public static NcOptimizationEmbeddedLogMode EmbeddedLogMode { get; set; } Property Value NcOptimizationEmbeddedLogMode EnableAutoMapOnSelectionEnd Gets or sets whether to automatically map selections when they end. [JsAce] public bool EnableAutoMapOnSelectionEnd { get; set; } Property Value bool EnableCollisionDetection Gets or sets whether collision detection is enabled. [JsAce(DocContentHtml = \"Enable Collision Detection.\")] public bool EnableCollisionDetection { get; set; } Property Value bool EnableIndividualStepAdjustmentLog Gets or sets whether to enable individual step adjustment logging. [JsAce] public static bool EnableIndividualStepAdjustmentLog { get; set; } Property Value bool EnablePauseOnCollision Gets or sets whether to pause execution when a collision is detected. This property only has an effect if collision detection is enabled. [Obsolete] public bool EnablePauseOnCollision { get; set; } Property Value bool EnablePauseOnFailure Gets or sets whether to pause on failure during execution. [JsAce(DocContentHtml = \"Enable Pause On Failure.\")] public bool EnablePauseOnFailure { get; set; } Property Value bool EnablePhysics Gets or sets whether milling force evaluation is enabled. [JsAce(DocContentHtml = \"Enable milling force evaluation.\")] public bool EnablePhysics { get; set; } Property Value bool EnableWearEffect Gets or sets whether tool wear effects are enabled in simulation. [JsAce] public bool EnableWearEffect { get; set; } Property Value bool FeedPerCycle Gets a new feed per cycle machining motion resolution instance. [JsAce] public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; } Property Value FeedPerCycleMachiningMotionResolution FeedPerTooth Gets a new feed per tooth machining motion resolution instance. [JsAce] public FeedPerToothMachiningMotionResolution FeedPerTooth { get; } Property Value FeedPerToothMachiningMotionResolution Fixture Gets or sets the fixture. [JsAce] public Fixture Fixture { get; set; } Property Value Fixture Global Global variables. [JsAce(\"Global[$1key]\")] public Dictionary Global { get; } Property Value Dictionary InitSpindleTemperature_C Gets or sets the initial spindle temperature in degrees Celsius. [JsAce(DocContentHtml = \"Spindle Temperature on initialization.\")] public double InitSpindleTemperature_C { get; set; } Property Value double JsAceCompletionProfileJsonArray Internal used. public static JsonArray JsAceCompletionProfileJsonArray { get; } Property Value JsonArray MachiningMotionResolution Gets or sets the machining motion resolution. [JsAce] public IMachiningMotionResolution MachiningMotionResolution { get; set; } Property Value IMachiningMotionResolution MachiningResolution Gets or sets the machining resolution in millimeters. [JsAce] [Obsolete(\"Use MachiningResolution_mm instead.\")] public double MachiningResolution { get; set; } Property Value double MachiningResolution_mm Gets or sets the machining resolution in millimeters. [JsAce] public double MachiningResolution_mm { get; set; } Property Value double MachiningSession public MachiningSession MachiningSession { get; } Property Value MachiningSession MapTask Task tracking the status of mapping operations. public Task MapTask { get; set; } Property Value Task MillingCycleDivisionNum Gets or sets the number of divisions per cycle for milling force calculation. This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used. [JsAce] public static int MillingCycleDivisionNum { get; set; } Property Value int MillingForceCycleDivisionNum Gets or sets the number of divisions per cycle for milling force calculation. This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used. [JsAce] [Obsolete(\"Use MillingCycleDivisionNum instead.\")] public static int MillingForceCycleDivisionNum { get; set; } Property Value int NcOptOption Gets or sets the NC optimization options. [JsAce] public NcOptOption NcOptOption { get; set; } Property Value NcOptOption OptEnableDepthCompensation Enables or disables depth compensation during optimization. [JsAce] public bool OptEnableDepthCompensation { get; set; } Property Value bool OptEnableFeedrate Gets or sets whether to enable feed rate optimization in NC optimization. [JsAce] public bool OptEnableFeedrate { get; set; } Property Value bool OptEnableForwardCompensation Enables or disables forward compensation during optimization. [JsAce] public bool OptEnableForwardCompensation { get; set; } Property Value bool OptEnableInterpolation Enables or disables reinterpolation for optimization. [JsAce] public bool OptEnableInterpolation { get; set; } Property Value bool OptEnableSideCompensation Enables or disables side compensation during optimization. [JsAce] public bool OptEnableSideCompensation { get; set; } Property Value bool OptExtendedPostDistance_mm Gets or sets the extended post-distance in millimeters for NC optimization. This is the distance after the current segment that will be considered for optimization. [JsAce] public double OptExtendedPostDistance_mm { get; set; } Property Value double OptExtendedPreDistance_mm Gets or sets the extended pre-distance in millimeters for NC optimization. This is the distance before the current segment that will be considered for optimization. [JsAce] public double OptExtendedPreDistance_mm { get; set; } Property Value double OptFeedrateAssignmentRatio Gets or sets the feedrate assignment ratio for optimization. If the feedrate change exceeds this ratio, the feedrate in the NC line will be updated. [JsAce] public double OptFeedrateAssignmentRatio { get; set; } Property Value double OptMaxAcceleration_mmds2 Maximum acceleration in mm/s² during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxAcceleration_mmds2 { get; set; } Property Value double OptMaxFeedPerTooth_mm Gets or sets the maximum feed per tooth in millimeters for optimization. [JsAce] public double OptMaxFeedPerTooth_mm { get; set; } Property Value double OptMaxFeedrate_mmdmin Maximum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMaxFeedrate_mmdmin { get; set; } Property Value double OptMaxJerk_mmds3 Maximum jerk in mm/s³ during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxJerk_mmds3 { get; set; } Property Value double OptMinFeedPerTooth_mm Gets or sets the minimum feed per tooth in millimeters for optimization. [JsAce] public double OptMinFeedPerTooth_mm { get; set; } Property Value double OptMinFeedrate_mmdmin Minimum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMinFeedrate_mmdmin { get; set; } Property Value double OptPreferedForce_N Preferred force in N for optimization. [JsAce] public double OptPreferedForce_N { get; set; } Property Value double OptRapidFeed_mmdmin Rapid feed rate in mm/min for non-cutting movements during optimization. [JsAce] public double OptRapidFeed_mmdmin { get; set; } Property Value double OptSpindlePowerSafetyFactor Safety factor for spindle power during optimization. [JsAce] public double OptSpindlePowerSafetyFactor { get; set; } Property Value double OptSpindlePowerUtilizationFactor Utilization factor for spindle power during optimization. It is the reciprocal of the spindle power safety factor. [JsAce] public double OptSpindlePowerUtilizationFactor { get; set; } Property Value double OptSpindleTorqueSafetyFactor Gets or sets the spindle torque safety factor for NC optimization. [JsAce] public double OptSpindleTorqueSafetyFactor { get; set; } Property Value double OptSpindleTorqueUtilizationFactor Utilization factor for spindle torque during optimization. It is the reciprocal of the spindle torque safety factor. [JsAce] public double OptSpindleTorqueUtilizationFactor { get; set; } Property Value double OptThermalYieldSafetyFactor Safety factor for spindle torque during optimization. [JsAce] public double OptThermalYieldSafetyFactor { get; set; } Property Value double OptThermalYieldUtilizationFactor Utilization factor for thermal yield during optimization. It is the reciprocal of the thermal yield safety factor. [JsAce] public double OptThermalYieldUtilizationFactor { get; set; } Property Value double OptYieldingSafetyFactor Safety factor for yielding during optimization. [JsAce] public double OptYieldingSafetyFactor { get; set; } Property Value double OptYieldingUtilizationFactor Utilization factor for yielding during optimization. It is the reciprocal of the yielding safety factor. [JsAce] public double OptYieldingUtilizationFactor { get; set; } Property Value double ScriptOptions ScriptOptions. public ScriptOptions ScriptOptions { get; set; } Property Value ScriptOptions SessionMessageHost Gets the session message host for displaying messages. [JsAce] public SessionMessageHost SessionMessageHost { get; } Property Value SessionMessageHost StepCount Gets the total number of milling steps. [JsAce] public int StepCount { get; } Property Value int Workpiece Gets or sets the workpiece. [JsAce] public Workpiece Workpiece { get; set; } Property Value Workpiece Methods AddTimeDataByFile(string, string, double, double) Adds time-based data from a file to the time mapping dictionary with specified time bounds in seconds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] public bool AddTimeDataByFile(string key, string relFile, double beginTime, double endTime) Parameters key string Key to identify the data relFile string Relative path to the data file beginTime double Beginning time in seconds endTime double Ending time in seconds Returns bool True if the data was successfully added, false otherwise AddTimeDataByFile(string, string, string, string) Adds time-based data from a file to the time mapping dictionary with specified time bounds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] public bool AddTimeDataByFile(string key, string relFile, string beginTimeText, string endTimeText) Parameters key string Key to identify the data relFile string Relative path to the data file beginTimeText string Beginning time as text (seconds or TimeSpan format) endTimeText string Ending time as text (seconds or TimeSpan format) Returns bool True if the data was successfully added, false otherwise AppendMessagesToFile(string, params string[]) Appends messages to a file, optionally filtered by tags. [JsAce(\"AppendMessagesToFile(\\\"dstRelFile\\\",flags)\")] public void AppendMessagesToFile(string dstRelFile, params string[] flags) Parameters dstRelFile string Destination relative file path flags string[] Optional flags to filter messages by tags BeginPreserve() Begin Preserve section in optimzation process. [JsAce(\"BeginPreserve()\")] public void BeginPreserve() BeginSelection(string, AnchorMode, IStepShift) Begin mark on current line. milling step() has not triggered yet. public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBegin, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the beginning of selection shift IStepShift Step shift to apply BeginSession() Begins a new machining session. Not for end user. public void BeginSession() ClearTimeMappingData() Clears all time mapping data. [JsAce] public void ClearTimeMappingData() Diff(double) Performs a difference analysis on the workpiece geometry to detect variations. [JsAce(\"Diff($1detectionRadius_mm)\")] public void Diff(double detectionRadius_mm) Parameters detectionRadius_mm double Radius for detecting differences EndPreserve() End Preserve section in optimzation process. [JsAce(\"EndPreserve()\")] public void EndPreserve() EndSelection(string, AnchorMode, IStepShift) End mark on current line for selection. public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the end of selection shift IStepShift Step shift to apply EndSession() Ends the current machining session. Not for end user. public void EndSession() ErrorMessage(string) Displays an error message in the message host. [JsAce(\"ErrorMessage($1message)\")] public void ErrorMessage(string message) Parameters message string The error message to display FixedPace(double, double) Creates a fixed machining motion resolution with specified parameters. [JsAce(\"FixedPace($1linearResolution_mm, $2rotaryResolution_deg)\")] public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters rotaryResolution_deg double Rotary resolution in degrees Returns FixedMachiningMotionResolution A new fixed machining motion resolution instance GetMillingStep(int) Retrieves a milling step at the specified index. [JsAce(Snippet = \"GetMillingStep($1\\\"stepIndex\\\")\")] public MachiningStep GetMillingStep(int stepIndex) Parameters stepIndex int Index of the milling step to retrieve Returns MachiningStep The milling step at the specified index GetStickMachiningToolObservationHeight_mm(int) Gets the observation height in millimeters for the specified stick machining tool. [JsAce(\"GetStickMachiningToolObservationHeight_mm($1toolId)\")] public double GetStickMachiningToolObservationHeight_mm(int toolId) Parameters toolId int The ID of the tool Returns double The observation height in millimeters GetUniformContourTrayShiftAngle_deg(int) Gets the shift angle in degrees for the uniform contour tray of the specified tool. [JsAce(\"GetUniformContourTrayShiftAngle_deg($1toolId)\")] public double GetUniformContourTrayShiftAngle_deg(int toolId) Parameters toolId int The ID of the tool Returns double The shift angle in degrees LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift) Create a line selection from begin to end mark. public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.LineBegin, IStepShift beginShift = null, AnchorMode endAnchorMode = AnchorMode.LineEnd, IStepShift endShift = null) Parameters key string Identifier key for the selection beginAnchorMode AnchorMode Mode for anchoring the beginning of selection beginShift IStepShift Step shift to apply at beginning endAnchorMode AnchorMode Mode for anchoring the end of selection endShift IStepShift Step shift to apply at end LoadCuttingParaByFile(string) Loads cutting parameters from a file. [JsAce(\"LoadCuttingParaByFile($1\\\"relFile\\\")\")] public void LoadCuttingParaByFile(string relFile) Parameters relFile string File path relative to BaseDirectory. Map(string, FileTimeSection, CycleSamplingMode?) Maps selection data to time section. public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShotUtil.CycleSamplingMode? cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters key string Identifier key for the selection fileTimeSection FileTimeSection File time section, or null to use the one associated with the key cycleSamplingMode StepTimeShotUtil.CycleSamplingMode? Cycle sampling mode Returns Task Task representing the asynchronous mapping operation MapByActualTime(string, CycleSamplingMode) Maps machining steps by actual time from a time shot file. [Obsolete] public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters timeShotRelFile string Relative path to the time shot file. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode. MapSeriesByCsvFile(string, CycleSamplingMode) Maps machining steps by actual time from a time shot csv file. [JsAce(\"MapSeriesByCsvFile($1timeShotRelFile)\")] public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters timeShotRelFile string Relative path to the time shot file. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode. MapSingleByCsvFile(string) Reads a CSV file and performs time-based interpolation to map data to milling steps. It is one (step) - one (embedded-data) mapping. [JsAce(Snippet = \"MapSingleByCsvFile($1\\\"csvFile\\\")\")] public void MapSingleByCsvFile(string csvFile) Parameters csvFile string Path to the CSV file relative to the base directory Message(string) Displays a message in the message host. [JsAce(\"Message($1message)\")] public void Message(string message) Parameters message string The message to display OptCallPreferFuncIndexDictionary() Gets the dictionary of preferred function index for NC optimization. [JsAce(\"OptCallPreferFuncIndexDictionary()\")] public Dictionary, double> OptCallPreferFuncIndexDictionary() Returns Dictionary, double> Dictionary mapping functions to their preference indexes. OptimizeToFiles(string) Optimizes NC files and saves results using the specified file template. [JsAce(Snippet = \"OptimizeToFiles(\\\"Output/Opt-[NcName]\\\")\", DocContentHtml = \"Optimize To Files by substitude template keywoard \\\"[NcName]\\\"\")] public void OptimizeToFiles(string relFileTemplate = \"Output/Opt-[NcName]\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder Pace() A pausable mark for the playing process. The function enables Pause() to take effect. [JsAce(\"Pace();\")] public void Pace() Remarks Waits for the player to signal the next pace. Pause() Pause Player [JsAce(DocContentHtml = \"Pause Player\")] public void Pause() PlayAct(IAct, IIndexedFileLine, CancellationToken?) Plays an act with pacing control. [JsAce] public void PlayAct(IAct act, IIndexedFileLine sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct The act to play. sourceCommand IIndexedFileLine The source command. cancellationToken CancellationToken? Cancellation token. PlayClTeleport(double, double, double, double, double, double) Plays a CL (cutter location) teleport operation. [JsAce] public void PlayClTeleport(double x, double y, double z, double i, double j, double k) Parameters x double X coordinate. y double Y coordinate. z double Z coordinate. i double I vector component. j double J vector component. k double K vector component. PlayCsvFile(string) Plays an Csv file with the specified relative path. [JsAce(\"PlayCsvFile($1\\\"csvFile\\\");\")] public void PlayCsvFile(string relFilePath) Parameters relFilePath string Relative path to the CSV file PlayNc(string, string) Plays NC code directly from a string, executing each action and pacing between them. [JsAce(Snippet = \"PlayNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Play NC. second parameter is the file name alternative shows in the log.\")] public void PlayNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs PlayNcFile(string) Plays an NC file with the specified relative path. [JsAce(\"PlayNcFile($1\\\"ncFile\\\");\")] public void PlayNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file PlayToolingTeleport(int) Plays a tooling teleport operation. [JsAce] public void PlayToolingTeleport(int toolId) Parameters toolId int The tool ID to teleport. Preserve() Preserve one line NC code in optimzation process. [JsAce(\"Preserve()\")] public void Preserve() ProgressMessage(string) Displays a progress message in the message host. [JsAce(\"ProgressMessage($1message)\")] public void ProgressMessage(string message) Parameters message string The progress message to display ReTrainMillingPara(SampleFlag, string, double) Re-trains milling parameters using the specified sample flag. [JsAce(\"ReTrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 0.1) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering ReadCsvByTimeInterpolation(string) Reads a CSV file and performs time-based interpolation to map data to milling steps. It is one (step) - one (embedded-data) mapping. [Obsolete] public void ReadCsvByTimeInterpolation(string csvFile) Parameters csvFile string Path to the CSV file relative to the base directory ReadRuntimeGeom(string) Reads runtime geometry from a file. [JsAce(\"ReadRuntimeGeom($1\\\"srcFile\\\")\")] public void ReadRuntimeGeom(string relFile) Parameters relFile string Relative path to the input file RegisterStepVariable(string, string, string, string, Func) Registers a step variable for tracking during execution. [JsAce(Snippet = \"RegisterStepVariable(\\\"$1key\\\",\\\"$2name\\\",\\\"$3unit\\\",\\\"$4formatString\\\",\\\"$5variableFunc\\\")\", DocContentHtml = \"

    Register Step Variable.

    \\\"unit\\\" is nullable

    \\\"formatString\\\" is nullable

    \")] public void RegisterStepVariable(string key, string name, string unit, string formatString, Func variableFunc = null) Parameters key string Unique key to identify the variable name string Human-readable name of the variable unit string Physical unit of the variable (can be null) formatString string Format string for displaying the variable (can be null) variableFunc Func Function to compute the variable value from a milling step (can be null) RemoveFlyPiece() Removes any disconnected or “flying” pieces from the workpiece geometry. [JsAce] public void RemoveFlyPiece() Reset() Reset Player [JsAce(DocContentHtml = \"Reset Player\")] public void Reset() ResetRuntime() Clears internal buffers. [JsAce] public void ResetRuntime() RunNc(string, string) Runs NC code directly from a string. Not for end user. [JsAce(Snippet = \"RunNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Run NC. second parameter is the file name alternative shows in the log.\")] public IEnumerable RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs Returns IEnumerable Enumerable sequence of actions to be executed RunNcFile(string) Runs an NC file with the specified relative path. Not for end user. [JsAce(\"RunNcFile($1\\\"ncFile\\\");\")] public IEnumerable RunNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file Returns IEnumerable Enumerable sequence of actions to be executed ScaledFeedPerCycle(double) Gets a new feed per cycle machining motion resolution instance with the specified scale. [JsAce(\"FeedPerCycle($1scale)\")] public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale) Parameters scale double The scale factor for the resolution. Returns FeedPerCycleMachiningMotionResolution A new FeedPerCycleMachiningMotionResolution instance with the specified scale. SetNcResolutionFeedPerCycle() Sets NC resolution to feed per cycle mode. public void SetNcResolutionFeedPerCycle() SetNcResolutionFeedPerTooth() Sets NC resolution to feed per tooth mode. public void SetNcResolutionFeedPerTooth() SetNcResolutionFixed(double, double) Sets NC resolution to fixed mode with specified resolution values. public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters. rotaryResolution_deg double Rotary resolution in degrees. SetStickMachiningToolObservationHeight_mm(int, double) Sets the observation height in millimeters for the specified stick machining tool. [JsAce(\"SetStickMachiningToolObservationHeight_mm($1toolId,$2height_mm)\")] public void SetStickMachiningToolObservationHeight_mm(int toolId, double height) Parameters toolId int The ID of the tool height double The observation height in millimeters to set SetUniformContourTrayShiftAngle_deg(int, double) Sets the shift angle in degrees for the uniform contour tray of the specified tool. [JsAce(\"SetUniformContourTrayShiftAngle_deg($1toolId,$2angle_deg)\")] public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg) Parameters toolId int The ID of the tool angle_deg double The shift angle in degrees to set ShiftDistance_mm(double) Creates a distance shift object representing the specified distance in millimeters. public DistanceShift ShiftDistance_mm(double distanceShift_mm) Parameters distanceShift_mm double Distance shift in millimeters Returns DistanceShift Distance shift object ShiftTime_s(double) Creates a time shift object representing the specified time in seconds. public TimeShift ShiftTime_s(double seconds) Parameters seconds double Time in seconds Returns TimeShift Time shift object TrainMillingPara(SampleFlag, string, double, ICuttingPara) Trains milling parameters using the specified sample flag. [JsAce(\"TrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 2, ICuttingPara paraTemplate = null) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering paraTemplate ICuttingPara Optional parameter template for cutting operations. WarningMessage(string) Displays a warning message in the message host. [JsAce(\"WarningMessage($1message)\")] public void WarningMessage(string message) Parameters message string The warning message to display WriteRuntimeGeom(string) Writes the current runtime geometry to a file. [JsAce(\"WriteRuntimeGeom($1\\\"dstFile\\\")\")] public void WriteRuntimeGeom(string relFile) Parameters relFile string Relative path to the output file WriteRuntimeGeomToStl(string, double) Writes the current runtime geometry to an STL file. [JsAce(\"WriteRuntimeGeomToStl($1\\\"dstFile\\\",$2resolution_mm)\")] public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0) Parameters relFile string Relative path to the output STL file resolution_mm double Resolution in millimeters (0 for default) WriteShotFiles(double, string) Writes time-series data to shot files with the specified resolution period (alternative parameter order). public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate) Parameters resolutionPeroid_ms double Resolution period in milliseconds relFileTemplate string Template for output file path, can include [NcName] placeholder WriteShotFiles(string, double) Writes time-series data to shot files with the specified resolution period. [JsAce(Snippet = \"WriteShotFiles(\\\"Output/[NcName].shot.csv\\\",resolutionPeroid_ms)\", DocContentHtml = \"Write time series data by resolutionPeroid_ms\")] public void WriteShotFiles(string relFileTemplate = \"Output/[NcName].shot.csv\", double resolutionPeroid_ms = 1) Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder resolutionPeroid_ms double Resolution period in milliseconds WriteStepFiles(string) Writes step-series data to files with the specified file template. [JsAce(Snippet = \"WriteStepFiles(\\\"Output/[NcName].step.csv\\\")\", DocContentHtml = \"Write step series data.\")] public void WriteStepFiles(string relFileTemplate = \"Output/[NcName].step.csv\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder Events MachiningStepBuilt Gets or sets the action to configure steps during execution. The event will be cleared by the calling of ResetRuntime(). [JsAce(Snippet = \"MachiningStepBuilt+=($1preStep,$2curStep)=>{$3Command};\", DocContentHtml = \"Runtime Step Configuration action. preStep is the Previous Milling Step; curStep is the Current Milling Step. preStep is null if no previous step existed.\")] public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate MachiningStepSelected Event that is triggered when a milling step is selected. The event will be cleared by the calling of ResetRuntime(). [JsAce(Snippet = \"MachiningStepSelected+=($1millingStep)=>{$2Command};\")] public event Action MachiningStepSelected Event Type Action" + "summary": "Class RuntimeApi Namespace Hi.MachiningProcs Assembly HiNc.dll Runtime API for machining operations. public class RuntimeApi : ICsScriptApi Inheritance object RuntimeApi Implements ICsScriptApi Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DefaultParaTemplateDimension Gets or sets the parameter template dimension (2D or 3D). [JsAce] public int DefaultParaTemplateDimension { get; set; } Property Value int DiffVisualRadius_mm Gets or sets the visual radius in millimeters for difference visualization. Controls the radius used for highlighting differences between workpiece states. [JsAce] public double DiffVisualRadius_mm { get; set; } Property Value double DispCacheMb Gets or sets the display cache size in megabytes. [Obsolete] public long DispCacheMb { get; set; } Property Value long DispCache_Mb Gets or sets the display cache size in megabytes. [JsAce] public long DispCache_Mb { get; set; } Property Value long EmbeddedLogMode Gets or sets the embedded log mode for NC optimization. [JsAce] public static NcOptimizationEmbeddedLogMode EmbeddedLogMode { get; set; } Property Value NcOptimizationEmbeddedLogMode EnableCollisionDetection Gets or sets whether collision detection is enabled. [JsAce(DocContentHtml = \"Enable Collision Detection.\")] public bool EnableCollisionDetection { get; set; } Property Value bool EnableIndividualStepAdjustmentLog Gets or sets whether to enable individual step adjustment logging. [JsAce] public static bool EnableIndividualStepAdjustmentLog { get; set; } Property Value bool EnableMapOnSelectionEnd Gets or sets whether to automatically map selections when they end. [JsAce] public bool EnableMapOnSelectionEnd { get; set; } Property Value bool EnablePauseOnCollision Gets or sets whether to pause execution when a collision is detected. This property only has an effect if collision detection is enabled. [Obsolete] public bool EnablePauseOnCollision { get; set; } Property Value bool EnablePauseOnFailure Gets or sets whether to pause on failure during execution. [JsAce(DocContentHtml = \"Enable Pause On Failure.\")] public bool EnablePauseOnFailure { get; set; } Property Value bool EnablePhysics Gets or sets whether milling force evaluation is enabled. [JsAce(DocContentHtml = \"Enable milling force evaluation.\")] public bool EnablePhysics { get; set; } Property Value bool EnableWearEffect Gets or sets whether tool wear effects are enabled in simulation. [JsAce] public bool EnableWearEffect { get; set; } Property Value bool FeedPerCycle Gets a new feed per cycle machining motion resolution instance. [JsAce] public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; } Property Value FeedPerCycleMachiningMotionResolution FeedPerTooth Gets a new feed per tooth machining motion resolution instance. [JsAce] public FeedPerToothMachiningMotionResolution FeedPerTooth { get; } Property Value FeedPerToothMachiningMotionResolution Fixture Gets or sets the fixture. [JsAce] public Fixture Fixture { get; set; } Property Value Fixture Global Global variables. [JsAce(\"Global[$1key]\")] public Dictionary Global { get; } Property Value Dictionary InitSpindleTemperature_C Gets or sets the initial spindle temperature in degrees Celsius. [JsAce(DocContentHtml = \"Spindle Temperature on initialization.\")] public double InitSpindleTemperature_C { get; set; } Property Value double JsAceCompletionProfileJsonArray Internal used. public static JsonArray JsAceCompletionProfileJsonArray { get; } Property Value JsonArray MachiningMotionResolution Gets or sets the machining motion resolution. [JsAce] public IMachiningMotionResolution MachiningMotionResolution { get; set; } Property Value IMachiningMotionResolution MachiningResolution Gets or sets the machining resolution in millimeters. [JsAce] [Obsolete(\"Use MachiningResolution_mm instead.\")] public double MachiningResolution { get; set; } Property Value double MachiningResolution_mm Gets or sets the machining resolution in millimeters. [JsAce] public double MachiningResolution_mm { get; set; } Property Value double MachiningSession public MachiningSession MachiningSession { get; } Property Value MachiningSession MapTask Task tracking the status of mapping operations. public Task MapTask { get; set; } Property Value Task MillingCycleDivisionNum Gets or sets the number of divisions per cycle for milling force calculation. This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used. [JsAce] public static int MillingCycleDivisionNum { get; set; } Property Value int MillingForceCycleDivisionNum Gets or sets the number of divisions per cycle for milling force calculation. This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used. [JsAce] [Obsolete(\"Use MillingCycleDivisionNum instead.\")] public static int MillingForceCycleDivisionNum { get; set; } Property Value int NcOptOption Gets or sets the NC optimization options. [JsAce] public NcOptOption NcOptOption { get; set; } Property Value NcOptOption OptEnableDepthCompensation Enables or disables depth compensation during optimization. [JsAce] public bool OptEnableDepthCompensation { get; set; } Property Value bool OptEnableFeedrate Gets or sets whether to enable feed rate optimization in NC optimization. [JsAce] public bool OptEnableFeedrate { get; set; } Property Value bool OptEnableForwardCompensation Enables or disables forward compensation during optimization. [JsAce] public bool OptEnableForwardCompensation { get; set; } Property Value bool OptEnableInterpolation Enables or disables reinterpolation for optimization. [JsAce] public bool OptEnableInterpolation { get; set; } Property Value bool OptEnableSideCompensation Enables or disables side compensation during optimization. [JsAce] public bool OptEnableSideCompensation { get; set; } Property Value bool OptExtendedPostDistance_mm Gets or sets the extended post-distance in millimeters for NC optimization. This is the distance after the current segment that will be considered for optimization. [JsAce] public double OptExtendedPostDistance_mm { get; set; } Property Value double OptExtendedPreDistance_mm Gets or sets the extended pre-distance in millimeters for NC optimization. This is the distance before the current segment that will be considered for optimization. [JsAce] public double OptExtendedPreDistance_mm { get; set; } Property Value double OptFeedrateAssignmentRatio Gets or sets the feedrate assignment ratio for optimization. If the feedrate change exceeds this ratio, the feedrate in the NC line will be updated. [JsAce] public double OptFeedrateAssignmentRatio { get; set; } Property Value double OptMaxAcceleration_mmds2 Maximum acceleration in mm/s² during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxAcceleration_mmds2 { get; set; } Property Value double OptMaxFeedPerTooth_mm Gets or sets the maximum feed per tooth in millimeters for optimization. [JsAce] public double OptMaxFeedPerTooth_mm { get; set; } Property Value double OptMaxFeedrate_mmdmin Maximum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMaxFeedrate_mmdmin { get; set; } Property Value double OptMaxJerk_mmds3 Maximum jerk in mm/s³ during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxJerk_mmds3 { get; set; } Property Value double OptMinFeedPerTooth_mm Gets or sets the minimum feed per tooth in millimeters for optimization. [JsAce] public double OptMinFeedPerTooth_mm { get; set; } Property Value double OptMinFeedrate_mmdmin Minimum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMinFeedrate_mmdmin { get; set; } Property Value double OptPreferedForce_N Preferred force in N for optimization. [JsAce] public double OptPreferedForce_N { get; set; } Property Value double OptRapidFeed_mmdmin Rapid feed rate in mm/min for non-cutting movements during optimization. [JsAce] public double OptRapidFeed_mmdmin { get; set; } Property Value double OptSpindlePowerSafetyFactor Safety factor for spindle power during optimization. [JsAce] public double OptSpindlePowerSafetyFactor { get; set; } Property Value double OptSpindlePowerUtilizationFactor Utilization factor for spindle power during optimization. It is the reciprocal of the spindle power safety factor. [JsAce] public double OptSpindlePowerUtilizationFactor { get; set; } Property Value double OptSpindleTorqueSafetyFactor Gets or sets the spindle torque safety factor for NC optimization. [JsAce] public double OptSpindleTorqueSafetyFactor { get; set; } Property Value double OptSpindleTorqueUtilizationFactor Utilization factor for spindle torque during optimization. It is the reciprocal of the spindle torque safety factor. [JsAce] public double OptSpindleTorqueUtilizationFactor { get; set; } Property Value double OptThermalYieldSafetyFactor Safety factor for spindle torque during optimization. [JsAce] public double OptThermalYieldSafetyFactor { get; set; } Property Value double OptThermalYieldUtilizationFactor Utilization factor for thermal yield during optimization. It is the reciprocal of the thermal yield safety factor. [JsAce] public double OptThermalYieldUtilizationFactor { get; set; } Property Value double OptYieldingSafetyFactor Safety factor for yielding during optimization. [JsAce] public double OptYieldingSafetyFactor { get; set; } Property Value double OptYieldingUtilizationFactor Utilization factor for yielding during optimization. It is the reciprocal of the yielding safety factor. [JsAce] public double OptYieldingUtilizationFactor { get; set; } Property Value double ScriptOptions ScriptOptions. public ScriptOptions ScriptOptions { get; set; } Property Value ScriptOptions SessionMessageHost Gets the session message host for displaying messages. [JsAce] public SessionMessageHost SessionMessageHost { get; } Property Value SessionMessageHost StepCount Gets the total number of milling steps. [JsAce] public int StepCount { get; } Property Value int Workpiece Gets or sets the workpiece. [JsAce] public Workpiece Workpiece { get; set; } Property Value Workpiece Methods AddTimeDataByFile(string, string, double, double) Adds time-based data from a file to the time mapping dictionary with specified time bounds in seconds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] public bool AddTimeDataByFile(string key, string relFile, double beginTime, double endTime) Parameters key string Key to identify the data relFile string Relative path to the data file beginTime double Beginning time in seconds endTime double Ending time in seconds Returns bool True if the data was successfully added, false otherwise AddTimeDataByFile(string, string, string, string) Adds time-based data from a file to the time mapping dictionary with specified time bounds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] public bool AddTimeDataByFile(string key, string relFile, string beginTimeText, string endTimeText) Parameters key string Key to identify the data relFile string Relative path to the data file beginTimeText string Beginning time as text (seconds or TimeSpan format) endTimeText string Ending time as text (seconds or TimeSpan format) Returns bool True if the data was successfully added, false otherwise AppendMessagesToFile(string, params string[]) Appends messages to a file, optionally filtered by tags. [JsAce(\"AppendMessagesToFile(\\\"dstRelFile\\\",flags)\")] public void AppendMessagesToFile(string dstRelFile, params string[] flags) Parameters dstRelFile string Destination relative file path flags string[] Optional flags to filter messages by tags BeginPreserve() Begin Preserve section in optimzation process. [JsAce(\"BeginPreserve()\")] public void BeginPreserve() BeginSelection(string, AnchorMode, IStepShift) Begin mark on current line. milling step() has not triggered yet. public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBegin, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the beginning of selection shift IStepShift Step shift to apply BeginSession() Begins a new machining session. Not for end user. public void BeginSession() ClearTimeMappingData() Clears all time mapping data. [JsAce] public void ClearTimeMappingData() Diff(double) Performs a difference analysis on the workpiece geometry to detect variations. [JsAce(\"Diff($1detectionRadius_mm)\")] public void Diff(double detectionRadius_mm) Parameters detectionRadius_mm double Radius for detecting differences EndPreserve() End Preserve section in optimzation process. [JsAce(\"EndPreserve()\")] public void EndPreserve() EndSelection(string, AnchorMode, IStepShift) End mark on current line for selection. public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the end of selection shift IStepShift Step shift to apply EndSession() Ends the current machining session. Not for end user. public void EndSession() ErrorMessage(string) Displays an error message in the message host. [JsAce(\"ErrorMessage($1message)\")] public void ErrorMessage(string message) Parameters message string The error message to display FixedPace(double, double) Creates a fixed machining motion resolution with specified parameters. [JsAce(\"FixedPace($1linearResolution_mm, $2rotaryResolution_deg)\")] public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters rotaryResolution_deg double Rotary resolution in degrees Returns FixedMachiningMotionResolution A new fixed machining motion resolution instance GetMillingStep(int) Retrieves a milling step at the specified index. [JsAce(Snippet = \"GetMillingStep($1\\\"stepIndex\\\")\")] public MachiningStep GetMillingStep(int stepIndex) Parameters stepIndex int Index of the milling step to retrieve Returns MachiningStep The milling step at the specified index GetStickMachiningToolObservationHeight_mm(int) Gets the observation height in millimeters for the specified stick machining tool. [JsAce(\"GetStickMachiningToolObservationHeight_mm($1toolId)\")] public double GetStickMachiningToolObservationHeight_mm(int toolId) Parameters toolId int The ID of the tool Returns double The observation height in millimeters GetUniformContourTrayShiftAngle_deg(int) Gets the shift angle in degrees for the uniform contour tray of the specified tool. [JsAce(\"GetUniformContourTrayShiftAngle_deg($1toolId)\")] public double GetUniformContourTrayShiftAngle_deg(int toolId) Parameters toolId int The ID of the tool Returns double The shift angle in degrees LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift) Create a line selection from begin to end mark. public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.LineBegin, IStepShift beginShift = null, AnchorMode endAnchorMode = AnchorMode.LineEnd, IStepShift endShift = null) Parameters key string Identifier key for the selection beginAnchorMode AnchorMode Mode for anchoring the beginning of selection beginShift IStepShift Step shift to apply at beginning endAnchorMode AnchorMode Mode for anchoring the end of selection endShift IStepShift Step shift to apply at end LoadCuttingParaByFile(string) Loads cutting parameters from a file. [JsAce(\"LoadCuttingParaByFile($1\\\"relFile\\\")\")] public void LoadCuttingParaByFile(string relFile) Parameters relFile string File path relative to BaseDirectory. Map(string, FileTimeSection, CycleSamplingMode?) Maps selection data to time section. public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShotUtil.CycleSamplingMode? cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters key string Identifier key for the selection fileTimeSection FileTimeSection File time section, or null to use the one associated with the key cycleSamplingMode StepTimeShotUtil.CycleSamplingMode? Cycle sampling mode Returns Task Task representing the asynchronous mapping operation MapByActualTime(string, CycleSamplingMode) Maps machining steps by actual time from a time shot file. [Obsolete] public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters timeShotRelFile string Relative path to the time shot file. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode. MapSeriesByCsvFile(string, CycleSamplingMode) Maps machining steps by actual time from a time shot csv file. [JsAce(\"MapSeriesByCsvFile($1timeShotRelFile)\")] public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters timeShotRelFile string Relative path to the time shot file. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode. MapSingleByCsvFile(string) Reads a CSV file and performs time-based interpolation to map data to milling steps. It is one (step) - one (embedded-data) mapping. [JsAce(Snippet = \"MapSingleByCsvFile($1\\\"csvFile\\\")\")] public void MapSingleByCsvFile(string csvFile) Parameters csvFile string Path to the CSV file relative to the base directory Message(string) Displays a message in the message host. [JsAce(\"Message($1message)\")] public void Message(string message) Parameters message string The message to display OptCallPreferFuncIndexDictionary() Gets the dictionary of preferred function index for NC optimization. [JsAce(\"OptCallPreferFuncIndexDictionary()\")] public Dictionary, double> OptCallPreferFuncIndexDictionary() Returns Dictionary, double> Dictionary mapping functions to their preference indexes. OptimizeToFiles(string) Optimizes NC files and saves results using the specified file template. [JsAce(Snippet = \"OptimizeToFiles(\\\"Output/Opt-[NcName]\\\")\", DocContentHtml = \"Optimize To Files by substitude template keywoard \\\"[NcName]\\\"\")] public void OptimizeToFiles(string relFileTemplate = \"Output/Opt-[NcName]\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder Pace() A pausable mark for the playing process. The function enables Pause() to take effect. [JsAce(\"Pace();\")] public void Pace() Remarks Waits for the player to signal the next pace. Pause() Pause Player [JsAce(DocContentHtml = \"Pause Player\")] public void Pause() PlayAct(IAct, IIndexedFileLine, CancellationToken?) Plays an act with pacing control. [JsAce] public void PlayAct(IAct act, IIndexedFileLine sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct The act to play. sourceCommand IIndexedFileLine The source command. cancellationToken CancellationToken? Cancellation token. PlayClTeleport(double, double, double, double, double, double) Plays a CL (cutter location) teleport operation. [JsAce] public void PlayClTeleport(double x, double y, double z, double i, double j, double k) Parameters x double X coordinate. y double Y coordinate. z double Z coordinate. i double I vector component. j double J vector component. k double K vector component. PlayCsvFile(string) Plays an Csv file with the specified relative path. [JsAce(\"PlayCsvFile($1\\\"csvFile\\\");\")] public void PlayCsvFile(string relFilePath) Parameters relFilePath string Relative path to the CSV file PlayNc(string, string) Plays NC code directly from a string, executing each action and pacing between them. [JsAce(Snippet = \"PlayNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Play NC. second parameter is the file name alternative shows in the log.\")] public void PlayNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs PlayNcFile(string) Plays an NC file with the specified relative path. [JsAce(\"PlayNcFile($1\\\"ncFile\\\");\")] public void PlayNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file PlayToolingTeleport(int) Plays a tooling teleport operation. [JsAce] public void PlayToolingTeleport(int toolId) Parameters toolId int The tool ID to teleport. Preserve() Preserve one line NC code in optimzation process. [JsAce(\"Preserve()\")] public void Preserve() ProgressMessage(string) Displays a progress message in the message host. [JsAce(\"ProgressMessage($1message)\")] public void ProgressMessage(string message) Parameters message string The progress message to display ReTrainMillingPara(SampleFlag, string, double) Re-trains milling parameters using the specified sample flag. [JsAce(\"ReTrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 0.1) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering ReadCsvByTimeInterpolation(string) Reads a CSV file and performs time-based interpolation to map data to milling steps. It is one (step) - one (embedded-data) mapping. [Obsolete] public void ReadCsvByTimeInterpolation(string csvFile) Parameters csvFile string Path to the CSV file relative to the base directory ReadRuntimeGeom(string) Reads runtime geometry from a file. [JsAce(\"ReadRuntimeGeom($1\\\"srcFile\\\")\")] public void ReadRuntimeGeom(string relFile) Parameters relFile string Relative path to the input file RegisterStepVariable(string, string, string, string, Func) Registers a step variable for tracking during execution. [JsAce(Snippet = \"RegisterStepVariable(\\\"$1key\\\",\\\"$2name\\\",\\\"$3unit\\\",\\\"$4formatString\\\",\\\"$5variableFunc\\\")\", DocContentHtml = \"

    Register Step Variable.

    \\\"unit\\\" is nullable

    \\\"formatString\\\" is nullable

    \")] public void RegisterStepVariable(string key, string name, string unit, string formatString, Func variableFunc = null) Parameters key string Unique key to identify the variable name string Human-readable name of the variable unit string Physical unit of the variable (can be null) formatString string Format string for displaying the variable (can be null) variableFunc Func Function to compute the variable value from a milling step (can be null) RemoveFlyPiece() Removes any disconnected or “flying” pieces from the workpiece geometry. [JsAce] public void RemoveFlyPiece() Reset() Reset Player [JsAce(DocContentHtml = \"Reset Player\")] public void Reset() ResetRuntime() Clears internal buffers. [JsAce] public void ResetRuntime() RunNc(string, string) Runs NC code directly from a string. Not for end user. [JsAce(Snippet = \"RunNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Run NC. second parameter is the file name alternative shows in the log.\")] public IEnumerable RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs Returns IEnumerable Enumerable sequence of actions to be executed RunNcFile(string) Runs an NC file with the specified relative path. Not for end user. [JsAce(\"RunNcFile($1\\\"ncFile\\\");\")] public IEnumerable RunNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file Returns IEnumerable Enumerable sequence of actions to be executed ScaledFeedPerCycle(double) Gets a new feed per cycle machining motion resolution instance with the specified scale. [JsAce(\"FeedPerCycle($1scale)\")] public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale) Parameters scale double The scale factor for the resolution. Returns FeedPerCycleMachiningMotionResolution A new FeedPerCycleMachiningMotionResolution instance with the specified scale. SetNcResolutionFeedPerCycle() Sets NC resolution to feed per cycle mode. public void SetNcResolutionFeedPerCycle() SetNcResolutionFeedPerTooth() Sets NC resolution to feed per tooth mode. public void SetNcResolutionFeedPerTooth() SetNcResolutionFixed(double, double) Sets NC resolution to fixed mode with specified resolution values. public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters. rotaryResolution_deg double Rotary resolution in degrees. SetStickMachiningToolObservationHeight_mm(int, double) Sets the observation height in millimeters for the specified stick machining tool. [JsAce(\"SetStickMachiningToolObservationHeight_mm($1toolId,$2height_mm)\")] public void SetStickMachiningToolObservationHeight_mm(int toolId, double height) Parameters toolId int The ID of the tool height double The observation height in millimeters to set SetUniformContourTrayShiftAngle_deg(int, double) Sets the shift angle in degrees for the uniform contour tray of the specified tool. [JsAce(\"SetUniformContourTrayShiftAngle_deg($1toolId,$2angle_deg)\")] public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg) Parameters toolId int The ID of the tool angle_deg double The shift angle in degrees to set ShiftDistance_mm(double) Creates a distance shift object representing the specified distance in millimeters. public DistanceShift ShiftDistance_mm(double distanceShift_mm) Parameters distanceShift_mm double Distance shift in millimeters Returns DistanceShift Distance shift object ShiftTime_s(double) Creates a time shift object representing the specified time in seconds. public TimeShift ShiftTime_s(double seconds) Parameters seconds double Time in seconds Returns TimeShift Time shift object TrainMillingPara(SampleFlag, string, double, ICuttingPara) Trains milling parameters using the specified sample flag. [JsAce(\"TrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 2, ICuttingPara paraTemplate = null) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering paraTemplate ICuttingPara Optional parameter template for cutting operations. WarningMessage(string) Displays a warning message in the message host. [JsAce(\"WarningMessage($1message)\")] public void WarningMessage(string message) Parameters message string The warning message to display WriteRuntimeGeom(string) Writes the current runtime geometry to a file. [JsAce(\"WriteRuntimeGeom($1\\\"dstFile\\\")\")] public void WriteRuntimeGeom(string relFile) Parameters relFile string Relative path to the output file WriteRuntimeGeomToStl(string, double) Writes the current runtime geometry to an STL file. [JsAce(\"WriteRuntimeGeomToStl($1\\\"dstFile\\\",$2resolution_mm)\")] public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0) Parameters relFile string Relative path to the output STL file resolution_mm double Resolution in millimeters (0 for default) WriteShotFiles(double, string) Writes time-series data to shot files with the specified resolution period (alternative parameter order). public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate) Parameters resolutionPeroid_ms double Resolution period in milliseconds relFileTemplate string Template for output file path, can include [NcName] placeholder WriteShotFiles(string, double) Writes time-series data to shot files with the specified resolution period. [JsAce(Snippet = \"WriteShotFiles(\\\"Output/[NcName].shot.csv\\\",resolutionPeroid_ms)\", DocContentHtml = \"Write time series data by resolutionPeroid_ms\")] public void WriteShotFiles(string relFileTemplate = \"Output/[NcName].shot.csv\", double resolutionPeroid_ms = 1) Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder resolutionPeroid_ms double Resolution period in milliseconds WriteStepFiles(string) Writes step-series data to files with the specified file template. [JsAce(Snippet = \"WriteStepFiles(\\\"Output/[NcName].step.csv\\\")\", DocContentHtml = \"Write step series data.\")] public void WriteStepFiles(string relFileTemplate = \"Output/[NcName].step.csv\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder Events MachiningStepBuilt Gets or sets the action to configure steps during execution. The event will be cleared by the calling of ResetRuntime(). [JsAce(Snippet = \"MachiningStepBuilt+=($1preStep,$2curStep)=>{$3Command};\", DocContentHtml = \"Runtime Step Configuration action. preStep is the Previous Milling Step; curStep is the Current Milling Step. preStep is null if no previous step existed.\")] public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate MachiningStepSelected Event that is triggered when a milling step is selected. The event will be cleared by the calling of ResetRuntime(). [JsAce(Snippet = \"MachiningStepSelected+=($1millingStep)=>{$2Command};\")] public event Action MachiningStepSelected Event Type Action" }, "api/Hi.MachiningProcs.RuntimeController.html": { "href": "api/Hi.MachiningProcs.RuntimeController.html", @@ -2052,7 +2052,7 @@ "api/Hi.Mapping.CsvNcStep.html": { "href": "api/Hi.Mapping.CsvNcStep.html", "title": "Class CsvNcStep | HiAPI-C# 2025", - "summary": "Class CsvNcStep Namespace Hi.Mapping Assembly HiMech.dll Represents a numerical control step loaded from a CSV file, with support for interpolation and arithmetic operations. public class CsvNcStep : IGetFileLineIndex, IAdditionOperators, IMultiplyOperators Inheritance object CsvNcStep Implements IGetFileLineIndex IAdditionOperators IMultiplyOperators Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsvNcStep(FileLineIndex, TimeSpan, DVec3d, List) Initializes a new instance of the CsvNcStep class with the specified parameters. public CsvNcStep(FileLineIndex fileLineIndex, TimeSpan time, DVec3d mcXyzabc, List doubleFlexList) Parameters fileLineIndex FileLineIndex The file and line index information. time TimeSpan The time value for this step. mcXyzabc DVec3d The machine coordinates for this step. doubleFlexList List The list of additional double values. Properties ActualTime Gets or sets the time value for this step. public TimeSpan ActualTime { get; set; } Property Value TimeSpan ActualTimeTag Gets or sets the column title for time in the CSV. public static string ActualTimeTag { get; set; } Property Value string DoubleFlexList Gets or sets the list of additional double values associated with this step. public List DoubleFlexList { get; set; } Property Value List FileLineIndex Gets or sets the file and line index information. public FileLineIndex FileLineIndex { get; set; } Property Value FileLineIndex FileNoTag Gets or sets the column title for file number in the CSV. public static string FileNoTag { get; set; } Property Value string LineNoTag Gets or sets the column title for line number in the CSV. public static string LineNoTag { get; set; } Property Value string McTag Gets or sets the column title for machine coordinates in the CSV. public static string McTag { get; set; } Property Value string McXyzabc Gets the machine coordinates (XYZ and ABC) for this step. public DVec3d McXyzabc { get; } Property Value DVec3d Methods GetFileLineIndex() Get FileLineIndex. public FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex MapSingleByCsvFile(ClStrip, string, string, IMessageHost) Embed single data per step by CSV file. It is one (step) - one (embedded-data) mapping. Time interpolation is applied. It is time-based mapping. Builds a collection of CsvNcStep instances from a CSV file. public static void MapSingleByCsvFile(ClStrip clStrip, string baseDirectory, string relFile, IMessageHost messageHost) Parameters clStrip ClStrip The cutter location strip to populate. baseDirectory string The base directory for the file path. relFile string The relative file path to the CSV file. messageHost IMessageHost The message host for logging. Operators operator +(CsvNcStep, CsvNcStep) Adds two CsvNcStep instances together. public static CsvNcStep operator +(CsvNcStep left, CsvNcStep right) Parameters left CsvNcStep The first CsvNcStep instance. right CsvNcStep The second CsvNcStep instance. Returns CsvNcStep A new CsvNcStep instance with values that are the sum of the two input instances. operator *(CsvNcStep, double) Multiplies a CsvNcStep instance by a scalar value. public static CsvNcStep operator *(CsvNcStep src, double scale) Parameters src CsvNcStep The CsvNcStep instance to multiply. scale double The scalar value to multiply by. Returns CsvNcStep A new CsvNcStep instance with values scaled by the specified factor." + "summary": "Class CsvNcStep Namespace Hi.Mapping Assembly HiMech.dll Represents a numerical control step loaded from a CSV file, with support for interpolation and arithmetic operations. public class CsvNcStep : IGetFileLineIndex, IAdditionOperators, IMultiplyOperators Inheritance object CsvNcStep Implements IGetFileLineIndex IAdditionOperators IMultiplyOperators Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsvNcStep(FileLineIndex, TimeSpan, DVec3d, List) Initializes a new instance of the CsvNcStep class with the specified parameters. public CsvNcStep(FileLineIndex fileLineIndex, TimeSpan time, DVec3d mcXyzabc, List doubleFlexList) Parameters fileLineIndex FileLineIndex The file and line index information. time TimeSpan The time value for this step. mcXyzabc DVec3d The machine coordinates for this step. doubleFlexList List The list of additional double values. Properties ActualTime Gets or sets the time value for this step. public TimeSpan ActualTime { get; set; } Property Value TimeSpan DoubleFlexList Gets or sets the list of additional double values associated with this step. public List DoubleFlexList { get; set; } Property Value List FileLineIndex Gets or sets the file and line index information. public FileLineIndex FileLineIndex { get; set; } Property Value FileLineIndex McXyzabc Gets the machine coordinates (XYZ and ABC) for this step. public DVec3d McXyzabc { get; } Property Value DVec3d Methods GetFileLineIndex() Get FileLineIndex. public FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex MapSingleByCsvFile(ClStrip, string, string, IMessageHost) Embed single data per step by CSV file. It is one (step) - one (embedded-data) mapping. Time interpolation is applied. It is time-based mapping. Builds a collection of CsvNcStep instances from a CSV file. public static void MapSingleByCsvFile(ClStrip clStrip, string baseDirectory, string relFile, IMessageHost messageHost) Parameters clStrip ClStrip The cutter location strip to populate. baseDirectory string The base directory for the file path. relFile string The relative file path to the CSV file. messageHost IMessageHost The message host for logging. Operators operator +(CsvNcStep, CsvNcStep) Adds two CsvNcStep instances together. public static CsvNcStep operator +(CsvNcStep left, CsvNcStep right) Parameters left CsvNcStep The first CsvNcStep instance. right CsvNcStep The second CsvNcStep instance. Returns CsvNcStep A new CsvNcStep instance with values that are the sum of the two input instances. operator *(CsvNcStep, double) Multiplies a CsvNcStep instance by a scalar value. public static CsvNcStep operator *(CsvNcStep src, double scale) Parameters src CsvNcStep The CsvNcStep instance to multiply. scale double The scalar value to multiply by. Returns CsvNcStep A new CsvNcStep instance with values scaled by the specified factor." }, "api/Hi.Mapping.FileToTimeShotMapping.html": { "href": "api/Hi.Mapping.FileToTimeShotMapping.html", @@ -2079,6 +2079,11 @@ "title": "Interface ITimeShot | HiAPI-C# 2025", "summary": "Interface ITimeShot Namespace Hi.Mapping Assembly HiMech.dll Interface for objects that represent a snapshot of data at a specific time and support arithmetic operations. This interface provides a foundation for time-series data with vector operations. public interface ITimeShot : ITimeGetter Inherited Members ITimeGetter.Time Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Implementations of this interface should: Store data associated with a specific time point Support addition with other time shots Support scaling by a scalar value Handle null or invalid data appropriately Methods GetAdd(ITimeShot) Adds another time shot to this one. ITimeShot GetAdd(ITimeShot shot) Parameters shot ITimeShot The time shot to add. Returns ITimeShot A new time shot representing the sum of the two shots. Remarks The addition should: Combine vector components appropriately Handle null or missing data gracefully Preserve the time value according to implementation rules GetScaled(double) Scales the values in this time shot by the specified factor. ITimeShot GetScaled(double scale) Parameters scale double The scaling factor to apply to all vector components. Returns ITimeShot A new time shot with all values scaled by the given factor. Remarks The scaling should: Apply to all vector components Handle null or missing data gracefully Scale the time value if appropriate for the implementation" }, + "api/Hi.Mapping.MappingUtil.html": { + "href": "api/Hi.Mapping.MappingUtil.html", + "title": "Class MappingUtil | HiAPI-C# 2025", + "summary": "Class MappingUtil Namespace Hi.Mapping Assembly HiMech.dll public static class MappingUtil Inheritance object MappingUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields ActualTimeTag Gets or sets the column title for actual time in the CSV. The actual time basically obtained by the external data from controller. public const string ActualTimeTag = \"ActualTime\" Field Value string CutterLocationPrefix Cutter Location Prefix Tag for CSV Parsing. public const string CutterLocationPrefix = \"CL.\" Field Value string DurationTag Duration tag for CSV parsing. public const string DurationTag = \"StepDuration\" Field Value string FeedrateTag_mmdmin Feedrate for Simulator Tag for CSV Parsing. public const string FeedrateTag_mmdmin = \"Feedrate_mmdmin\" Field Value string FileNoTag Gets or sets the column title for file number in the CSV. public const string FileNoTag = \"FileNo\" Field Value string HolderMomentPrefix public const string HolderMomentPrefix = \"Holder.M\" Field Value string LineBeginCsScriptTag LineBeginCsScript Tag for CSV Parsing. public const string LineBeginCsScriptTag = \"LineBeginCsScript\" Field Value string LineEndCsScriptTag LineEndCsScript Tag for CSV Parsing. public const string LineEndCsScriptTag = \"LineEndCsScript\" Field Value string LineNoTag Gets or sets the column title for line number in the CSV. public const string LineNoTag = \"LineNo\" Field Value string MachineCoordinatePrefix Machine Coordinate Prefix Tag for CSV Parsing. public const string MachineCoordinatePrefix = \"MC.\" Field Value string SpindleDirectionTag Spindle direction Tag for CSV Parsing. public const string SpindleDirectionTag = \"Spd.Dir.\" Field Value string SpindleSpeedTag_rpm Spindle speed for Simulator Tag for CSV Parsing. public const string SpindleSpeedTag_rpm = \"SpindleSpeed_rpm\" Field Value string TimeTag Gets or sets the column title for time in the CSV. The time generally obtained by the simulated data. public const string TimeTag = \"Time\" Field Value string ToolForcePrefix public const string ToolForcePrefix = \"Tool.F\" Field Value string ToolIdTag Tool ID Tag for CSV Parsing. public const string ToolIdTag = \"ToolId\" Field Value string WorkpieceForcePrefix public const string WorkpieceForcePrefix = \"Workpiece.F\" Field Value string" + }, "api/Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html": { "href": "api/Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html", "title": "Enum StepTimeShotUtil.CycleSamplingMode | HiAPI-C# 2025", @@ -2102,7 +2107,7 @@ "api/Hi.Mapping.html": { "href": "api/Hi.Mapping.html", "title": "Namespace Hi.Mapping | HiAPI-C# 2025", - "summary": "Namespace Hi.Mapping Classes CsvNcStep Represents a numerical control step loaded from a CSV file, with support for interpolation and arithmetic operations. FileToTimeShotMapping Provides mapping between files and time shot data with caching capabilities. This class manages the loading and caching of time shot data from measurement files. StepTimeShotUtil Utility methods for working with time-based shots (measurements) and mapping them to machining steps. TimeMapping Provides mapping between machining steps and time-based measurements (shots). It is one step to many data mapping (one-many). Interfaces IAccelerationShot Interface for objects that represent acceleration measurements at a specific time point. Extends the ITimeShot interface to include acceleration data in multiple units. IForceShot Interface for objects that represent force measurements at a specific time point. Extends the ITimeShot interface to include force vector data. IMomentShot Interface for objects that represent moment (torque) measurements at a specific time point. Extends the ITimeShot interface to include moment vector data. ITimeShot Interface for objects that represent a snapshot of data at a specific time and support arithmetic operations. This interface provides a foundation for time-series data with vector operations. Enums StepTimeShotUtil.CycleSamplingMode Defines the cycle sampling modes for mapping time shots to machining steps. The sampling mode determines how time shots are aligned with machining cycles. Delegates StepTimeShotUtil.GetTimeShotByFileDelegate Delegate for retrieving time shots from a file. Implementations should handle file reading, parsing, and error handling." + "summary": "Namespace Hi.Mapping Classes CsvNcStep Represents a numerical control step loaded from a CSV file, with support for interpolation and arithmetic operations. FileToTimeShotMapping Provides mapping between files and time shot data with caching capabilities. This class manages the loading and caching of time shot data from measurement files. MappingUtil StepTimeShotUtil Utility methods for working with time-based shots (measurements) and mapping them to machining steps. TimeMapping Provides mapping between machining steps and time-based measurements (shots). It is one step to many data mapping (one-many). Interfaces IAccelerationShot Interface for objects that represent acceleration measurements at a specific time point. Extends the ITimeShot interface to include acceleration data in multiple units. IForceShot Interface for objects that represent force measurements at a specific time point. Extends the ITimeShot interface to include force vector data. IMomentShot Interface for objects that represent moment (torque) measurements at a specific time point. Extends the ITimeShot interface to include moment vector data. ITimeShot Interface for objects that represent a snapshot of data at a specific time and support arithmetic operations. This interface provides a foundation for time-series data with vector operations. Enums StepTimeShotUtil.CycleSamplingMode Defines the cycle sampling modes for mapping time shots to machining steps. The sampling mode determines how time shots are aligned with machining cycles. Delegates StepTimeShotUtil.GetTimeShotByFileDelegate Delegate for retrieving time shots from a file. Implementations should handle file reading, parsing, and error handling." }, "api/Hi.Mappings.FileTimeSection.TimeOption.html": { "href": "api/Hi.Mappings.FileTimeSection.TimeOption.html", @@ -3637,7 +3642,7 @@ "api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html": { "href": "api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html", "title": "Class CsvRunnerConfig | HiAPI-C# 2025", - "summary": "Class CsvRunnerConfig Namespace Hi.Numerical.FilePlayers Assembly HiNc.dll Configuration class for CSV Runner. public class CsvRunnerConfig : IMakeXmlSource Inheritance object CsvRunnerConfig Implements IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsvRunnerConfig() Default constructor. public CsvRunnerConfig() CsvRunnerConfig(XElement) Constructor from XML. public CsvRunnerConfig(XElement src) Parameters src XElement XML element Properties ActualTimeTag Actual time tag for CSV parsing. public string ActualTimeTag { get; set; } Property Value string CutterLocationPrefixTag Cutter Location Prefix Tag for CSV Parsing. public string CutterLocationPrefixTag { get; set; } Property Value string DurationTag Duration tag for CSV parsing. public string DurationTag { get; set; } Property Value string FeedrateTag_mmdmin Feedrate for Simulator Tag for CSV Parsing. public string FeedrateTag_mmdmin { get; set; } Property Value string LineBeginCsScriptTag LineBeginCsScript Tag for CSV Parsing. public string LineBeginCsScriptTag { get; set; } Property Value string LineEndCsScriptTag LineEndCsScript Tag for CSV Parsing. public string LineEndCsScriptTag { get; set; } Property Value string MachineCoordinatePrefixTag Machine Coordinate Prefix Tag for CSV Parsing. public string MachineCoordinatePrefixTag { get; set; } Property Value string ParsingDictionary Parsing dictionary for custom field parsing. Note: This dictionary cannot be serialized to XML as it contains functions. public Dictionary> ParsingDictionary { get; set; } Property Value Dictionary> SpindleDirectionTag Spindle direction Tag for CSV Parsing. public string SpindleDirectionTag { get; set; } Property Value string SpindleSpeedTag_rpm Spindle speed for Simulator Tag for CSV Parsing. public string SpindleSpeedTag_rpm { get; set; } Property Value string ToolIdTag Tool ID Tag for CSV Parsing. public string ToolIdTag { get; set; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class CsvRunnerConfig Namespace Hi.Numerical.FilePlayers Assembly HiNc.dll Configuration class for CSV Runner. public class CsvRunnerConfig : IMakeXmlSource Inheritance object CsvRunnerConfig Implements IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsvRunnerConfig() Default constructor. public CsvRunnerConfig() CsvRunnerConfig(XElement) Constructor from XML. public CsvRunnerConfig(XElement src) Parameters src XElement XML element Properties ActualTimeTag Actual time tag for CSV parsing. public string ActualTimeTag { get; set; } Property Value string CutterLocationPrefix Cutter Location Prefix Tag for CSV Parsing. public string CutterLocationPrefix { get; set; } Property Value string DurationTag Duration tag for CSV parsing. public string DurationTag { get; set; } Property Value string FeedrateTag_mmdmin Feedrate for Simulator Tag for CSV Parsing. public string FeedrateTag_mmdmin { get; set; } Property Value string LineBeginCsScriptTag LineBeginCsScript Tag for CSV Parsing. public string LineBeginCsScriptTag { get; set; } Property Value string LineEndCsScriptTag LineEndCsScript Tag for CSV Parsing. public string LineEndCsScriptTag { get; set; } Property Value string MachineCoordinatePrefix Machine Coordinate Prefix Tag for CSV Parsing. public string MachineCoordinatePrefix { get; set; } Property Value string ParsingDictionary Parsing dictionary for custom field parsing. Note: This dictionary cannot be serialized to XML as it contains functions. public Dictionary> ParsingDictionary { get; set; } Property Value Dictionary> SpindleDirectionTag Spindle direction Tag for CSV Parsing. public string SpindleDirectionTag { get; set; } Property Value string SpindleSpeedTag_rpm Spindle speed for Simulator Tag for CSV Parsing. public string SpindleSpeedTag_rpm { get; set; } Property Value string ToolIdTag Tool ID Tag for CSV Parsing. public string ToolIdTag { get; set; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.Numerical.FilePlayers.IControlRunner.html": { "href": "api/Hi.Numerical.FilePlayers.IControlRunner.html", @@ -4222,7 +4227,7 @@ "api/Hi.Parallels.DistributedQueueTaskStarter.html": { "href": "api/Hi.Parallels.DistributedQueueTaskStarter.html", "title": "Class DistributedQueueTaskStarter | HiAPI-C# 2025", - "summary": "Class DistributedQueueTaskStarter Namespace Hi.Parallels Assembly HiGeom.dll A class that manages and starts a collection of actions in parallel. public class DistributedQueueTaskStarter Inheritance object DistributedQueueTaskStarter Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors DistributedQueueTaskStarter(int) Initializes a new instance of the DistributedQueueTaskStarter class. public DistributedQueueTaskStarter(int maxWorkingTaskNum = 0) Parameters maxWorkingTaskNum int The maximum number of tasks that can be executed simultaneously. If 0, uses the processor count. Properties IdleTaskNum Gets the number of idle tasks (capacity minus current count). public int IdleTaskNum { get; } Property Value int ThreadPriority public ThreadPriority ThreadPriority { get; set; } Property Value ThreadPriority Methods Start() Starts executing all actions in parallel. public Task Start() Returns Task A task representing the asynchronous operation." + "summary": "Class DistributedQueueTaskStarter Namespace Hi.Parallels Assembly HiGeom.dll A class that manages and starts a collection of actions in parallel. public class DistributedQueueTaskStarter Inheritance object DistributedQueueTaskStarter Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors DistributedQueueTaskStarter(int) Initializes a new instance of the DistributedQueueTaskStarter class. public DistributedQueueTaskStarter(int maxWorkingTaskNum = 0) Parameters maxWorkingTaskNum int The maximum number of tasks that can be executed simultaneously. If 0, uses the processor count. Properties IdleTaskNum Gets the number of idle tasks (capacity minus current count). public int IdleTaskNum { get; } Property Value int ThreadPriority Gets or sets the thread priority for executing tasks. Default is BelowNormal. public ThreadPriority ThreadPriority { get; set; } Property Value ThreadPriority Methods Start() Starts executing all actions in parallel. public Task Start() Returns Task A task representing the asynchronous operation." }, "api/Hi.Parallels.LockUtil.html": { "href": "api/Hi.Parallels.LockUtil.html", @@ -4582,12 +4587,12 @@ "api/Hi.WinForm.Disp.RenderingCanvas.html": { "href": "api/Hi.WinForm.Disp.RenderingCanvas.html", "title": "Class RenderingCanvas | HiAPI-C# 2025", - "summary": "Class RenderingCanvas Namespace Hi.WinForm.Disp Assembly Hi.WinForm.dll Window Form Displayer. public class RenderingCanvas : UserControl, IDropTarget, ISynchronizeInvoke, IWin32Window, IBindableComponent, IComponent, IDisposable, IContainerControl Inheritance object MarshalByRefObject Component Control ScrollableControl ContainerControl UserControl RenderingCanvas Implements IDropTarget ISynchronizeInvoke IWin32Window IBindableComponent IComponent IDisposable IContainerControl Inherited Members UserControl.ValidateChildren() UserControl.ValidateChildren(ValidationConstraints) UserControl.OnCreateControl() UserControl.OnLoad(EventArgs) UserControl.OnResize(EventArgs) UserControl.OnMouseDown(MouseEventArgs) UserControl.AutoSize UserControl.AutoSizeMode UserControl.AutoValidate UserControl.BorderStyle UserControl.CreateParams UserControl.DefaultSize UserControl.AutoSizeChanged UserControl.AutoValidateChanged UserControl.Load ContainerControl.AdjustFormScrollbars(bool) ContainerControl.OnAutoValidateChanged(EventArgs) ContainerControl.OnFontChanged(EventArgs) ContainerControl.OnLayout(LayoutEventArgs) ContainerControl.OnMove(EventArgs) ContainerControl.OnParentChanged(EventArgs) ContainerControl.PerformAutoScale() ContainerControl.ScaleMinMaxSize(float, float, bool) ContainerControl.ProcessDialogChar(char) ContainerControl.ProcessDialogKey(Keys) ContainerControl.ProcessCmdKey(ref Message, Keys) ContainerControl.ProcessMnemonic(char) ContainerControl.ProcessTabKey(bool) ContainerControl.RescaleConstantsForDpi(int, int) ContainerControl.Select(bool, bool) ContainerControl.UpdateDefaultButton() ContainerControl.Validate() ContainerControl.Validate(bool) ContainerControl.AutoScaleDimensions ContainerControl.AutoScaleFactor ContainerControl.AutoScaleMode ContainerControl.BindingContext ContainerControl.CanEnableIme ContainerControl.ActiveControl ContainerControl.CurrentAutoScaleDimensions ContainerControl.ParentForm ScrollableControl.ScrollStateAutoScrolling ScrollableControl.ScrollStateHScrollVisible ScrollableControl.ScrollStateVScrollVisible ScrollableControl.ScrollStateUserHasScrolled ScrollableControl.ScrollStateFullDrag ScrollableControl.GetScrollState(int) ScrollableControl.OnMouseWheel(MouseEventArgs) ScrollableControl.OnRightToLeftChanged(EventArgs) ScrollableControl.OnPaintBackground(PaintEventArgs) ScrollableControl.OnPaddingChanged(EventArgs) ScrollableControl.OnVisibleChanged(EventArgs) ScrollableControl.ScaleControl(SizeF, BoundsSpecified) ScrollableControl.SetDisplayRectLocation(int, int) ScrollableControl.ScrollControlIntoView(Control) ScrollableControl.ScrollToControl(Control) ScrollableControl.OnScroll(ScrollEventArgs) ScrollableControl.SetAutoScrollMargin(int, int) ScrollableControl.SetScrollState(int, bool) ScrollableControl.AutoScroll ScrollableControl.AutoScrollMargin ScrollableControl.AutoScrollPosition ScrollableControl.AutoScrollMinSize ScrollableControl.DisplayRectangle ScrollableControl.HScroll ScrollableControl.HorizontalScroll ScrollableControl.VScroll ScrollableControl.VerticalScroll ScrollableControl.Scroll Control.GetAccessibilityObjectById(int) Control.SetAutoSizeMode(AutoSizeMode) Control.GetAutoSizeMode() Control.GetPreferredSize(Size) Control.AccessibilityNotifyClients(AccessibleEvents, int) Control.AccessibilityNotifyClients(AccessibleEvents, int, int) Control.BeginInvoke(Delegate) Control.BeginInvoke(Action) Control.BeginInvoke(Delegate, params object[]) Control.BringToFront() Control.Contains(Control) Control.CreateAccessibilityInstance() Control.CreateControlsInstance() Control.CreateGraphics() Control.CreateHandle() Control.CreateControl() Control.DefWndProc(ref Message) Control.DestroyHandle() Control.DoDragDropAsJson(T, DragDropEffects) Control.DoDragDropAsJson(T, DragDropEffects, Bitmap, Point, bool) Control.DoDragDrop(object, DragDropEffects) Control.DoDragDrop(object, DragDropEffects, Bitmap, Point, bool) Control.DrawToBitmap(Bitmap, Rectangle) Control.EndInvoke(IAsyncResult) Control.FindForm() Control.GetTopLevel() Control.RaiseKeyEvent(object, KeyEventArgs) Control.RaiseMouseEvent(object, MouseEventArgs) Control.Focus() Control.FromChildHandle(nint) Control.FromHandle(nint) Control.GetChildAtPoint(Point, GetChildAtPointSkip) Control.GetChildAtPoint(Point) Control.GetContainerControl() Control.GetScaledBounds(Rectangle, SizeF, BoundsSpecified) Control.GetNextControl(Control, bool) Control.GetStyle(ControlStyles) Control.Hide() Control.InitLayout() Control.Invalidate(Region) Control.Invalidate(Region, bool) Control.Invalidate() Control.Invalidate(bool) Control.Invalidate(Rectangle) Control.Invalidate(Rectangle, bool) Control.Invoke(Action) Control.Invoke(Delegate) Control.Invoke(Delegate, params object[]) Control.Invoke(Func) Control.InvokePaint(Control, PaintEventArgs) Control.InvokePaintBackground(Control, PaintEventArgs) Control.IsKeyLocked(Keys) Control.IsInputChar(char) Control.IsMnemonic(char, string) Control.LogicalToDeviceUnits(int) Control.LogicalToDeviceUnits(Size) Control.ScaleBitmapLogicalToDevice(ref Bitmap) Control.NotifyInvalidate(Rectangle) Control.InvokeOnClick(Control, EventArgs) Control.OnAutoSizeChanged(EventArgs) Control.OnBackColorChanged(EventArgs) Control.OnBackgroundImageChanged(EventArgs) Control.OnBackgroundImageLayoutChanged(EventArgs) Control.OnBindingContextChanged(EventArgs) Control.OnCausesValidationChanged(EventArgs) Control.OnContextMenuStripChanged(EventArgs) Control.OnCursorChanged(EventArgs) Control.OnDataContextChanged(EventArgs) Control.OnDockChanged(EventArgs) Control.OnEnabledChanged(EventArgs) Control.OnForeColorChanged(EventArgs) Control.OnNotifyMessage(Message) Control.OnParentBackColorChanged(EventArgs) Control.OnParentBackgroundImageChanged(EventArgs) Control.OnParentBindingContextChanged(EventArgs) Control.OnParentCursorChanged(EventArgs) Control.OnParentDataContextChanged(EventArgs) Control.OnParentEnabledChanged(EventArgs) Control.OnParentFontChanged(EventArgs) Control.OnParentForeColorChanged(EventArgs) Control.OnParentRightToLeftChanged(EventArgs) Control.OnParentVisibleChanged(EventArgs) Control.OnPrint(PaintEventArgs) Control.OnTabIndexChanged(EventArgs) Control.OnTabStopChanged(EventArgs) Control.OnTextChanged(EventArgs) Control.OnClick(EventArgs) Control.OnClientSizeChanged(EventArgs) Control.OnControlAdded(ControlEventArgs) Control.OnControlRemoved(ControlEventArgs) Control.OnHandleCreated(EventArgs) Control.OnLocationChanged(EventArgs) Control.OnHandleDestroyed(EventArgs) Control.OnDoubleClick(EventArgs) Control.OnDragEnter(DragEventArgs) Control.OnDragOver(DragEventArgs) Control.OnDragLeave(EventArgs) Control.OnDragDrop(DragEventArgs) Control.OnGiveFeedback(GiveFeedbackEventArgs) Control.OnEnter(EventArgs) Control.InvokeGotFocus(Control, EventArgs) Control.OnGotFocus(EventArgs) Control.OnHelpRequested(HelpEventArgs) Control.OnInvalidated(InvalidateEventArgs) Control.OnKeyDown(KeyEventArgs) Control.OnKeyPress(KeyPressEventArgs) Control.OnKeyUp(KeyEventArgs) Control.OnLeave(EventArgs) Control.InvokeLostFocus(Control, EventArgs) Control.OnLostFocus(EventArgs) Control.OnMarginChanged(EventArgs) Control.OnMouseDoubleClick(MouseEventArgs) Control.OnMouseClick(MouseEventArgs) Control.OnMouseCaptureChanged(EventArgs) Control.OnMouseEnter(EventArgs) Control.OnMouseLeave(EventArgs) Control.OnDpiChangedBeforeParent(EventArgs) Control.OnDpiChangedAfterParent(EventArgs) Control.OnMouseHover(EventArgs) Control.OnMouseMove(MouseEventArgs) Control.OnMouseUp(MouseEventArgs) Control.OnPaint(PaintEventArgs) Control.OnQueryContinueDrag(QueryContinueDragEventArgs) Control.OnRegionChanged(EventArgs) Control.OnPreviewKeyDown(PreviewKeyDownEventArgs) Control.OnSizeChanged(EventArgs) Control.OnChangeUICues(UICuesEventArgs) Control.OnStyleChanged(EventArgs) Control.OnSystemColorsChanged(EventArgs) Control.OnValidating(CancelEventArgs) Control.OnValidated(EventArgs) Control.PerformLayout() Control.PerformLayout(Control, string) Control.PointToClient(Point) Control.PointToScreen(Point) Control.PreProcessMessage(ref Message) Control.PreProcessControlMessage(ref Message) Control.ProcessKeyEventArgs(ref Message) Control.ProcessKeyMessage(ref Message) Control.ProcessKeyPreview(ref Message) Control.RaiseDragEvent(object, DragEventArgs) Control.RaisePaintEvent(object, PaintEventArgs) Control.RecreateHandle() Control.RectangleToClient(Rectangle) Control.RectangleToScreen(Rectangle) Control.ReflectMessage(nint, ref Message) Control.Refresh() Control.ResetMouseEventArgs() Control.ResetText() Control.ResumeLayout() Control.ResumeLayout(bool) Control.Scale(SizeF) Control.Select() Control.SelectNextControl(Control, bool, bool, bool, bool) Control.SendToBack() Control.SetBounds(int, int, int, int) Control.SetBounds(int, int, int, int, BoundsSpecified) Control.SetBoundsCore(int, int, int, int, BoundsSpecified) Control.SetClientSizeCore(int, int) Control.SizeFromClientSize(Size) Control.SetStyle(ControlStyles, bool) Control.SetTopLevel(bool) Control.SetVisibleCore(bool) Control.RtlTranslateAlignment(HorizontalAlignment) Control.RtlTranslateAlignment(LeftRightAlignment) Control.RtlTranslateAlignment(ContentAlignment) Control.RtlTranslateHorizontal(HorizontalAlignment) Control.RtlTranslateLeftRight(LeftRightAlignment) Control.RtlTranslateContent(ContentAlignment) Control.Show() Control.SuspendLayout() Control.Update() Control.UpdateBounds() Control.UpdateBounds(int, int, int, int) Control.UpdateBounds(int, int, int, int, int, int) Control.UpdateZOrder() Control.UpdateStyles() Control.OnImeModeChanged(EventArgs) Control.InvokeAsync(Action, CancellationToken) Control.InvokeAsync(Func, CancellationToken) Control.InvokeAsync(Func, CancellationToken) Control.InvokeAsync(Func>, CancellationToken) Control.AccessibilityObject Control.AccessibleDefaultActionDescription Control.AccessibleDescription Control.AccessibleName Control.AccessibleRole Control.AllowDrop Control.Anchor Control.AutoScrollOffset Control.LayoutEngine Control.DataContext Control.BackColor Control.BackgroundImage Control.BackgroundImageLayout Control.Bottom Control.Bounds Control.CanFocus Control.CanRaiseEvents Control.CanSelect Control.Capture Control.CausesValidation Control.CheckForIllegalCrossThreadCalls Control.ClientRectangle Control.ClientSize Control.CompanyName Control.ContainsFocus Control.ContextMenuStrip Control.Controls Control.Created Control.Cursor Control.DataBindings Control.DefaultBackColor Control.DefaultCursor Control.DefaultFont Control.DefaultForeColor Control.DefaultMargin Control.DefaultMaximumSize Control.DefaultMinimumSize Control.DefaultPadding Control.DeviceDpi Control.IsDisposed Control.Disposing Control.Dock Control.DoubleBuffered Control.Enabled Control.Focused Control.Font Control.FontHeight Control.ForeColor Control.Handle Control.HasChildren Control.Height Control.IsHandleCreated Control.InvokeRequired Control.IsAccessible Control.IsAncestorSiteInDesignMode Control.IsMirrored Control.Left Control.Location Control.Margin Control.MaximumSize Control.MinimumSize Control.ModifierKeys Control.MouseButtons Control.MousePosition Control.Name Control.Parent Control.ProductName Control.ProductVersion Control.RecreatingHandle Control.Region Control.RenderRightToLeft Control.ResizeRedraw Control.Right Control.RightToLeft Control.ScaleChildren Control.Site Control.Size Control.TabIndex Control.TabStop Control.Tag Control.Text Control.Top Control.TopLevelControl Control.ShowKeyboardCues Control.ShowFocusCues Control.UseWaitCursor Control.Visible Control.Width Control.PreferredSize Control.Padding Control.DefaultImeMode Control.ImeMode Control.ImeModeBase Control.PropagatingImeMode Control.BackColorChanged Control.BackgroundImageChanged Control.BackgroundImageLayoutChanged Control.BindingContextChanged Control.CausesValidationChanged Control.ClientSizeChanged Control.ContextMenuStripChanged Control.CursorChanged Control.DockChanged Control.EnabledChanged Control.FontChanged Control.ForeColorChanged Control.LocationChanged Control.MarginChanged Control.RegionChanged Control.RightToLeftChanged Control.SizeChanged Control.TabIndexChanged Control.TabStopChanged Control.TextChanged Control.VisibleChanged Control.Click Control.ControlAdded Control.ControlRemoved Control.DataContextChanged Control.DragDrop Control.DragEnter Control.DragOver Control.DragLeave Control.GiveFeedback Control.HandleCreated Control.HandleDestroyed Control.HelpRequested Control.Invalidated Control.PaddingChanged Control.Paint Control.QueryContinueDrag Control.QueryAccessibilityHelp Control.DoubleClick Control.Enter Control.GotFocus Control.KeyDown Control.KeyPress Control.KeyUp Control.Layout Control.Leave Control.LostFocus Control.MouseClick Control.MouseDoubleClick Control.MouseCaptureChanged Control.MouseDown Control.MouseEnter Control.MouseLeave Control.DpiChangedBeforeParent Control.DpiChangedAfterParent Control.MouseHover Control.MouseMove Control.MouseUp Control.MouseWheel Control.Move Control.PreviewKeyDown Control.Resize Control.ChangeUICues Control.StyleChanged Control.SystemColorsChanged Control.Validating Control.Validated Control.ParentChanged Control.ImeModeChanged Component.Dispose() Component.GetService(Type) Component.ToString() Component.Container Component.DesignMode Component.Events Component.Disposed MarshalByRefObject.GetLifetimeService() MarshalByRefObject.InitializeLifetimeService() MarshalByRefObject.MemberwiseClone(bool) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors RenderingCanvas(params IDisplayee[]) Ctor. public RenderingCanvas(params IDisplayee[] displayees) Parameters displayees IDisplayee[] displayees Properties DispEngine DispEngine. public DispEngine DispEngine { get; } Property Value DispEngine Methods Dispose(bool) Clean up any resources being used. protected override void Dispose(bool disposing) Parameters disposing bool true if managed resources should be disposed; otherwise, false. IsInputKey(Keys) Determines whether the specified key is a regular input key or a special key that requires preprocessing. protected override bool IsInputKey(Keys keyData) Parameters keyData Keys One of the Keys values. Returns bool true if the specified key is a regular input key; otherwise, false. WndProc(ref Message) Processes Windows messages. protected override void WndProc(ref Message m) Parameters m Message The Windows Message to process." + "summary": "Class RenderingCanvas Namespace Hi.WinForm.Disp Assembly Hi.WinForm.dll Window Form Displayer. public class RenderingCanvas : UserControl, IDropTarget, ISynchronizeInvoke, IWin32Window, IBindableComponent, IComponent, IDisposable, IContainerControl Inheritance object MarshalByRefObject Component Control ScrollableControl ContainerControl UserControl RenderingCanvas Implements IDropTarget ISynchronizeInvoke IWin32Window IBindableComponent IComponent IDisposable IContainerControl Inherited Members UserControl.ValidateChildren() UserControl.ValidateChildren(ValidationConstraints) UserControl.OnCreateControl() UserControl.OnLoad(EventArgs) UserControl.OnResize(EventArgs) UserControl.OnMouseDown(MouseEventArgs) UserControl.AutoSize UserControl.AutoSizeMode UserControl.AutoValidate UserControl.BorderStyle UserControl.CreateParams UserControl.DefaultSize UserControl.AutoSizeChanged UserControl.AutoValidateChanged UserControl.Load ContainerControl.AdjustFormScrollbars(bool) ContainerControl.OnAutoValidateChanged(EventArgs) ContainerControl.OnFontChanged(EventArgs) ContainerControl.OnLayout(LayoutEventArgs) ContainerControl.OnMove(EventArgs) ContainerControl.OnParentChanged(EventArgs) ContainerControl.PerformAutoScale() ContainerControl.ScaleMinMaxSize(float, float, bool) ContainerControl.ProcessDialogChar(char) ContainerControl.ProcessDialogKey(Keys) ContainerControl.ProcessCmdKey(ref Message, Keys) ContainerControl.ProcessMnemonic(char) ContainerControl.ProcessTabKey(bool) ContainerControl.RescaleConstantsForDpi(int, int) ContainerControl.Select(bool, bool) ContainerControl.UpdateDefaultButton() ContainerControl.Validate() ContainerControl.Validate(bool) ContainerControl.AutoScaleDimensions ContainerControl.AutoScaleFactor ContainerControl.AutoScaleMode ContainerControl.BindingContext ContainerControl.CanEnableIme ContainerControl.ActiveControl ContainerControl.CurrentAutoScaleDimensions ContainerControl.ParentForm ScrollableControl.ScrollStateAutoScrolling ScrollableControl.ScrollStateHScrollVisible ScrollableControl.ScrollStateVScrollVisible ScrollableControl.ScrollStateUserHasScrolled ScrollableControl.ScrollStateFullDrag ScrollableControl.GetScrollState(int) ScrollableControl.OnMouseWheel(MouseEventArgs) ScrollableControl.OnRightToLeftChanged(EventArgs) ScrollableControl.OnPaintBackground(PaintEventArgs) ScrollableControl.OnPaddingChanged(EventArgs) ScrollableControl.OnVisibleChanged(EventArgs) ScrollableControl.ScaleControl(SizeF, BoundsSpecified) ScrollableControl.SetDisplayRectLocation(int, int) ScrollableControl.ScrollControlIntoView(Control) ScrollableControl.ScrollToControl(Control) ScrollableControl.OnScroll(ScrollEventArgs) ScrollableControl.SetAutoScrollMargin(int, int) ScrollableControl.SetScrollState(int, bool) ScrollableControl.AutoScroll ScrollableControl.AutoScrollMargin ScrollableControl.AutoScrollPosition ScrollableControl.AutoScrollMinSize ScrollableControl.DisplayRectangle ScrollableControl.HScroll ScrollableControl.HorizontalScroll ScrollableControl.VScroll ScrollableControl.VerticalScroll ScrollableControl.Scroll Control.GetAccessibilityObjectById(int) Control.SetAutoSizeMode(AutoSizeMode) Control.GetAutoSizeMode() Control.GetPreferredSize(Size) Control.AccessibilityNotifyClients(AccessibleEvents, int) Control.AccessibilityNotifyClients(AccessibleEvents, int, int) Control.BeginInvoke(Delegate) Control.BeginInvoke(Action) Control.BeginInvoke(Delegate, params object[]) Control.BringToFront() Control.Contains(Control) Control.CreateAccessibilityInstance() Control.CreateControlsInstance() Control.CreateGraphics() Control.CreateHandle() Control.CreateControl() Control.DefWndProc(ref Message) Control.DestroyHandle() Control.DoDragDropAsJson(T, DragDropEffects) Control.DoDragDropAsJson(T, DragDropEffects, Bitmap, Point, bool) Control.DoDragDrop(object, DragDropEffects) Control.DoDragDrop(object, DragDropEffects, Bitmap, Point, bool) Control.DrawToBitmap(Bitmap, Rectangle) Control.EndInvoke(IAsyncResult) Control.FindForm() Control.GetTopLevel() Control.RaiseKeyEvent(object, KeyEventArgs) Control.RaiseMouseEvent(object, MouseEventArgs) Control.Focus() Control.FromChildHandle(nint) Control.FromHandle(nint) Control.GetChildAtPoint(Point, GetChildAtPointSkip) Control.GetChildAtPoint(Point) Control.GetContainerControl() Control.GetScaledBounds(Rectangle, SizeF, BoundsSpecified) Control.GetNextControl(Control, bool) Control.GetStyle(ControlStyles) Control.Hide() Control.InitLayout() Control.Invalidate(Region) Control.Invalidate(Region, bool) Control.Invalidate() Control.Invalidate(bool) Control.Invalidate(Rectangle) Control.Invalidate(Rectangle, bool) Control.Invoke(Action) Control.Invoke(Delegate) Control.Invoke(Delegate, params object[]) Control.Invoke(Func) Control.InvokePaint(Control, PaintEventArgs) Control.InvokePaintBackground(Control, PaintEventArgs) Control.IsKeyLocked(Keys) Control.IsInputChar(char) Control.IsMnemonic(char, string) Control.LogicalToDeviceUnits(int) Control.LogicalToDeviceUnits(Size) Control.ScaleBitmapLogicalToDevice(ref Bitmap) Control.NotifyInvalidate(Rectangle) Control.InvokeOnClick(Control, EventArgs) Control.OnAutoSizeChanged(EventArgs) Control.OnBackColorChanged(EventArgs) Control.OnBackgroundImageChanged(EventArgs) Control.OnBackgroundImageLayoutChanged(EventArgs) Control.OnBindingContextChanged(EventArgs) Control.OnCausesValidationChanged(EventArgs) Control.OnContextMenuStripChanged(EventArgs) Control.OnCursorChanged(EventArgs) Control.OnDataContextChanged(EventArgs) Control.OnDockChanged(EventArgs) Control.OnEnabledChanged(EventArgs) Control.OnForeColorChanged(EventArgs) Control.OnNotifyMessage(Message) Control.OnParentBackColorChanged(EventArgs) Control.OnParentBackgroundImageChanged(EventArgs) Control.OnParentBindingContextChanged(EventArgs) Control.OnParentCursorChanged(EventArgs) Control.OnParentDataContextChanged(EventArgs) Control.OnParentEnabledChanged(EventArgs) Control.OnParentFontChanged(EventArgs) Control.OnParentForeColorChanged(EventArgs) Control.OnParentRightToLeftChanged(EventArgs) Control.OnParentVisibleChanged(EventArgs) Control.OnPrint(PaintEventArgs) Control.OnTabIndexChanged(EventArgs) Control.OnTabStopChanged(EventArgs) Control.OnTextChanged(EventArgs) Control.OnClick(EventArgs) Control.OnClientSizeChanged(EventArgs) Control.OnControlAdded(ControlEventArgs) Control.OnControlRemoved(ControlEventArgs) Control.OnHandleCreated(EventArgs) Control.OnLocationChanged(EventArgs) Control.OnHandleDestroyed(EventArgs) Control.OnDoubleClick(EventArgs) Control.OnDragEnter(DragEventArgs) Control.OnDragOver(DragEventArgs) Control.OnDragLeave(EventArgs) Control.OnDragDrop(DragEventArgs) Control.OnGiveFeedback(GiveFeedbackEventArgs) Control.OnEnter(EventArgs) Control.InvokeGotFocus(Control, EventArgs) Control.OnGotFocus(EventArgs) Control.OnHelpRequested(HelpEventArgs) Control.OnInvalidated(InvalidateEventArgs) Control.OnKeyDown(KeyEventArgs) Control.OnKeyPress(KeyPressEventArgs) Control.OnKeyUp(KeyEventArgs) Control.OnLeave(EventArgs) Control.InvokeLostFocus(Control, EventArgs) Control.OnLostFocus(EventArgs) Control.OnMarginChanged(EventArgs) Control.OnMouseDoubleClick(MouseEventArgs) Control.OnMouseClick(MouseEventArgs) Control.OnMouseCaptureChanged(EventArgs) Control.OnMouseEnter(EventArgs) Control.OnMouseLeave(EventArgs) Control.OnDpiChangedBeforeParent(EventArgs) Control.OnDpiChangedAfterParent(EventArgs) Control.OnMouseHover(EventArgs) Control.OnMouseMove(MouseEventArgs) Control.OnMouseUp(MouseEventArgs) Control.OnPaint(PaintEventArgs) Control.OnQueryContinueDrag(QueryContinueDragEventArgs) Control.OnRegionChanged(EventArgs) Control.OnPreviewKeyDown(PreviewKeyDownEventArgs) Control.OnSizeChanged(EventArgs) Control.OnChangeUICues(UICuesEventArgs) Control.OnStyleChanged(EventArgs) Control.OnSystemColorsChanged(EventArgs) Control.OnValidating(CancelEventArgs) Control.OnValidated(EventArgs) Control.PerformLayout() Control.PerformLayout(Control, string) Control.PointToClient(Point) Control.PointToScreen(Point) Control.PreProcessMessage(ref Message) Control.PreProcessControlMessage(ref Message) Control.ProcessKeyEventArgs(ref Message) Control.ProcessKeyMessage(ref Message) Control.ProcessKeyPreview(ref Message) Control.RaiseDragEvent(object, DragEventArgs) Control.RaisePaintEvent(object, PaintEventArgs) Control.RecreateHandle() Control.RectangleToClient(Rectangle) Control.RectangleToScreen(Rectangle) Control.ReflectMessage(nint, ref Message) Control.Refresh() Control.ResetMouseEventArgs() Control.ResetText() Control.ResumeLayout() Control.ResumeLayout(bool) Control.Scale(SizeF) Control.Select() Control.SelectNextControl(Control, bool, bool, bool, bool) Control.SendToBack() Control.SetBounds(int, int, int, int) Control.SetBounds(int, int, int, int, BoundsSpecified) Control.SetBoundsCore(int, int, int, int, BoundsSpecified) Control.SetClientSizeCore(int, int) Control.SizeFromClientSize(Size) Control.SetStyle(ControlStyles, bool) Control.SetTopLevel(bool) Control.SetVisibleCore(bool) Control.RtlTranslateAlignment(HorizontalAlignment) Control.RtlTranslateAlignment(LeftRightAlignment) Control.RtlTranslateAlignment(ContentAlignment) Control.RtlTranslateHorizontal(HorizontalAlignment) Control.RtlTranslateLeftRight(LeftRightAlignment) Control.RtlTranslateContent(ContentAlignment) Control.Show() Control.SuspendLayout() Control.Update() Control.UpdateBounds() Control.UpdateBounds(int, int, int, int) Control.UpdateBounds(int, int, int, int, int, int) Control.UpdateZOrder() Control.UpdateStyles() Control.OnImeModeChanged(EventArgs) Control.InvokeAsync(Action, CancellationToken) Control.InvokeAsync(Func, CancellationToken) Control.InvokeAsync(Func, CancellationToken) Control.InvokeAsync(Func>, CancellationToken) Control.AccessibilityObject Control.AccessibleDefaultActionDescription Control.AccessibleDescription Control.AccessibleName Control.AccessibleRole Control.AllowDrop Control.Anchor Control.AutoScrollOffset Control.LayoutEngine Control.DataContext Control.BackColor Control.BackgroundImage Control.BackgroundImageLayout Control.Bottom Control.Bounds Control.CanFocus Control.CanRaiseEvents Control.CanSelect Control.Capture Control.CausesValidation Control.CheckForIllegalCrossThreadCalls Control.ClientRectangle Control.ClientSize Control.CompanyName Control.ContainsFocus Control.ContextMenuStrip Control.Controls Control.Created Control.Cursor Control.DataBindings Control.DefaultBackColor Control.DefaultCursor Control.DefaultFont Control.DefaultForeColor Control.DefaultMargin Control.DefaultMaximumSize Control.DefaultMinimumSize Control.DefaultPadding Control.DeviceDpi Control.IsDisposed Control.Disposing Control.Dock Control.DoubleBuffered Control.Enabled Control.Focused Control.Font Control.FontHeight Control.ForeColor Control.Handle Control.HasChildren Control.Height Control.IsHandleCreated Control.InvokeRequired Control.IsAccessible Control.IsAncestorSiteInDesignMode Control.IsMirrored Control.Left Control.Location Control.Margin Control.MaximumSize Control.MinimumSize Control.ModifierKeys Control.MouseButtons Control.MousePosition Control.Name Control.Parent Control.ProductName Control.ProductVersion Control.RecreatingHandle Control.Region Control.RenderRightToLeft Control.ResizeRedraw Control.Right Control.RightToLeft Control.ScaleChildren Control.Site Control.Size Control.TabIndex Control.TabStop Control.Tag Control.Text Control.Top Control.TopLevelControl Control.ShowKeyboardCues Control.ShowFocusCues Control.UseWaitCursor Control.Visible Control.Width Control.PreferredSize Control.Padding Control.DefaultImeMode Control.ImeMode Control.ImeModeBase Control.PropagatingImeMode Control.BackColorChanged Control.BackgroundImageChanged Control.BackgroundImageLayoutChanged Control.BindingContextChanged Control.CausesValidationChanged Control.ClientSizeChanged Control.ContextMenuStripChanged Control.CursorChanged Control.DockChanged Control.EnabledChanged Control.FontChanged Control.ForeColorChanged Control.LocationChanged Control.MarginChanged Control.RegionChanged Control.RightToLeftChanged Control.SizeChanged Control.TabIndexChanged Control.TabStopChanged Control.TextChanged Control.VisibleChanged Control.Click Control.ControlAdded Control.ControlRemoved Control.DataContextChanged Control.DragDrop Control.DragEnter Control.DragOver Control.DragLeave Control.GiveFeedback Control.HandleCreated Control.HandleDestroyed Control.HelpRequested Control.Invalidated Control.PaddingChanged Control.Paint Control.QueryContinueDrag Control.QueryAccessibilityHelp Control.DoubleClick Control.Enter Control.GotFocus Control.KeyDown Control.KeyPress Control.KeyUp Control.Layout Control.Leave Control.LostFocus Control.MouseClick Control.MouseDoubleClick Control.MouseCaptureChanged Control.MouseDown Control.MouseEnter Control.MouseLeave Control.DpiChangedBeforeParent Control.DpiChangedAfterParent Control.MouseHover Control.MouseMove Control.MouseUp Control.MouseWheel Control.Move Control.PreviewKeyDown Control.Resize Control.ChangeUICues Control.StyleChanged Control.SystemColorsChanged Control.Validating Control.Validated Control.ParentChanged Control.ImeModeChanged Component.Dispose() Component.GetService(Type) Component.ToString() Component.Container Component.DesignMode Component.Events Component.Disposed MarshalByRefObject.GetLifetimeService() MarshalByRefObject.InitializeLifetimeService() MarshalByRefObject.MemberwiseClone(bool) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors RenderingCanvas(params IDisplayee[]) Ctor. public RenderingCanvas(params IDisplayee[] displayees) Parameters displayees IDisplayee[] displayees Properties DispEngine DispEngine. public DispEngine DispEngine { get; } Property Value DispEngine Methods Dispose(bool) Clean up any resources being used. protected override void Dispose(bool disposing) Parameters disposing bool true if managed resources should be disposed; otherwise, false. IsInputKey(Keys) Determines whether the specified key is a regular input key or a special key that requires preprocessing. protected override bool IsInputKey(Keys keyData) Parameters keyData Keys One of the Keys values. Returns bool true if the specified key is a regular input key; otherwise, false. WndProc(ref Message) Processes Windows messages, handling touch input and forwarding other messages to the base class. protected override void WndProc(ref Message m) Parameters m Message The Windows message to process." }, "api/Hi.WinForm.Disp.RenderingForm.html": { "href": "api/Hi.WinForm.Disp.RenderingForm.html", "title": "Class RenderingForm | HiAPI-C# 2025", - "summary": "Class RenderingForm Namespace Hi.WinForm.Disp Assembly Hi.WinForm.dll A Form contains RenderingCanvas. This class is usually used for debug due to its simplicity. public class RenderingForm : Form, IDropTarget, ISynchronizeInvoke, IWin32Window, IBindableComponent, IComponent, IDisposable, IContainerControl, IGetDispEngine Inheritance object MarshalByRefObject Component Control ScrollableControl ContainerControl Form RenderingForm Implements IDropTarget ISynchronizeInvoke IWin32Window IBindableComponent IComponent IDisposable IContainerControl IGetDispEngine Inherited Members Form.SetVisibleCore(bool) Form.OnFormCornerPreferenceChanged(EventArgs) Form.OnFormBorderColorChanged(EventArgs) Form.OnFormCaptionBackColorChanged(EventArgs) Form.OnFormCaptionTextColorChanged(EventArgs) Form.Activate() Form.ActivateMdiChild(Form) Form.AddOwnedForm(Form) Form.AdjustFormScrollbars(bool) Form.Close() Form.CreateAccessibilityInstance() Form.CreateControlsInstance() Form.CreateHandle() Form.DefWndProc(ref Message) Form.ProcessMnemonic(char) Form.CenterToParent() Form.CenterToScreen() Form.LayoutMdi(MdiLayout) Form.OnActivated(EventArgs) Form.OnBackgroundImageChanged(EventArgs) Form.OnBackgroundImageLayoutChanged(EventArgs) Form.OnFormClosing(FormClosingEventArgs) Form.OnFormClosed(FormClosedEventArgs) Form.OnCreateControl() Form.OnDeactivate(EventArgs) Form.OnEnabledChanged(EventArgs) Form.OnEnter(EventArgs) Form.OnFontChanged(EventArgs) Form.OnGotFocus(EventArgs) Form.OnHandleCreated(EventArgs) Form.OnHandleDestroyed(EventArgs) Form.OnHelpButtonClicked(CancelEventArgs) Form.OnLayout(LayoutEventArgs) Form.OnLoad(EventArgs) Form.OnMaximizedBoundsChanged(EventArgs) Form.OnMaximumSizeChanged(EventArgs) Form.OnMinimumSizeChanged(EventArgs) Form.OnInputLanguageChanged(InputLanguageChangedEventArgs) Form.OnInputLanguageChanging(InputLanguageChangingEventArgs) Form.OnVisibleChanged(EventArgs) Form.OnMdiChildActivate(EventArgs) Form.OnMenuStart(EventArgs) Form.OnMenuComplete(EventArgs) Form.OnPaint(PaintEventArgs) Form.OnResize(EventArgs) Form.OnDpiChanged(DpiChangedEventArgs) Form.OnGetDpiScaledSize(int, int, ref Size) Form.OnRightToLeftLayoutChanged(EventArgs) Form.OnShown(EventArgs) Form.OnTextChanged(EventArgs) Form.ProcessCmdKey(ref Message, Keys) Form.ProcessDialogKey(Keys) Form.ProcessDialogChar(char) Form.ProcessKeyPreview(ref Message) Form.ProcessTabKey(bool) Form.RemoveOwnedForm(Form) Form.Select(bool, bool) Form.ScaleMinMaxSize(float, float, bool) Form.GetScaledBounds(Rectangle, SizeF, BoundsSpecified) Form.ScaleControl(SizeF, BoundsSpecified) Form.SetBoundsCore(int, int, int, int, BoundsSpecified) Form.SetClientSizeCore(int, int) Form.SetDesktopBounds(int, int, int, int) Form.SetDesktopLocation(int, int) Form.Show(IWin32Window) Form.ShowAsync(IWin32Window) Form.ShowDialog() Form.ShowDialog(IWin32Window) Form.ShowDialogAsync() Form.ShowDialogAsync(IWin32Window) Form.ToString() Form.UpdateDefaultButton() Form.OnResizeBegin(EventArgs) Form.OnResizeEnd(EventArgs) Form.OnStyleChanged(EventArgs) Form.ValidateChildren() Form.ValidateChildren(ValidationConstraints) Form.WndProc(ref Message) Form.AcceptButton Form.ActiveForm Form.ActiveMdiChild Form.AllowTransparency Form.AutoScroll Form.AutoSize Form.AutoSizeMode Form.AutoValidate Form.BackColor Form.FormBorderStyle Form.CancelButton Form.ClientSize Form.ControlBox Form.CreateParams Form.DefaultImeMode Form.DefaultSize Form.DesktopBounds Form.DesktopLocation Form.DialogResult Form.HelpButton Form.Icon Form.IsMdiChild Form.IsMdiContainer Form.IsRestrictedWindow Form.KeyPreview Form.Location Form.MaximizedBounds Form.MaximumSize Form.MainMenuStrip Form.MinimumSize Form.MaximizeBox Form.MdiChildren Form.MdiChildrenMinimizedAnchorBottom Form.MdiParent Form.MinimizeBox Form.Modal Form.Opacity Form.OwnedForms Form.Owner Form.RestoreBounds Form.RightToLeftLayout Form.FormScreenCaptureMode Form.ShowInTaskbar Form.ShowIcon Form.ShowWithoutActivation Form.Size Form.SizeGripStyle Form.StartPosition Form.Text Form.TopLevel Form.TopMost Form.TransparencyKey Form.FormCornerPreference Form.FormBorderColor Form.FormCaptionBackColor Form.FormCaptionTextColor Form.WindowState Form.AutoSizeChanged Form.AutoValidateChanged Form.HelpButtonClicked Form.MaximizedBoundsChanged Form.MaximumSizeChanged Form.MinimumSizeChanged Form.Activated Form.Deactivate Form.FormClosing Form.FormBorderColorChanged Form.FormCaptionBackColorChanged Form.FormCaptionTextColorChanged Form.FormCornerPreferenceChanged Form.FormClosed Form.Load Form.MdiChildActivate Form.MenuComplete Form.MenuStart Form.InputLanguageChanged Form.InputLanguageChanging Form.RightToLeftLayoutChanged Form.Shown Form.DpiChanged Form.ResizeBegin Form.ResizeEnd ContainerControl.OnAutoValidateChanged(EventArgs) ContainerControl.OnMove(EventArgs) ContainerControl.OnParentChanged(EventArgs) ContainerControl.PerformAutoScale() ContainerControl.RescaleConstantsForDpi(int, int) ContainerControl.Validate() ContainerControl.Validate(bool) ContainerControl.AutoScaleDimensions ContainerControl.AutoScaleFactor ContainerControl.AutoScaleMode ContainerControl.BindingContext ContainerControl.CanEnableIme ContainerControl.ActiveControl ContainerControl.CurrentAutoScaleDimensions ContainerControl.ParentForm ScrollableControl.ScrollStateAutoScrolling ScrollableControl.ScrollStateHScrollVisible ScrollableControl.ScrollStateVScrollVisible ScrollableControl.ScrollStateUserHasScrolled ScrollableControl.ScrollStateFullDrag ScrollableControl.GetScrollState(int) ScrollableControl.OnMouseWheel(MouseEventArgs) ScrollableControl.OnRightToLeftChanged(EventArgs) ScrollableControl.OnPaintBackground(PaintEventArgs) ScrollableControl.OnPaddingChanged(EventArgs) ScrollableControl.SetDisplayRectLocation(int, int) ScrollableControl.ScrollControlIntoView(Control) ScrollableControl.ScrollToControl(Control) ScrollableControl.OnScroll(ScrollEventArgs) ScrollableControl.SetAutoScrollMargin(int, int) ScrollableControl.SetScrollState(int, bool) ScrollableControl.AutoScrollMargin ScrollableControl.AutoScrollPosition ScrollableControl.AutoScrollMinSize ScrollableControl.DisplayRectangle ScrollableControl.HScroll ScrollableControl.HorizontalScroll ScrollableControl.VScroll ScrollableControl.VerticalScroll ScrollableControl.Scroll Control.GetAccessibilityObjectById(int) Control.SetAutoSizeMode(AutoSizeMode) Control.GetAutoSizeMode() Control.GetPreferredSize(Size) Control.AccessibilityNotifyClients(AccessibleEvents, int) Control.AccessibilityNotifyClients(AccessibleEvents, int, int) Control.BeginInvoke(Delegate) Control.BeginInvoke(Action) Control.BeginInvoke(Delegate, params object[]) Control.BringToFront() Control.Contains(Control) Control.CreateGraphics() Control.CreateControl() Control.DestroyHandle() Control.DoDragDropAsJson(T, DragDropEffects) Control.DoDragDropAsJson(T, DragDropEffects, Bitmap, Point, bool) Control.DoDragDrop(object, DragDropEffects) Control.DoDragDrop(object, DragDropEffects, Bitmap, Point, bool) Control.DrawToBitmap(Bitmap, Rectangle) Control.EndInvoke(IAsyncResult) Control.FindForm() Control.GetTopLevel() Control.RaiseKeyEvent(object, KeyEventArgs) Control.RaiseMouseEvent(object, MouseEventArgs) Control.Focus() Control.FromChildHandle(nint) Control.FromHandle(nint) Control.GetChildAtPoint(Point, GetChildAtPointSkip) Control.GetChildAtPoint(Point) Control.GetContainerControl() Control.GetNextControl(Control, bool) Control.GetStyle(ControlStyles) Control.Hide() Control.InitLayout() Control.Invalidate(Region) Control.Invalidate(Region, bool) Control.Invalidate() Control.Invalidate(bool) Control.Invalidate(Rectangle) Control.Invalidate(Rectangle, bool) Control.Invoke(Action) Control.Invoke(Delegate) Control.Invoke(Delegate, params object[]) Control.Invoke(Func) Control.InvokePaint(Control, PaintEventArgs) Control.InvokePaintBackground(Control, PaintEventArgs) Control.IsKeyLocked(Keys) Control.IsInputChar(char) Control.IsInputKey(Keys) Control.IsMnemonic(char, string) Control.LogicalToDeviceUnits(int) Control.LogicalToDeviceUnits(Size) Control.ScaleBitmapLogicalToDevice(ref Bitmap) Control.NotifyInvalidate(Rectangle) Control.InvokeOnClick(Control, EventArgs) Control.OnAutoSizeChanged(EventArgs) Control.OnBackColorChanged(EventArgs) Control.OnBindingContextChanged(EventArgs) Control.OnCausesValidationChanged(EventArgs) Control.OnContextMenuStripChanged(EventArgs) Control.OnCursorChanged(EventArgs) Control.OnDataContextChanged(EventArgs) Control.OnDockChanged(EventArgs) Control.OnForeColorChanged(EventArgs) Control.OnNotifyMessage(Message) Control.OnParentBackColorChanged(EventArgs) Control.OnParentBackgroundImageChanged(EventArgs) Control.OnParentBindingContextChanged(EventArgs) Control.OnParentCursorChanged(EventArgs) Control.OnParentDataContextChanged(EventArgs) Control.OnParentEnabledChanged(EventArgs) Control.OnParentFontChanged(EventArgs) Control.OnParentForeColorChanged(EventArgs) Control.OnParentRightToLeftChanged(EventArgs) Control.OnParentVisibleChanged(EventArgs) Control.OnPrint(PaintEventArgs) Control.OnTabIndexChanged(EventArgs) Control.OnTabStopChanged(EventArgs) Control.OnClick(EventArgs) Control.OnClientSizeChanged(EventArgs) Control.OnControlAdded(ControlEventArgs) Control.OnControlRemoved(ControlEventArgs) Control.OnLocationChanged(EventArgs) Control.OnDoubleClick(EventArgs) Control.OnDragEnter(DragEventArgs) Control.OnDragOver(DragEventArgs) Control.OnDragLeave(EventArgs) Control.OnDragDrop(DragEventArgs) Control.OnGiveFeedback(GiveFeedbackEventArgs) Control.InvokeGotFocus(Control, EventArgs) Control.OnHelpRequested(HelpEventArgs) Control.OnInvalidated(InvalidateEventArgs) Control.OnKeyDown(KeyEventArgs) Control.OnKeyPress(KeyPressEventArgs) Control.OnKeyUp(KeyEventArgs) Control.OnLeave(EventArgs) Control.InvokeLostFocus(Control, EventArgs) Control.OnLostFocus(EventArgs) Control.OnMarginChanged(EventArgs) Control.OnMouseDoubleClick(MouseEventArgs) Control.OnMouseClick(MouseEventArgs) Control.OnMouseCaptureChanged(EventArgs) Control.OnMouseDown(MouseEventArgs) Control.OnMouseEnter(EventArgs) Control.OnMouseLeave(EventArgs) Control.OnDpiChangedBeforeParent(EventArgs) Control.OnDpiChangedAfterParent(EventArgs) Control.OnMouseHover(EventArgs) Control.OnMouseMove(MouseEventArgs) Control.OnMouseUp(MouseEventArgs) Control.OnQueryContinueDrag(QueryContinueDragEventArgs) Control.OnRegionChanged(EventArgs) Control.OnPreviewKeyDown(PreviewKeyDownEventArgs) Control.OnSizeChanged(EventArgs) Control.OnChangeUICues(UICuesEventArgs) Control.OnSystemColorsChanged(EventArgs) Control.OnValidating(CancelEventArgs) Control.OnValidated(EventArgs) Control.PerformLayout() Control.PerformLayout(Control, string) Control.PointToClient(Point) Control.PointToScreen(Point) Control.PreProcessMessage(ref Message) Control.PreProcessControlMessage(ref Message) Control.ProcessKeyEventArgs(ref Message) Control.ProcessKeyMessage(ref Message) Control.RaiseDragEvent(object, DragEventArgs) Control.RaisePaintEvent(object, PaintEventArgs) Control.RecreateHandle() Control.RectangleToClient(Rectangle) Control.RectangleToScreen(Rectangle) Control.ReflectMessage(nint, ref Message) Control.Refresh() Control.ResetMouseEventArgs() Control.ResetText() Control.ResumeLayout() Control.ResumeLayout(bool) Control.Scale(SizeF) Control.Select() Control.SelectNextControl(Control, bool, bool, bool, bool) Control.SendToBack() Control.SetBounds(int, int, int, int) Control.SetBounds(int, int, int, int, BoundsSpecified) Control.SizeFromClientSize(Size) Control.SetStyle(ControlStyles, bool) Control.SetTopLevel(bool) Control.RtlTranslateAlignment(HorizontalAlignment) Control.RtlTranslateAlignment(LeftRightAlignment) Control.RtlTranslateAlignment(ContentAlignment) Control.RtlTranslateHorizontal(HorizontalAlignment) Control.RtlTranslateLeftRight(LeftRightAlignment) Control.RtlTranslateContent(ContentAlignment) Control.Show() Control.SuspendLayout() Control.Update() Control.UpdateBounds() Control.UpdateBounds(int, int, int, int) Control.UpdateBounds(int, int, int, int, int, int) Control.UpdateZOrder() Control.UpdateStyles() Control.OnImeModeChanged(EventArgs) Control.InvokeAsync(Action, CancellationToken) Control.InvokeAsync(Func, CancellationToken) Control.InvokeAsync(Func, CancellationToken) Control.InvokeAsync(Func>, CancellationToken) Control.AccessibilityObject Control.AccessibleDefaultActionDescription Control.AccessibleDescription Control.AccessibleName Control.AccessibleRole Control.AllowDrop Control.Anchor Control.AutoScrollOffset Control.LayoutEngine Control.DataContext Control.BackgroundImage Control.BackgroundImageLayout Control.Bottom Control.Bounds Control.CanFocus Control.CanRaiseEvents Control.CanSelect Control.Capture Control.CausesValidation Control.CheckForIllegalCrossThreadCalls Control.ClientRectangle Control.CompanyName Control.ContainsFocus Control.ContextMenuStrip Control.Controls Control.Created Control.Cursor Control.DataBindings Control.DefaultBackColor Control.DefaultCursor Control.DefaultFont Control.DefaultForeColor Control.DefaultMargin Control.DefaultMaximumSize Control.DefaultMinimumSize Control.DefaultPadding Control.DeviceDpi Control.IsDisposed Control.Disposing Control.Dock Control.DoubleBuffered Control.Enabled Control.Focused Control.Font Control.FontHeight Control.ForeColor Control.Handle Control.HasChildren Control.Height Control.IsHandleCreated Control.InvokeRequired Control.IsAccessible Control.IsAncestorSiteInDesignMode Control.IsMirrored Control.Left Control.Margin Control.ModifierKeys Control.MouseButtons Control.MousePosition Control.Name Control.Parent Control.ProductName Control.ProductVersion Control.RecreatingHandle Control.Region Control.RenderRightToLeft Control.ResizeRedraw Control.Right Control.RightToLeft Control.ScaleChildren Control.Site Control.TabIndex Control.TabStop Control.Tag Control.Top Control.TopLevelControl Control.ShowKeyboardCues Control.ShowFocusCues Control.UseWaitCursor Control.Visible Control.Width Control.PreferredSize Control.Padding Control.ImeMode Control.ImeModeBase Control.PropagatingImeMode Control.BackColorChanged Control.BackgroundImageChanged Control.BackgroundImageLayoutChanged Control.BindingContextChanged Control.CausesValidationChanged Control.ClientSizeChanged Control.ContextMenuStripChanged Control.CursorChanged Control.DockChanged Control.EnabledChanged Control.FontChanged Control.ForeColorChanged Control.LocationChanged Control.MarginChanged Control.RegionChanged Control.RightToLeftChanged Control.SizeChanged Control.TabIndexChanged Control.TabStopChanged Control.TextChanged Control.VisibleChanged Control.Click Control.ControlAdded Control.ControlRemoved Control.DataContextChanged Control.DragDrop Control.DragEnter Control.DragOver Control.DragLeave Control.GiveFeedback Control.HandleCreated Control.HandleDestroyed Control.HelpRequested Control.Invalidated Control.PaddingChanged Control.Paint Control.QueryContinueDrag Control.QueryAccessibilityHelp Control.DoubleClick Control.Enter Control.GotFocus Control.KeyDown Control.KeyPress Control.KeyUp Control.Layout Control.Leave Control.LostFocus Control.MouseClick Control.MouseDoubleClick Control.MouseCaptureChanged Control.MouseDown Control.MouseEnter Control.MouseLeave Control.DpiChangedBeforeParent Control.DpiChangedAfterParent Control.MouseHover Control.MouseMove Control.MouseUp Control.MouseWheel Control.Move Control.PreviewKeyDown Control.Resize Control.ChangeUICues Control.StyleChanged Control.SystemColorsChanged Control.Validating Control.Validated Control.ParentChanged Control.ImeModeChanged Component.Dispose() Component.GetService(Type) Component.Container Component.DesignMode Component.Events Component.Disposed MarshalByRefObject.GetLifetimeService() MarshalByRefObject.InitializeLifetimeService() MarshalByRefObject.MemberwiseClone(bool) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Displayee public IDisplayee Displayee { get; set; } Property Value IDisplayee DisplayerMap See Call(string, params IDisplayee[]) to get the information. public static ConcurrentDictionary DisplayerMap { get; } Property Value ConcurrentDictionary RenderingCanvas The contained RenderingCanvas. public RenderingCanvas RenderingCanvas { get; } Property Value RenderingCanvas Methods Call(string, params IDisplayee[]) Create and obtain a RenderingForm if the key has not existed; Otherwise, the old one is obtained. displayees are set to the obtained RenderingForm. The dictionary of this function is DisplayerMap. public static RenderingForm Call(string key, params IDisplayee[] displayees) Parameters key string key displayees IDisplayee[] The displayees set to the obtained RenderingForm. Returns RenderingForm A RenderingForm obtained by the key. Dispose(bool) Clean up any resources being used. protected override void Dispose(bool disposing) Parameters disposing bool true if managed resources should be disposed; otherwise, false. GetDispEngine() Get DispEngine. public DispEngine GetDispEngine() Returns DispEngine DispEngine" + "summary": "Class RenderingForm Namespace Hi.WinForm.Disp Assembly Hi.WinForm.dll A Form contains RenderingCanvas. This class is usually used for debug due to its simplicity. public class RenderingForm : Form, IDropTarget, ISynchronizeInvoke, IWin32Window, IBindableComponent, IComponent, IDisposable, IContainerControl, IGetDispEngine Inheritance object MarshalByRefObject Component Control ScrollableControl ContainerControl Form RenderingForm Implements IDropTarget ISynchronizeInvoke IWin32Window IBindableComponent IComponent IDisposable IContainerControl IGetDispEngine Inherited Members Form.SetVisibleCore(bool) Form.OnFormCornerPreferenceChanged(EventArgs) Form.OnFormBorderColorChanged(EventArgs) Form.OnFormCaptionBackColorChanged(EventArgs) Form.OnFormCaptionTextColorChanged(EventArgs) Form.Activate() Form.ActivateMdiChild(Form) Form.AddOwnedForm(Form) Form.AdjustFormScrollbars(bool) Form.Close() Form.CreateAccessibilityInstance() Form.CreateControlsInstance() Form.CreateHandle() Form.DefWndProc(ref Message) Form.ProcessMnemonic(char) Form.CenterToParent() Form.CenterToScreen() Form.LayoutMdi(MdiLayout) Form.OnActivated(EventArgs) Form.OnBackgroundImageChanged(EventArgs) Form.OnBackgroundImageLayoutChanged(EventArgs) Form.OnFormClosing(FormClosingEventArgs) Form.OnFormClosed(FormClosedEventArgs) Form.OnCreateControl() Form.OnDeactivate(EventArgs) Form.OnEnabledChanged(EventArgs) Form.OnEnter(EventArgs) Form.OnFontChanged(EventArgs) Form.OnGotFocus(EventArgs) Form.OnHandleCreated(EventArgs) Form.OnHandleDestroyed(EventArgs) Form.OnHelpButtonClicked(CancelEventArgs) Form.OnLayout(LayoutEventArgs) Form.OnLoad(EventArgs) Form.OnMaximizedBoundsChanged(EventArgs) Form.OnMaximumSizeChanged(EventArgs) Form.OnMinimumSizeChanged(EventArgs) Form.OnInputLanguageChanged(InputLanguageChangedEventArgs) Form.OnInputLanguageChanging(InputLanguageChangingEventArgs) Form.OnVisibleChanged(EventArgs) Form.OnMdiChildActivate(EventArgs) Form.OnMenuStart(EventArgs) Form.OnMenuComplete(EventArgs) Form.OnPaint(PaintEventArgs) Form.OnResize(EventArgs) Form.OnDpiChanged(DpiChangedEventArgs) Form.OnGetDpiScaledSize(int, int, ref Size) Form.OnRightToLeftLayoutChanged(EventArgs) Form.OnShown(EventArgs) Form.OnTextChanged(EventArgs) Form.ProcessCmdKey(ref Message, Keys) Form.ProcessDialogKey(Keys) Form.ProcessDialogChar(char) Form.ProcessKeyPreview(ref Message) Form.ProcessTabKey(bool) Form.RemoveOwnedForm(Form) Form.Select(bool, bool) Form.ScaleMinMaxSize(float, float, bool) Form.GetScaledBounds(Rectangle, SizeF, BoundsSpecified) Form.ScaleControl(SizeF, BoundsSpecified) Form.SetBoundsCore(int, int, int, int, BoundsSpecified) Form.SetClientSizeCore(int, int) Form.SetDesktopBounds(int, int, int, int) Form.SetDesktopLocation(int, int) Form.Show(IWin32Window) Form.ShowAsync(IWin32Window) Form.ShowDialog() Form.ShowDialog(IWin32Window) Form.ShowDialogAsync() Form.ShowDialogAsync(IWin32Window) Form.ToString() Form.UpdateDefaultButton() Form.OnResizeBegin(EventArgs) Form.OnResizeEnd(EventArgs) Form.OnStyleChanged(EventArgs) Form.ValidateChildren() Form.ValidateChildren(ValidationConstraints) Form.WndProc(ref Message) Form.AcceptButton Form.ActiveForm Form.ActiveMdiChild Form.AllowTransparency Form.AutoScroll Form.AutoSize Form.AutoSizeMode Form.AutoValidate Form.BackColor Form.FormBorderStyle Form.CancelButton Form.ClientSize Form.ControlBox Form.CreateParams Form.DefaultImeMode Form.DefaultSize Form.DesktopBounds Form.DesktopLocation Form.DialogResult Form.HelpButton Form.Icon Form.IsMdiChild Form.IsMdiContainer Form.IsRestrictedWindow Form.KeyPreview Form.Location Form.MaximizedBounds Form.MaximumSize Form.MainMenuStrip Form.MinimumSize Form.MaximizeBox Form.MdiChildren Form.MdiChildrenMinimizedAnchorBottom Form.MdiParent Form.MinimizeBox Form.Modal Form.Opacity Form.OwnedForms Form.Owner Form.RestoreBounds Form.RightToLeftLayout Form.FormScreenCaptureMode Form.ShowInTaskbar Form.ShowIcon Form.ShowWithoutActivation Form.Size Form.SizeGripStyle Form.StartPosition Form.Text Form.TopLevel Form.TopMost Form.TransparencyKey Form.FormCornerPreference Form.FormBorderColor Form.FormCaptionBackColor Form.FormCaptionTextColor Form.WindowState Form.AutoSizeChanged Form.AutoValidateChanged Form.HelpButtonClicked Form.MaximizedBoundsChanged Form.MaximumSizeChanged Form.MinimumSizeChanged Form.Activated Form.Deactivate Form.FormClosing Form.FormBorderColorChanged Form.FormCaptionBackColorChanged Form.FormCaptionTextColorChanged Form.FormCornerPreferenceChanged Form.FormClosed Form.Load Form.MdiChildActivate Form.MenuComplete Form.MenuStart Form.InputLanguageChanged Form.InputLanguageChanging Form.RightToLeftLayoutChanged Form.Shown Form.DpiChanged Form.ResizeBegin Form.ResizeEnd ContainerControl.OnAutoValidateChanged(EventArgs) ContainerControl.OnMove(EventArgs) ContainerControl.OnParentChanged(EventArgs) ContainerControl.PerformAutoScale() ContainerControl.RescaleConstantsForDpi(int, int) ContainerControl.Validate() ContainerControl.Validate(bool) ContainerControl.AutoScaleDimensions ContainerControl.AutoScaleFactor ContainerControl.AutoScaleMode ContainerControl.BindingContext ContainerControl.CanEnableIme ContainerControl.ActiveControl ContainerControl.CurrentAutoScaleDimensions ContainerControl.ParentForm ScrollableControl.ScrollStateAutoScrolling ScrollableControl.ScrollStateHScrollVisible ScrollableControl.ScrollStateVScrollVisible ScrollableControl.ScrollStateUserHasScrolled ScrollableControl.ScrollStateFullDrag ScrollableControl.GetScrollState(int) ScrollableControl.OnMouseWheel(MouseEventArgs) ScrollableControl.OnRightToLeftChanged(EventArgs) ScrollableControl.OnPaintBackground(PaintEventArgs) ScrollableControl.OnPaddingChanged(EventArgs) ScrollableControl.SetDisplayRectLocation(int, int) ScrollableControl.ScrollControlIntoView(Control) ScrollableControl.ScrollToControl(Control) ScrollableControl.OnScroll(ScrollEventArgs) ScrollableControl.SetAutoScrollMargin(int, int) ScrollableControl.SetScrollState(int, bool) ScrollableControl.AutoScrollMargin ScrollableControl.AutoScrollPosition ScrollableControl.AutoScrollMinSize ScrollableControl.DisplayRectangle ScrollableControl.HScroll ScrollableControl.HorizontalScroll ScrollableControl.VScroll ScrollableControl.VerticalScroll ScrollableControl.Scroll Control.GetAccessibilityObjectById(int) Control.SetAutoSizeMode(AutoSizeMode) Control.GetAutoSizeMode() Control.GetPreferredSize(Size) Control.AccessibilityNotifyClients(AccessibleEvents, int) Control.AccessibilityNotifyClients(AccessibleEvents, int, int) Control.BeginInvoke(Delegate) Control.BeginInvoke(Action) Control.BeginInvoke(Delegate, params object[]) Control.BringToFront() Control.Contains(Control) Control.CreateGraphics() Control.CreateControl() Control.DestroyHandle() Control.DoDragDropAsJson(T, DragDropEffects) Control.DoDragDropAsJson(T, DragDropEffects, Bitmap, Point, bool) Control.DoDragDrop(object, DragDropEffects) Control.DoDragDrop(object, DragDropEffects, Bitmap, Point, bool) Control.DrawToBitmap(Bitmap, Rectangle) Control.EndInvoke(IAsyncResult) Control.FindForm() Control.GetTopLevel() Control.RaiseKeyEvent(object, KeyEventArgs) Control.RaiseMouseEvent(object, MouseEventArgs) Control.Focus() Control.FromChildHandle(nint) Control.FromHandle(nint) Control.GetChildAtPoint(Point, GetChildAtPointSkip) Control.GetChildAtPoint(Point) Control.GetContainerControl() Control.GetNextControl(Control, bool) Control.GetStyle(ControlStyles) Control.Hide() Control.InitLayout() Control.Invalidate(Region) Control.Invalidate(Region, bool) Control.Invalidate() Control.Invalidate(bool) Control.Invalidate(Rectangle) Control.Invalidate(Rectangle, bool) Control.Invoke(Action) Control.Invoke(Delegate) Control.Invoke(Delegate, params object[]) Control.Invoke(Func) Control.InvokePaint(Control, PaintEventArgs) Control.InvokePaintBackground(Control, PaintEventArgs) Control.IsKeyLocked(Keys) Control.IsInputChar(char) Control.IsInputKey(Keys) Control.IsMnemonic(char, string) Control.LogicalToDeviceUnits(int) Control.LogicalToDeviceUnits(Size) Control.ScaleBitmapLogicalToDevice(ref Bitmap) Control.NotifyInvalidate(Rectangle) Control.InvokeOnClick(Control, EventArgs) Control.OnAutoSizeChanged(EventArgs) Control.OnBackColorChanged(EventArgs) Control.OnBindingContextChanged(EventArgs) Control.OnCausesValidationChanged(EventArgs) Control.OnContextMenuStripChanged(EventArgs) Control.OnCursorChanged(EventArgs) Control.OnDataContextChanged(EventArgs) Control.OnDockChanged(EventArgs) Control.OnForeColorChanged(EventArgs) Control.OnNotifyMessage(Message) Control.OnParentBackColorChanged(EventArgs) Control.OnParentBackgroundImageChanged(EventArgs) Control.OnParentBindingContextChanged(EventArgs) Control.OnParentCursorChanged(EventArgs) Control.OnParentDataContextChanged(EventArgs) Control.OnParentEnabledChanged(EventArgs) Control.OnParentFontChanged(EventArgs) Control.OnParentForeColorChanged(EventArgs) Control.OnParentRightToLeftChanged(EventArgs) Control.OnParentVisibleChanged(EventArgs) Control.OnPrint(PaintEventArgs) Control.OnTabIndexChanged(EventArgs) Control.OnTabStopChanged(EventArgs) Control.OnClick(EventArgs) Control.OnClientSizeChanged(EventArgs) Control.OnControlAdded(ControlEventArgs) Control.OnControlRemoved(ControlEventArgs) Control.OnLocationChanged(EventArgs) Control.OnDoubleClick(EventArgs) Control.OnDragEnter(DragEventArgs) Control.OnDragOver(DragEventArgs) Control.OnDragLeave(EventArgs) Control.OnDragDrop(DragEventArgs) Control.OnGiveFeedback(GiveFeedbackEventArgs) Control.InvokeGotFocus(Control, EventArgs) Control.OnHelpRequested(HelpEventArgs) Control.OnInvalidated(InvalidateEventArgs) Control.OnKeyDown(KeyEventArgs) Control.OnKeyPress(KeyPressEventArgs) Control.OnKeyUp(KeyEventArgs) Control.OnLeave(EventArgs) Control.InvokeLostFocus(Control, EventArgs) Control.OnLostFocus(EventArgs) Control.OnMarginChanged(EventArgs) Control.OnMouseDoubleClick(MouseEventArgs) Control.OnMouseClick(MouseEventArgs) Control.OnMouseCaptureChanged(EventArgs) Control.OnMouseDown(MouseEventArgs) Control.OnMouseEnter(EventArgs) Control.OnMouseLeave(EventArgs) Control.OnDpiChangedBeforeParent(EventArgs) Control.OnDpiChangedAfterParent(EventArgs) Control.OnMouseHover(EventArgs) Control.OnMouseMove(MouseEventArgs) Control.OnMouseUp(MouseEventArgs) Control.OnQueryContinueDrag(QueryContinueDragEventArgs) Control.OnRegionChanged(EventArgs) Control.OnPreviewKeyDown(PreviewKeyDownEventArgs) Control.OnSizeChanged(EventArgs) Control.OnChangeUICues(UICuesEventArgs) Control.OnSystemColorsChanged(EventArgs) Control.OnValidating(CancelEventArgs) Control.OnValidated(EventArgs) Control.PerformLayout() Control.PerformLayout(Control, string) Control.PointToClient(Point) Control.PointToScreen(Point) Control.PreProcessMessage(ref Message) Control.PreProcessControlMessage(ref Message) Control.ProcessKeyEventArgs(ref Message) Control.ProcessKeyMessage(ref Message) Control.RaiseDragEvent(object, DragEventArgs) Control.RaisePaintEvent(object, PaintEventArgs) Control.RecreateHandle() Control.RectangleToClient(Rectangle) Control.RectangleToScreen(Rectangle) Control.ReflectMessage(nint, ref Message) Control.Refresh() Control.ResetMouseEventArgs() Control.ResetText() Control.ResumeLayout() Control.ResumeLayout(bool) Control.Scale(SizeF) Control.Select() Control.SelectNextControl(Control, bool, bool, bool, bool) Control.SendToBack() Control.SetBounds(int, int, int, int) Control.SetBounds(int, int, int, int, BoundsSpecified) Control.SizeFromClientSize(Size) Control.SetStyle(ControlStyles, bool) Control.SetTopLevel(bool) Control.RtlTranslateAlignment(HorizontalAlignment) Control.RtlTranslateAlignment(LeftRightAlignment) Control.RtlTranslateAlignment(ContentAlignment) Control.RtlTranslateHorizontal(HorizontalAlignment) Control.RtlTranslateLeftRight(LeftRightAlignment) Control.RtlTranslateContent(ContentAlignment) Control.Show() Control.SuspendLayout() Control.Update() Control.UpdateBounds() Control.UpdateBounds(int, int, int, int) Control.UpdateBounds(int, int, int, int, int, int) Control.UpdateZOrder() Control.UpdateStyles() Control.OnImeModeChanged(EventArgs) Control.InvokeAsync(Action, CancellationToken) Control.InvokeAsync(Func, CancellationToken) Control.InvokeAsync(Func, CancellationToken) Control.InvokeAsync(Func>, CancellationToken) Control.AccessibilityObject Control.AccessibleDefaultActionDescription Control.AccessibleDescription Control.AccessibleName Control.AccessibleRole Control.AllowDrop Control.Anchor Control.AutoScrollOffset Control.LayoutEngine Control.DataContext Control.BackgroundImage Control.BackgroundImageLayout Control.Bottom Control.Bounds Control.CanFocus Control.CanRaiseEvents Control.CanSelect Control.Capture Control.CausesValidation Control.CheckForIllegalCrossThreadCalls Control.ClientRectangle Control.CompanyName Control.ContainsFocus Control.ContextMenuStrip Control.Controls Control.Created Control.Cursor Control.DataBindings Control.DefaultBackColor Control.DefaultCursor Control.DefaultFont Control.DefaultForeColor Control.DefaultMargin Control.DefaultMaximumSize Control.DefaultMinimumSize Control.DefaultPadding Control.DeviceDpi Control.IsDisposed Control.Disposing Control.Dock Control.DoubleBuffered Control.Enabled Control.Focused Control.Font Control.FontHeight Control.ForeColor Control.Handle Control.HasChildren Control.Height Control.IsHandleCreated Control.InvokeRequired Control.IsAccessible Control.IsAncestorSiteInDesignMode Control.IsMirrored Control.Left Control.Margin Control.ModifierKeys Control.MouseButtons Control.MousePosition Control.Name Control.Parent Control.ProductName Control.ProductVersion Control.RecreatingHandle Control.Region Control.RenderRightToLeft Control.ResizeRedraw Control.Right Control.RightToLeft Control.ScaleChildren Control.Site Control.TabIndex Control.TabStop Control.Tag Control.Top Control.TopLevelControl Control.ShowKeyboardCues Control.ShowFocusCues Control.UseWaitCursor Control.Visible Control.Width Control.PreferredSize Control.Padding Control.ImeMode Control.ImeModeBase Control.PropagatingImeMode Control.BackColorChanged Control.BackgroundImageChanged Control.BackgroundImageLayoutChanged Control.BindingContextChanged Control.CausesValidationChanged Control.ClientSizeChanged Control.ContextMenuStripChanged Control.CursorChanged Control.DockChanged Control.EnabledChanged Control.FontChanged Control.ForeColorChanged Control.LocationChanged Control.MarginChanged Control.RegionChanged Control.RightToLeftChanged Control.SizeChanged Control.TabIndexChanged Control.TabStopChanged Control.TextChanged Control.VisibleChanged Control.Click Control.ControlAdded Control.ControlRemoved Control.DataContextChanged Control.DragDrop Control.DragEnter Control.DragOver Control.DragLeave Control.GiveFeedback Control.HandleCreated Control.HandleDestroyed Control.HelpRequested Control.Invalidated Control.PaddingChanged Control.Paint Control.QueryContinueDrag Control.QueryAccessibilityHelp Control.DoubleClick Control.Enter Control.GotFocus Control.KeyDown Control.KeyPress Control.KeyUp Control.Layout Control.Leave Control.LostFocus Control.MouseClick Control.MouseDoubleClick Control.MouseCaptureChanged Control.MouseDown Control.MouseEnter Control.MouseLeave Control.DpiChangedBeforeParent Control.DpiChangedAfterParent Control.MouseHover Control.MouseMove Control.MouseUp Control.MouseWheel Control.Move Control.PreviewKeyDown Control.Resize Control.ChangeUICues Control.StyleChanged Control.SystemColorsChanged Control.Validating Control.Validated Control.ParentChanged Control.ImeModeChanged Component.Dispose() Component.GetService(Type) Component.Container Component.DesignMode Component.Events Component.Disposed MarshalByRefObject.GetLifetimeService() MarshalByRefObject.InitializeLifetimeService() MarshalByRefObject.MemberwiseClone(bool) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Displayee Gets or sets the displayee object for rendering. public IDisplayee Displayee { get; set; } Property Value IDisplayee DisplayerMap See Call(string, params IDisplayee[]) to get the information. public static ConcurrentDictionary DisplayerMap { get; } Property Value ConcurrentDictionary RenderingCanvas The contained RenderingCanvas. public RenderingCanvas RenderingCanvas { get; } Property Value RenderingCanvas Methods Call(string, params IDisplayee[]) Create and obtain a RenderingForm if the key has not existed; Otherwise, the old one is obtained. displayees are set to the obtained RenderingForm. The dictionary of this function is DisplayerMap. public static RenderingForm Call(string key, params IDisplayee[] displayees) Parameters key string key displayees IDisplayee[] The displayees set to the obtained RenderingForm. Returns RenderingForm A RenderingForm obtained by the key. Dispose(bool) Clean up any resources being used. protected override void Dispose(bool disposing) Parameters disposing bool true if managed resources should be disposed; otherwise, false. GetDispEngine() Get DispEngine. public DispEngine GetDispEngine() Returns DispEngine DispEngine" }, "api/Hi.WinForm.Disp.html": { "href": "api/Hi.WinForm.Disp.html", @@ -4732,7 +4737,7 @@ "brief/dev-doc/basic/rendering/rendering-canvas/custom-implementation.html": { "href": "brief/dev-doc/basic/rendering/rendering-canvas/custom-implementation.html", "title": "Building Your Own Rendering Canvas | HiAPI-C# 2025", - "summary": "Building Your Own Rendering Canvas This guide provides detailed implementation information for creating your own RenderingCanvas using the DispEngine. By understanding these implementation details, you can customize the rendering component for specific application needs or create implementations for other UI frameworks. Note For Windows Applications: If you are developing for Windows systems, it is recommended to directly use the existing RenderingCanvas implementations in the Hi.WinForm or Hi.WpfPlus packages, rather than creating your own. These implementations are fully tested, optimized, and maintained. The implementation details provided in this document are primarily for educational purposes or for developers who need to port RenderingCanvas to other platforms/frameworks. Basic DispEngine Usage The DispEngine is designed to display objects that implement the IDisplayee interface. This is the fundamental purpose of DispEngine - to render displayable objects. Assign IDisplayee to DispEngine.Displayee. Core Implementation Pattern When implementing a custom RenderingCanvas for a UI platform, follow these key steps: Initialize UI Component - Set up the UI control properties and event handling Configure DispEngine - Create and properly initialize the DispEngine instance Set Up Rendering Pipeline - Implement buffer swapping mechanism for visualization Handle User Input - Map platform-specific input events to DispEngine methods Manage Component Lifecycle - Ensure proper resource management and cleanup Let's examine the actual implementations in WinForm and WPF frameworks to understand these patterns in practice. WinForm Implementation Details The WinForm implementation in Hi.WinForm combines Windows Forms controls with the DispEngine rendering system. Core Properties and Fields Here are the essential properties and fields defined in the WinForm implementation: /// /// . /// public DispEngine DispEngine { get; } // Constants and structures for WM_TOUCH private const int WM_TOUCH = 0x0240; private const int TOUCHEVENTF_MOVE = 0x0001; private const int TOUCHEVENTF_DOWN = 0x0002; private const int TOUCHEVENTF_UP = 0x0004; [StructLayout(LayoutKind.Sequential)] private struct TOUCHINPUT { public int x; public int y; public IntPtr hSource; public int dwID; public int dwFlags; public int dwMask; public int dwTime; public IntPtr dwExtraInfo; public int cxContact; public int cyContact; } [DllImport(\"user32.dll\")] private static extern bool RegisterTouchWindow(IntPtr hWnd, uint ulFlags); [DllImport(\"user32.dll\")] private static extern bool GetTouchInputInfo(IntPtr hTouchInput, int cInputs, [In, Out] TOUCHINPUT[] pInputs, int cbSize); [DllImport(\"user32.dll\")] private static extern void CloseTouchInputHandle(IntPtr lParam); Initialization The initialization code sets up event handlers and creates the DispEngine: /// /// Ctor. /// /// displayees public unsafe RenderingCanvas(params IDisplayee[] displayees) { // Configure the control's visual styles SetStyle(ControlStyles.Selectable, true); SetStyle(ControlStyles.OptimizedDoubleBuffer, false); SetStyle(ControlStyles.ContainerControl, false); SetStyle(ControlStyles.ResizeRedraw, false); DoubleBuffered = true; InitializeComponent(); Dock = DockStyle.Fill; // Connect event handlers for user input and window events this.Resize += RenderingCanvas_Resize; this.VisibleChanged += RenderingCanvas_VisibleChanged; this.MouseMove += RenderingCanvas_MouseMove; this.MouseDown += RenderingCanvas_MouseDown; this.MouseUp += RenderingCanvas_MouseUp; this.MouseWheel += RenderingCanvas_MouseWheel; this.KeyDown += RenderingCanvas_KeyDown; this.KeyUp += RenderingCanvas_KeyUp; // Add focus event handler this.GotFocus += RenderingCanvas_GotFocus; this.HandleCreated += OnHandleCreated; // Enable touch input and click events for the control this.SetStyle(ControlStyles.StandardClick, true); this.SetStyle(ControlStyles.StandardDoubleClick, true); this.TabStop = true; // Initialize the DispEngine with provided displayees DispEngine = new DispEngine(displayees); DispEngine.BackgroundColor = new Vec3d(0.1, 0.1, 0.5); DispEngine.BackgroundOpacity = 0.1; DispEngine.SetViewToHomeView(); DispEngine.ImageRequestAfterBufferSwapped += DispEngine_ImageRequestAfterBufferSwapped; // Set initial size and start the rendering engine this.Size = new System.Drawing.Size(500, 300); DispEngine.Start(this.ClientSize.Width, this.ClientSize.Height); } Rendering Pipeline The rendering pipeline processes images from DispEngine and displays them: private unsafe void DispEngine_ImageRequestAfterBufferSwapped(byte* bgra_unsignedbyte_pixels, int w, int h) { // Create a bitmap from the raw pixel data provided by DispEngine Bitmap bitmap; bitmap = new Bitmap(new Bitmap(w, h, w * 4, PixelFormat.Format32bppArgb, new IntPtr(bgra_unsignedbyte_pixels))); // Update the background image and dispose the previous one Image pre = this.BackgroundImage; this.BackgroundImage = bitmap; pre?.Dispose(); } Input Handling Windows Message Handling for Touch WinForm implementation intercepts Windows touch messages and forwards them to DispEngine: protected override void WndProc(ref Message m) { if (m.Msg == WM_TOUCH) { HandleTouchInput(m.WParam, m.LParam); return; } base.WndProc(ref m); } private void OnHandleCreated(object sender, EventArgs e) { // Register window to receive touch messages RegisterTouchWindow(this.Handle, 0); } private void HandleTouchInput(IntPtr wParam, IntPtr lParam) { int inputCount = wParam.ToInt32(); TOUCHINPUT[] inputs = new TOUCHINPUT[inputCount]; if (!GetTouchInputInfo(lParam, inputCount, inputs, Marshal.SizeOf(typeof(TOUCHINPUT)))) return; try { for (int i = 0; i < inputCount; i++) { TOUCHINPUT ti = inputs[i]; int touchId = ti.dwID; // Convert touch coordinates to client coordinates Point touchPoint = PointToClient(new Point(ti.x / 100, ti.y / 100)); if ((ti.dwFlags & TOUCHEVENTF_DOWN) != 0) { // Touch down event DispEngine.TouchDown(touchId, touchPoint.X, touchPoint.Y); this.Focus(); } else if ((ti.dwFlags & TOUCHEVENTF_MOVE) != 0) { // Touch move event DispEngine.TouchMove(touchId, touchPoint.X, touchPoint.Y); } else if ((ti.dwFlags & TOUCHEVENTF_UP) != 0) { // Touch up event DispEngine.TouchUp(touchId); } } } finally { CloseTouchInputHandle(lParam); } } The key aspect is mapping Windows touch events to DispEngine's touch API: // Inside HandleTouchInput method if ((ti.dwFlags & TOUCHEVENTF_DOWN) != 0) { // Touch down event - delegate to DispEngine DispEngine.TouchDown(touchId, touchPoint.X, touchPoint.Y); this.Focus(); } else if ((ti.dwFlags & TOUCHEVENTF_MOVE) != 0) { // Touch move event - delegate to DispEngine DispEngine.TouchMove(touchId, touchPoint.X, touchPoint.Y); } else if ((ti.dwFlags & TOUCHEVENTF_UP) != 0) { // Touch up event - delegate to DispEngine DispEngine.TouchUp(touchId); } Mouse Events private void RenderingCanvas_MouseMove(object sender, MouseEventArgs e) { // Update mouse position and handle drag transforms DispEngine.MouseMove(e.Location.X, e.Location.Y); DispEngine.MouseDragTransform(e.Location.X, e.Location.Y, new mouse_button_table__transform_view_by_mouse_drag_t() { LEFT_BUTTON = (long)MouseButtons.Left, RIGHT_BUTTON = (long)MouseButtons.Right }); } private void RenderingCanvas_MouseDown(object sender, MouseEventArgs e) { // Handle mouse button press DispEngine.MouseButtonDown((long)e.Button); this.Focus(); } private void RenderingCanvas_MouseUp(object sender, MouseEventArgs e) { // Handle mouse button release DispEngine.MouseButtonUp((long)e.Button); } private void RenderingCanvas_MouseWheel(object sender, MouseEventArgs e) { // Handle mouse wheel for zoom operations DispEngine.MouseWheel(0, e.Delta / 120); DispEngine.MouseWheelTransform(0, e.Delta / 120); } Keyboard Events /// protected override bool IsInputKey(Keys keyData) { //since in default, arrow does not trigger key event(keyDown and keyUp). return true; } private void RenderingCanvas_KeyDown(object sender, KeyEventArgs e) { Focus(); DispEngine.KeyDown((long)e.KeyData); // Map specific keys for view transformation long key = (long)e.KeyData; if (key == (long)Keys.LShiftKey || key == (long)Keys.RShiftKey || key == (long)Keys.ShiftKey) key = (long)Keys.Shift; DispEngine.KeyDownTransform(key, new key_table__transform_view_by_key_pressing_t() { HOME = (long)Keys.Home, PAGE_UP = (long)Keys.PageUp, PAGE_DOWN = (long)Keys.PageDown, F1 = (long)Keys.F1, F2 = (long)Keys.F2, F3 = (long)Keys.F3, F4 = (long)Keys.F4, SHIFT = (long)Keys.Shift, ARROW_LEFT = (long)Keys.Left, ARROW_RIGHT = (long)Keys.Right, ARROW_DOWN = (long)Keys.Down, ARROW_UP = (long)Keys.Up }); } private void RenderingCanvas_KeyUp(object sender, KeyEventArgs e) { DispEngine.KeyUp((long)e.KeyData); } Lifecycle Management Window event handling ensures proper state management: private void RenderingCanvas_Resize(object sender, EventArgs e) { // Notify DispEngine of size changes DispEngine.Resize(this.ClientSize.Width, this.ClientSize.Height); } private void RenderingCanvas_VisibleChanged(object sender, EventArgs e) { // Update visibility state in DispEngine DispEngine.IsVisible = this.Visible; } Resource Cleanup /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { // Dispose the DispEngine to free resources DispEngine.Dispose(); components.Dispose(); } base.Dispose(disposing); } WPF Implementation Details The WPF implementation uses WPF-specific controls and mechanisms but follows the same core pattern. Core Properties /// /// The DispEngine instance that handles rendering and user interactions /// public DispEngine DispEngine { get; } = new DispEngine(); /// /// Internal container for rendering content /// private UserControl DisplayerPane { get; } /// /// Dictionary to store touch point information /// private Dictionary TouchingPointsMap { get; } = new Dictionary(); /// /// Dictionary to store previous positions of touch points /// private Dictionary PreviousTouchingPointsMap { get; } = new Dictionary(); Initialization /// /// Initializes a new instance of the RenderingCanvas /// public RenderingCanvas() { DispEngine.BackgroundColor = new Vec3d(0.1, 0.1, 0.5); DispEngine.BackgroundOpacity = 0.1; // Configure the main control properties HorizontalAlignment = HorizontalAlignment.Stretch; VerticalAlignment = VerticalAlignment.Stretch; Focusable = true; KeyboardNavigation.SetDirectionalNavigation(this, KeyboardNavigationMode.Cycle); DataContextChanged += CanvasDataContextChanged; // Create and configure the display pane DisplayerPane = new UserControl(); DisplayerPane.HorizontalAlignment = HorizontalAlignment.Stretch; DisplayerPane.VerticalAlignment = VerticalAlignment.Stretch; DisplayerPane.Focusable = true; DisplayerPane.IsTabStop = true; // Connect event handlers for user input and window events DisplayerPane.SizeChanged += RenderingCanvas_SizeChanged; DisplayerPane.MouseMove += RenderingCanvas_MouseMove; DisplayerPane.MouseDown += RenderingCanvas_MouseDown; DisplayerPane.MouseUp += RenderingCanvas_MouseUp; DisplayerPane.MouseWheel += RenderingCanvas_MouseWheel; DisplayerPane.KeyDown += RenderingCanvas_KeyDown; DisplayerPane.KeyUp += RenderingCanvas_KeyUp; DisplayerPane.Loaded += RenderingCanvas_Loaded; DisplayerPane.Unloaded += RenderingCanvas_Unloaded; DisplayerPane.IsVisibleChanged += DisplayerPane_IsVisibleChanged; // Add touch event handlers DisplayerPane.TouchDown += RenderingCanvas_TouchDown; DisplayerPane.TouchMove += RenderingCanvas_TouchMove; DisplayerPane.TouchUp += RenderingCanvas_TouchUp; // Enable touch support this.IsManipulationEnabled = true; // Initialize power management InitializePowerManagement(); // Add the display pane to this control's content Content = DisplayerPane; } Rendering Pipeline /// /// Handles the buffer swapped event from DispEngine /// private unsafe void RenderingCanvas_BufferSwapped(byte* data, int w, int h) { if (data == null) return; Span bgra = new Span(data, w * h * 4); // Copy pixel data from DispEngine int n = w * h * 4; byte[] arr = new byte[n]; for (int i = 0; i < n; i++) arr[i] = data[i]; // Update UI on the UI thread DisplayerPane.Dispatcher.InvokeAsync(() => { BitmapSource bitmap = BitmapSource.Create(w, h, 1, 1, PixelFormats.Bgra32, null, arr, w * 4); DisplayerPane.Background = new ImageBrush(bitmap); }); } /// /// Handles the size changed event /// private void RenderingCanvas_SizeChanged(object sender, SizeChangedEventArgs e) { // Notify DispEngine of size changes DispEngine.Resize((int)DisplayerPane.RenderSize.Width, (int)DisplayerPane.RenderSize.Height); } /// /// Handles visibility changes /// private unsafe void DisplayerPane_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { // Update visibility state in DispEngine DispEngine.IsVisible = IsVisible; } Mouse and Keyboard Handling /// /// Helper method to get mouse button mask /// internal static HiMouseButtonMask GetMouseButtonMask(MouseDevice device) { HiMouseButtonMask mouseButtonMask = 0; mouseButtonMask.SetLeftPressed(device.LeftButton == MouseButtonState.Pressed); mouseButtonMask.SetMiddlePressed(device.MiddleButton == MouseButtonState.Pressed); mouseButtonMask.SetRightPressed(device.RightButton == MouseButtonState.Pressed); mouseButtonMask.SetXButton1Pressed(device.XButton1 == MouseButtonState.Pressed); mouseButtonMask.SetXButton2Pressed(device.XButton2 == MouseButtonState.Pressed); return mouseButtonMask; } /// /// Handles the mouse wheel event /// private void RenderingCanvas_MouseWheel(object sender, MouseWheelEventArgs e) { // Handle mouse wheel for zoom operations DispEngine.MouseWheel(0, e.Delta / 120); DispEngine.MouseWheelTransform(0, e.Delta / 120); } /// /// Handles the mouse up event /// private void RenderingCanvas_MouseUp(object sender, MouseButtonEventArgs e) { // Handle mouse button release DispEngine.MouseButtonUp((long)e.ChangedButton); (sender as UIElement)?.ReleaseMouseCapture(); } /// /// Handles the mouse down event /// private void RenderingCanvas_MouseDown(object sender, MouseButtonEventArgs e) { // Handle mouse button press DispEngine.MouseButtonDown((long)e.ChangedButton); DisplayerPane.Focus(); (sender as UIElement)?.CaptureMouse(); } /// /// Handles the mouse move event /// private void RenderingCanvas_MouseMove(object sender, MouseEventArgs e) { // Update mouse position and handle drag transforms Point p = e.GetPosition(DisplayerPane); DispEngine.MouseMove((int)p.X, (int)p.Y); DispEngine.MouseDragTransform((int)p.X, (int)p.Y, new mouse_button_table__transform_view_by_mouse_drag_t() { LEFT_BUTTON = (long)MouseButton.Left, RIGHT_BUTTON = (long)MouseButton.Right }); } /// /// Handles the key up event /// private void RenderingCanvas_KeyUp(object sender, KeyEventArgs e) { DispEngine.KeyUp((long)e.Key); } /// /// Handles the key down event /// private void RenderingCanvas_KeyDown(object sender, KeyEventArgs e) { DispEngine.KeyDown((long)e.Key); // Map specific keys for view transformation long key = (long)e.Key; if (key == (long)Key.RightShift) key = (long)Key.LeftShift; DispEngine.KeyDownTransform(key, new key_table__transform_view_by_key_pressing_t() { HOME = (long)Key.Home, PAGE_UP = (long)Key.PageUp, PAGE_DOWN = (long)Key.PageDown, F1 = (long)Key.F1, F2 = (long)Key.F2, F3 = (long)Key.F3, F4 = (long)Key.F4, SHIFT = (long)Key.LeftShift, ARROW_LEFT = (long)Key.Left, ARROW_RIGHT = (long)Key.Right, ARROW_DOWN = (long)Key.Down, ARROW_UP = (long)Key.Up }); } Lifecycle Management /// /// Handles window state changes (maximize, minimize, etc.) /// private unsafe void RenderingCanvas_StateChanged(object sender, EventArgs e) { switch ((sender as Window).WindowState) { case WindowState.Maximized: DispEngine.IsVisible = true; break; case WindowState.Minimized: DispEngine.IsVisible = false; break; case WindowState.Normal: DispEngine.IsVisible = true; break; } } /// /// Handles data context changes /// private unsafe void CanvasDataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { DispEngine pre = e.OldValue as DispEngine; DispEngine cur = e.NewValue as DispEngine; //child's binding event is triggered after IsVisible event and Load event. if (pre != null) //this section will never occur if the datacontext not set twice. { pre.Terminate(); pre.ImageRequestAfterBufferSwapped -= RenderingCanvas_BufferSwapped; } if (cur != null) { cur.ImageRequestAfterBufferSwapped += RenderingCanvas_BufferSwapped; cur.Start((int)DisplayerPane.RenderSize.Width, (int)DisplayerPane.RenderSize.Height); cur.IsVisible = IsVisible; } } /// /// Reference to the current window containing this control /// private Window currentWindow; /// /// Gets or sets the current window, connecting or disconnecting state change events /// Window CurrentWindow { get => currentWindow; set { if (currentWindow != null) currentWindow.StateChanged -= RenderingCanvas_StateChanged; currentWindow = value; if (currentWindow != null) currentWindow.StateChanged += RenderingCanvas_StateChanged; } } /// /// Handles the loaded event /// private unsafe void RenderingCanvas_Loaded(object sender, RoutedEventArgs e) { // Get the window containing this control CurrentWindow = Window.GetWindow(this); // Set up DispEngine rendering DispEngine.ImageRequestAfterBufferSwapped -= RenderingCanvas_BufferSwapped; DispEngine.ImageRequestAfterBufferSwapped += RenderingCanvas_BufferSwapped; DispEngine.Start((int)DisplayerPane.RenderSize.Width, (int)DisplayerPane.RenderSize.Height); DispEngine.IsVisible = IsVisible; } /// /// Handles the unloaded event /// private unsafe void RenderingCanvas_Unloaded(object sender, RoutedEventArgs e) { DispEngine.IsVisible = IsVisible; DispEngine.ImageRequestAfterBufferSwapped -= RenderingCanvas_BufferSwapped; CurrentWindow = null; } Resource Cleanup /// /// Flag to track disposed state /// private bool disposedValue; /// /// Disposes managed resources /// protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { // Unsubscribe from power events SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged; // Dispose the DispEngine to free resources DispEngine.Dispose(); } disposedValue = true; } } /// /// Public dispose method to free resources /// public void Dispose() { // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method Dispose(disposing: true); GC.SuppressFinalize(this); } Core DispEngine Integration Patterns 1. Initialization Sequence // Create DispEngine (optionally with displayees) var engine = new DispEngine(displayees); // Set up image buffer callback engine.ImageRequestAfterBufferSwapped += OnBufferSwapped; // Initialize with canvas size engine.Start(width, height); // Set initial view (optional) engine.SetViewToHomeView(); 2. Render Loop The rendering process follows this pattern: DispEngine processes IDisplayee objects Buffer is swapped and callback is triggered UI framework renders the buffer to screen User input triggers view updates Process repeats 3. Complete User Input Mapping All user interactions must be mapped to DispEngine methods: User Action DispEngine Method Mouse move MouseMove(int, int) Mouse drag MouseDragTransform(int, int, mouse_button_table__transform_view_by_mouse_drag_t) Mouse button MouseButtonDown(long) / MouseButtonUp(long) Mouse wheel MouseWheel(int, int) and MouseWheelTransform(int, int, double) Key press KeyDown(long) / KeyUp(long) and KeyDownTransform(long, key_table__transform_view_by_key_pressing_t) Touch events TouchDown(int, int, int) / TouchMove(int, int, int) / TouchUp(int) 4. Proper Resource Cleanup Resource management is critical for proper operation: // In dispose method DispEngine.ImageRequestAfterBufferSwapped -= OnBufferSwapped; DispEngine.Terminate(); DispEngine.Dispose(); Advanced Implementation Considerations When creating custom implementations, consider these aspects: View Manipulation Use SketchView to directly access or modify the view matrix: // Get current view matrix Mat4d currentView = engine.SketchView; // Apply custom rotation Mat4d rotation = Mat4d.RotateX(Math.PI/4); engine.SketchView = currentView * rotation; See Also DispEngine IDisplayee Vec2d Mat4d" + "summary": "Building Your Own Rendering Canvas This guide provides detailed implementation information for creating your own RenderingCanvas using the DispEngine. By understanding these implementation details, you can customize the rendering component for specific application needs or create implementations for other UI frameworks. Note For Windows Applications: If you are developing for Windows systems, it is recommended to directly use the existing RenderingCanvas implementations in the Hi.WinForm or Hi.WpfPlus packages, rather than creating your own. These implementations are fully tested, optimized, and maintained. The implementation details provided in this document are primarily for educational purposes or for developers who need to port RenderingCanvas to other platforms/frameworks. Basic DispEngine Usage The DispEngine is designed to display objects that implement the IDisplayee interface. This is the fundamental purpose of DispEngine - to render displayable objects. Assign IDisplayee to DispEngine.Displayee. Core Implementation Pattern When implementing a custom RenderingCanvas for a UI platform, follow these key steps: Initialize UI Component - Set up the UI control properties and event handling Configure DispEngine - Create and properly initialize the DispEngine instance Set Up Rendering Pipeline - Implement buffer swapping mechanism for visualization Handle User Input - Map platform-specific input events to DispEngine methods Manage Component Lifecycle - Ensure proper resource management and cleanup Let's examine the actual implementations in WinForm and WPF frameworks to understand these patterns in practice. WinForm Implementation Details The WinForm implementation in Hi.WinForm combines Windows Forms controls with the DispEngine rendering system. Core Properties and Fields Here are the essential properties and fields defined in the WinForm implementation: /// /// . /// public DispEngine DispEngine { get; } // Constants and structures for WM_TOUCH private const int WM_TOUCH = 0x0240; private const int TOUCHEVENTF_MOVE = 0x0001; private const int TOUCHEVENTF_DOWN = 0x0002; private const int TOUCHEVENTF_UP = 0x0004; [StructLayout(LayoutKind.Sequential)] private struct TOUCHINPUT { public int x; public int y; public IntPtr hSource; public int dwID; public int dwFlags; public int dwMask; public int dwTime; public IntPtr dwExtraInfo; public int cxContact; public int cyContact; } [DllImport(\"user32.dll\")] private static extern bool RegisterTouchWindow(IntPtr hWnd, uint ulFlags); [DllImport(\"user32.dll\")] private static extern bool GetTouchInputInfo(IntPtr hTouchInput, int cInputs, [In, Out] TOUCHINPUT[] pInputs, int cbSize); [DllImport(\"user32.dll\")] private static extern void CloseTouchInputHandle(IntPtr lParam); Initialization The initialization code sets up event handlers and creates the DispEngine: /// /// Ctor. /// /// displayees public unsafe RenderingCanvas(params IDisplayee[] displayees) { // Configure the control's visual styles SetStyle(ControlStyles.Selectable, true); SetStyle(ControlStyles.OptimizedDoubleBuffer, false); SetStyle(ControlStyles.ContainerControl, false); SetStyle(ControlStyles.ResizeRedraw, false); DoubleBuffered = true; InitializeComponent(); Dock = DockStyle.Fill; // Connect event handlers for user input and window events this.Resize += RenderingCanvas_Resize; this.VisibleChanged += RenderingCanvas_VisibleChanged; this.MouseMove += RenderingCanvas_MouseMove; this.MouseDown += RenderingCanvas_MouseDown; this.MouseUp += RenderingCanvas_MouseUp; this.MouseWheel += RenderingCanvas_MouseWheel; this.KeyDown += RenderingCanvas_KeyDown; this.KeyUp += RenderingCanvas_KeyUp; // Add focus event handler this.GotFocus += RenderingCanvas_GotFocus; this.HandleCreated += OnHandleCreated; // Enable touch input and click events for the control this.SetStyle(ControlStyles.StandardClick, true); this.SetStyle(ControlStyles.StandardDoubleClick, true); this.TabStop = true; // Initialize the DispEngine with provided displayees DispEngine = new DispEngine(displayees); DispEngine.BackgroundColor = new Vec3d(0.1, 0.1, 0.5); DispEngine.BackgroundOpacity = 0.1; DispEngine.SetViewToHomeView(); DispEngine.ImageRequestAfterBufferSwapped += DispEngine_ImageRequestAfterBufferSwapped; // Set initial size and start the rendering engine this.Size = new System.Drawing.Size(500, 300); DispEngine.Start(this.ClientSize.Width, this.ClientSize.Height); } Rendering Pipeline The rendering pipeline processes images from DispEngine and displays them: private unsafe void DispEngine_ImageRequestAfterBufferSwapped(byte* bgra_unsignedbyte_pixels, int w, int h) { // Create a bitmap from the raw pixel data provided by DispEngine Bitmap bitmap; bitmap = new Bitmap(new Bitmap(w, h, w * 4, PixelFormat.Format32bppArgb, new IntPtr(bgra_unsignedbyte_pixels))); // Update the background image and dispose the previous one Image pre = this.BackgroundImage; this.BackgroundImage = bitmap; pre?.Dispose(); } Input Handling Windows Message Handling for Touch WinForm implementation intercepts Windows touch messages and forwards them to DispEngine: /// /// Processes Windows messages, handling touch input and forwarding other messages to the base class. /// /// The Windows message to process. protected override void WndProc(ref Message m) { if (m.Msg == WM_TOUCH) { HandleTouchInput(m.WParam, m.LParam); return; } base.WndProc(ref m); } private void OnHandleCreated(object sender, EventArgs e) { // Register window to receive touch messages RegisterTouchWindow(this.Handle, 0); } private void HandleTouchInput(IntPtr wParam, IntPtr lParam) { int inputCount = wParam.ToInt32(); TOUCHINPUT[] inputs = new TOUCHINPUT[inputCount]; if (!GetTouchInputInfo(lParam, inputCount, inputs, Marshal.SizeOf(typeof(TOUCHINPUT)))) return; try { for (int i = 0; i < inputCount; i++) { TOUCHINPUT ti = inputs[i]; int touchId = ti.dwID; // Convert touch coordinates to client coordinates Point touchPoint = PointToClient(new Point(ti.x / 100, ti.y / 100)); if ((ti.dwFlags & TOUCHEVENTF_DOWN) != 0) { // Touch down event DispEngine.TouchDown(touchId, touchPoint.X, touchPoint.Y); this.Focus(); } else if ((ti.dwFlags & TOUCHEVENTF_MOVE) != 0) { // Touch move event DispEngine.TouchMove(touchId, touchPoint.X, touchPoint.Y); } else if ((ti.dwFlags & TOUCHEVENTF_UP) != 0) { // Touch up event DispEngine.TouchUp(touchId); } } } finally { CloseTouchInputHandle(lParam); } } The key aspect is mapping Windows touch events to DispEngine's touch API: // Inside HandleTouchInput method if ((ti.dwFlags & TOUCHEVENTF_DOWN) != 0) { // Touch down event - delegate to DispEngine DispEngine.TouchDown(touchId, touchPoint.X, touchPoint.Y); this.Focus(); } else if ((ti.dwFlags & TOUCHEVENTF_MOVE) != 0) { // Touch move event - delegate to DispEngine DispEngine.TouchMove(touchId, touchPoint.X, touchPoint.Y); } else if ((ti.dwFlags & TOUCHEVENTF_UP) != 0) { // Touch up event - delegate to DispEngine DispEngine.TouchUp(touchId); } Mouse Events private void RenderingCanvas_MouseMove(object sender, MouseEventArgs e) { // Update mouse position and handle drag transforms DispEngine.MouseMove(e.Location.X, e.Location.Y); DispEngine.MouseDragTransform(e.Location.X, e.Location.Y, new mouse_button_table__transform_view_by_mouse_drag_t() { LEFT_BUTTON = (long)MouseButtons.Left, RIGHT_BUTTON = (long)MouseButtons.Right }); } private void RenderingCanvas_MouseDown(object sender, MouseEventArgs e) { // Handle mouse button press DispEngine.MouseButtonDown((long)e.Button); this.Focus(); } private void RenderingCanvas_MouseUp(object sender, MouseEventArgs e) { // Handle mouse button release DispEngine.MouseButtonUp((long)e.Button); } private void RenderingCanvas_MouseWheel(object sender, MouseEventArgs e) { // Handle mouse wheel for zoom operations DispEngine.MouseWheel(0, e.Delta / 120); DispEngine.MouseWheelTransform(0, e.Delta / 120); } Keyboard Events /// protected override bool IsInputKey(Keys keyData) { //since in default, arrow does not trigger key event(keyDown and keyUp). return true; } private void RenderingCanvas_KeyDown(object sender, KeyEventArgs e) { Focus(); DispEngine.KeyDown((long)e.KeyData); // Map specific keys for view transformation long key = (long)e.KeyData; if (key == (long)Keys.LShiftKey || key == (long)Keys.RShiftKey || key == (long)Keys.ShiftKey) key = (long)Keys.Shift; DispEngine.KeyDownTransform(key, new key_table__transform_view_by_key_pressing_t() { HOME = (long)Keys.Home, PAGE_UP = (long)Keys.PageUp, PAGE_DOWN = (long)Keys.PageDown, F1 = (long)Keys.F1, F2 = (long)Keys.F2, F3 = (long)Keys.F3, F4 = (long)Keys.F4, SHIFT = (long)Keys.Shift, ARROW_LEFT = (long)Keys.Left, ARROW_RIGHT = (long)Keys.Right, ARROW_DOWN = (long)Keys.Down, ARROW_UP = (long)Keys.Up }); } private void RenderingCanvas_KeyUp(object sender, KeyEventArgs e) { DispEngine.KeyUp((long)e.KeyData); } Lifecycle Management Window event handling ensures proper state management: private void RenderingCanvas_Resize(object sender, EventArgs e) { // Notify DispEngine of size changes DispEngine.Resize(this.ClientSize.Width, this.ClientSize.Height); } private void RenderingCanvas_VisibleChanged(object sender, EventArgs e) { // Update visibility state in DispEngine DispEngine.IsVisible = this.Visible; } Resource Cleanup /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { // Dispose the DispEngine to free resources DispEngine.Dispose(); components.Dispose(); } base.Dispose(disposing); } WPF Implementation Details The WPF implementation uses WPF-specific controls and mechanisms but follows the same core pattern. Core Properties /// /// The DispEngine instance that handles rendering and user interactions /// public DispEngine DispEngine { get; } = new DispEngine(); /// /// Internal container for rendering content /// private UserControl DisplayerPane { get; } /// /// Dictionary to store touch point information /// private Dictionary TouchingPointsMap { get; } = new Dictionary(); /// /// Dictionary to store previous positions of touch points /// private Dictionary PreviousTouchingPointsMap { get; } = new Dictionary(); Initialization /// /// Initializes a new instance of the RenderingCanvas /// public RenderingCanvas() { DispEngine.BackgroundColor = new Vec3d(0.1, 0.1, 0.5); DispEngine.BackgroundOpacity = 0.1; // Configure the main control properties HorizontalAlignment = HorizontalAlignment.Stretch; VerticalAlignment = VerticalAlignment.Stretch; Focusable = true; KeyboardNavigation.SetDirectionalNavigation(this, KeyboardNavigationMode.Cycle); DataContextChanged += CanvasDataContextChanged; // Create and configure the display pane DisplayerPane = new UserControl(); DisplayerPane.HorizontalAlignment = HorizontalAlignment.Stretch; DisplayerPane.VerticalAlignment = VerticalAlignment.Stretch; DisplayerPane.Focusable = true; DisplayerPane.IsTabStop = true; // Connect event handlers for user input and window events DisplayerPane.SizeChanged += RenderingCanvas_SizeChanged; DisplayerPane.MouseMove += RenderingCanvas_MouseMove; DisplayerPane.MouseDown += RenderingCanvas_MouseDown; DisplayerPane.MouseUp += RenderingCanvas_MouseUp; DisplayerPane.MouseWheel += RenderingCanvas_MouseWheel; DisplayerPane.KeyDown += RenderingCanvas_KeyDown; DisplayerPane.KeyUp += RenderingCanvas_KeyUp; DisplayerPane.Loaded += RenderingCanvas_Loaded; DisplayerPane.Unloaded += RenderingCanvas_Unloaded; DisplayerPane.IsVisibleChanged += DisplayerPane_IsVisibleChanged; // Add touch event handlers DisplayerPane.TouchDown += RenderingCanvas_TouchDown; DisplayerPane.TouchMove += RenderingCanvas_TouchMove; DisplayerPane.TouchUp += RenderingCanvas_TouchUp; // Enable touch support this.IsManipulationEnabled = true; // Initialize power management InitializePowerManagement(); // Add the display pane to this control's content Content = DisplayerPane; } Rendering Pipeline /// /// Handles the buffer swapped event from DispEngine /// private unsafe void RenderingCanvas_BufferSwapped(byte* data, int w, int h) { if (data == null) return; Span bgra = new Span(data, w * h * 4); // Copy pixel data from DispEngine int n = w * h * 4; byte[] arr = new byte[n]; for (int i = 0; i < n; i++) arr[i] = data[i]; // Update UI on the UI thread DisplayerPane.Dispatcher.InvokeAsync(() => { BitmapSource bitmap = BitmapSource.Create(w, h, 1, 1, PixelFormats.Bgra32, null, arr, w * 4); DisplayerPane.Background = new ImageBrush(bitmap); }); } /// /// Handles the size changed event /// private void RenderingCanvas_SizeChanged(object sender, SizeChangedEventArgs e) { // Notify DispEngine of size changes DispEngine.Resize((int)DisplayerPane.RenderSize.Width, (int)DisplayerPane.RenderSize.Height); } /// /// Handles visibility changes /// private unsafe void DisplayerPane_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { // Update visibility state in DispEngine DispEngine.IsVisible = IsVisible; } Mouse and Keyboard Handling /// /// Helper method to get mouse button mask /// internal static HiMouseButtonMask GetMouseButtonMask(MouseDevice device) { HiMouseButtonMask mouseButtonMask = 0; mouseButtonMask.SetLeftPressed(device.LeftButton == MouseButtonState.Pressed); mouseButtonMask.SetMiddlePressed(device.MiddleButton == MouseButtonState.Pressed); mouseButtonMask.SetRightPressed(device.RightButton == MouseButtonState.Pressed); mouseButtonMask.SetXButton1Pressed(device.XButton1 == MouseButtonState.Pressed); mouseButtonMask.SetXButton2Pressed(device.XButton2 == MouseButtonState.Pressed); return mouseButtonMask; } /// /// Handles the mouse wheel event /// private void RenderingCanvas_MouseWheel(object sender, MouseWheelEventArgs e) { // Handle mouse wheel for zoom operations DispEngine.MouseWheel(0, e.Delta / 120); DispEngine.MouseWheelTransform(0, e.Delta / 120); } /// /// Handles the mouse up event /// private void RenderingCanvas_MouseUp(object sender, MouseButtonEventArgs e) { // Handle mouse button release DispEngine.MouseButtonUp((long)e.ChangedButton); (sender as UIElement)?.ReleaseMouseCapture(); } /// /// Handles the mouse down event /// private void RenderingCanvas_MouseDown(object sender, MouseButtonEventArgs e) { // Handle mouse button press DispEngine.MouseButtonDown((long)e.ChangedButton); DisplayerPane.Focus(); (sender as UIElement)?.CaptureMouse(); } /// /// Handles the mouse move event /// private void RenderingCanvas_MouseMove(object sender, MouseEventArgs e) { // Update mouse position and handle drag transforms Point p = e.GetPosition(DisplayerPane); DispEngine.MouseMove((int)p.X, (int)p.Y); DispEngine.MouseDragTransform((int)p.X, (int)p.Y, new mouse_button_table__transform_view_by_mouse_drag_t() { LEFT_BUTTON = (long)MouseButton.Left, RIGHT_BUTTON = (long)MouseButton.Right }); } /// /// Handles the key up event /// private void RenderingCanvas_KeyUp(object sender, KeyEventArgs e) { DispEngine.KeyUp((long)e.Key); } /// /// Handles the key down event /// private void RenderingCanvas_KeyDown(object sender, KeyEventArgs e) { DispEngine.KeyDown((long)e.Key); // Map specific keys for view transformation long key = (long)e.Key; if (key == (long)Key.RightShift) key = (long)Key.LeftShift; DispEngine.KeyDownTransform(key, new key_table__transform_view_by_key_pressing_t() { HOME = (long)Key.Home, PAGE_UP = (long)Key.PageUp, PAGE_DOWN = (long)Key.PageDown, F1 = (long)Key.F1, F2 = (long)Key.F2, F3 = (long)Key.F3, F4 = (long)Key.F4, SHIFT = (long)Key.LeftShift, ARROW_LEFT = (long)Key.Left, ARROW_RIGHT = (long)Key.Right, ARROW_DOWN = (long)Key.Down, ARROW_UP = (long)Key.Up }); } Lifecycle Management /// /// Handles window state changes (maximize, minimize, etc.) /// private unsafe void RenderingCanvas_StateChanged(object sender, EventArgs e) { switch ((sender as Window).WindowState) { case WindowState.Maximized: DispEngine.IsVisible = true; break; case WindowState.Minimized: DispEngine.IsVisible = false; break; case WindowState.Normal: DispEngine.IsVisible = true; break; } } /// /// Handles data context changes /// private unsafe void CanvasDataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { DispEngine pre = e.OldValue as DispEngine; DispEngine cur = e.NewValue as DispEngine; //child's binding event is triggered after IsVisible event and Load event. if (pre != null) //this section will never occur if the datacontext not set twice. { pre.Terminate(); pre.ImageRequestAfterBufferSwapped -= RenderingCanvas_BufferSwapped; } if (cur != null) { cur.ImageRequestAfterBufferSwapped += RenderingCanvas_BufferSwapped; cur.Start((int)DisplayerPane.RenderSize.Width, (int)DisplayerPane.RenderSize.Height); cur.IsVisible = IsVisible; } } /// /// Reference to the current window containing this control /// private Window currentWindow; /// /// Gets or sets the current window, connecting or disconnecting state change events /// Window CurrentWindow { get => currentWindow; set { if (currentWindow != null) currentWindow.StateChanged -= RenderingCanvas_StateChanged; currentWindow = value; if (currentWindow != null) currentWindow.StateChanged += RenderingCanvas_StateChanged; } } /// /// Handles the loaded event /// private unsafe void RenderingCanvas_Loaded(object sender, RoutedEventArgs e) { // Get the window containing this control CurrentWindow = Window.GetWindow(this); // Set up DispEngine rendering DispEngine.ImageRequestAfterBufferSwapped -= RenderingCanvas_BufferSwapped; DispEngine.ImageRequestAfterBufferSwapped += RenderingCanvas_BufferSwapped; DispEngine.Start((int)DisplayerPane.RenderSize.Width, (int)DisplayerPane.RenderSize.Height); DispEngine.IsVisible = IsVisible; } /// /// Handles the unloaded event /// private unsafe void RenderingCanvas_Unloaded(object sender, RoutedEventArgs e) { DispEngine.IsVisible = IsVisible; DispEngine.ImageRequestAfterBufferSwapped -= RenderingCanvas_BufferSwapped; CurrentWindow = null; } Resource Cleanup /// /// Flag to track disposed state /// private bool disposedValue; /// /// Disposes managed resources /// protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { // Unsubscribe from power events SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged; // Dispose the DispEngine to free resources DispEngine.Dispose(); } disposedValue = true; } } /// /// Public dispose method to free resources /// public void Dispose() { // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method Dispose(disposing: true); GC.SuppressFinalize(this); } Core DispEngine Integration Patterns 1. Initialization Sequence // Create DispEngine (optionally with displayees) var engine = new DispEngine(displayees); // Set up image buffer callback engine.ImageRequestAfterBufferSwapped += OnBufferSwapped; // Initialize with canvas size engine.Start(width, height); // Set initial view (optional) engine.SetViewToHomeView(); 2. Render Loop The rendering process follows this pattern: DispEngine processes IDisplayee objects Buffer is swapped and callback is triggered UI framework renders the buffer to screen User input triggers view updates Process repeats 3. Complete User Input Mapping All user interactions must be mapped to DispEngine methods: User Action DispEngine Method Mouse move MouseMove(int, int) Mouse drag MouseDragTransform(int, int, mouse_button_table__transform_view_by_mouse_drag_t) Mouse button MouseButtonDown(long) / MouseButtonUp(long) Mouse wheel MouseWheel(int, int) and MouseWheelTransform(int, int, double) Key press KeyDown(long) / KeyUp(long) and KeyDownTransform(long, key_table__transform_view_by_key_pressing_t) Touch events TouchDown(int, int, int) / TouchMove(int, int, int) / TouchUp(int) 4. Proper Resource Cleanup Resource management is critical for proper operation: // In dispose method DispEngine.ImageRequestAfterBufferSwapped -= OnBufferSwapped; DispEngine.Terminate(); DispEngine.Dispose(); Advanced Implementation Considerations When creating custom implementations, consider these aspects: View Manipulation Use SketchView to directly access or modify the view matrix: // Get current view matrix Mat4d currentView = engine.SketchView; // Apply custom rotation Mat4d rotation = Mat4d.RotateX(Math.PI/4); engine.SketchView = currentView * rotation; See Also DispEngine IDisplayee Vec2d Mat4d" }, "brief/dev-doc/basic/rendering/rendering-canvas/index.html": { "href": "brief/dev-doc/basic/rendering/rendering-canvas/index.html", @@ -4952,7 +4957,7 @@ "brief/dev-doc/build-hinc/player/player-tool-bar.html": { "href": "brief/dev-doc/build-hinc/player/player-tool-bar.html", "title": "Player Tool Bar | HiAPI-C# 2025", - "summary": "Player Tool Bar Layout Player Tool Bar Status Text Field Start Button Pause Button Run-One-Line Button Run-One-Step Button Stop Button Reset Button Behavior of Player Tool Bar See the example code to: complete the behavior of the buttons and Status Text Field. The rapidly used buttons should has hotkey. At least the following buttons: Run One Line Button Run One Step Button Start/Continue Pause Both webservice and win-desktop applications use LocalProjectService events for monitoring PacePlayer status changes. In webservice applications, the PlayerStatusService subscribes to these LocalProjectService events and broadcasts status changes via PlayerStatusHub using SignalR for real-time communication. Win-desktop applications can directly subscribe to LocalProjectService events for status updates. Alter the background color of the Status Text Field if the status changed. Warning style color Running Secondary style color Paused No Project Success style color Finished Ready The action of Reset Button should be async for user experience. Tip Use icon instead of text to the tool bar button. Run One Line Button and Run One Step Button use the same icon, use the different color to resolve them. Run One Line Button > default color with green seasoned Run One Step Button > default color with blue seasoned The other button use the default color is enough. Source Code Path See this page for git repository. WPF Application Source Code Path Play/PlayerToolBar Web Page Application Source Code Path wwwroot/player/player-tool-bar.js Players/PlayerController.cs Players/PlayerStatusHub.cs Players/PlayerStatusService.cs SignalR Implementation (Webapi Only) PlayerStatusHub provides real-time player status updates, with methods GetPlayerStatus() and event PlayerStatusUpdated. PlayerStatusService monitors PacePlayer events (IsRunningChangedEvent, IsLockedChangedEvent, IsFinishedChangedEvent, ResetedEvent) and broadcasts changes via SignalR. The JavaScript component connects to /playerStatusHub and listens for status updates. API endpoints include /api/player/start, /api/player/pause, /api/player/resume, /api/player/run-line, /api/player/run-step, /api/player/stop, and /api/player/reset. Razor Page Source Code @using Hi.Common.PathUtils; @using Hi.HiNcKits; @using Hi.MachiningProcs @using Hi.MillingProcs; @using Hi.Numerical.FilePlayers; @inject HiNcHost hiNcHost @{ MachiningProject machiningProject = hiNcHost.MachiningProject; var localProjectService = hiNcHost.LocalProjectService; bool disabledByMachiningProject = machiningProject == null; }
    @if (machiningProject == null) { } else if (!localProjectService.PacePlayer.IsLocked) { } else { }
    using Hi.Common; using Hi.MachiningProcs; using Hi.Parallels; using Microsoft.AspNetCore.Components; namespace HiNcRcl.Areas.Player { public partial class PlayerButtonGroup : IAsyncDisposable { [Parameter] public string Tid { set; get; } = System.Guid.NewGuid().ToString(); StringLocalizer Loc { get; } = new StringLocalizer(typeof(PlayerDiv)); SemaphoreSlim DisposeSemaphore { get; } = new SemaphoreSlim(1); MachiningProject MachiningProject => hiNcHost.MachiningProject; LocalProjectService LocalProjectService => hiNcHost.LocalProjectService; bool disposedValue = false; /// protected override async Task OnAfterRenderAsync(bool firstRender) { base.OnAfterRender(firstRender); if (firstRender) { using var _ = await DisposeSemaphore.EmbraceAsync(); if (disposedValue) return; var machiningProject = MachiningProject; if (machiningProject != null) { LocalProjectService.PacePlayer.IsLockedChangedEvent += EnumerablePlayer_IsLockedEventHandler; LocalProjectService.PacePlayer.IsRunningChangedEvent += EnumerablePlayer_IsLockedEventHandler; LocalProjectService.PacePlayer.IsFinishedChangedEvent += EnumerablePlayer_IsLockedEventHandler; } } } /// public async ValueTask DisposeAsync() { using var _ = await DisposeSemaphore.EmbraceAsync(); var machiningProject = MachiningProject; if (machiningProject != null) { LocalProjectService.PacePlayer.IsLockedChangedEvent -= EnumerablePlayer_IsLockedEventHandler; LocalProjectService.PacePlayer.IsRunningChangedEvent -= EnumerablePlayer_IsLockedEventHandler; LocalProjectService.PacePlayer.IsFinishedChangedEvent -= EnumerablePlayer_IsLockedEventHandler; } disposedValue = true; await ValueTask.CompletedTask; } private void EnumerablePlayer_IsLockedEventHandler(bool obj) { InvokeAsync(StateHasChanged).ConfigureAwait(false); } public async Task StartOrContinue() { await Task.Run(() => { var pacePlayer = LocalProjectService.PacePlayer; if (!pacePlayer.IsLocked) { pacePlayer.Start(); } else if (!pacePlayer.IsRunning && !pacePlayer.IsFinished) { pacePlayer.Resume(); } }).ShowIfCatched(this); } public async Task Pause() { await Task.Run(() => { LocalProjectService.PacePlayer.Pause(); }).ShowIfCatched(this); } public async Task RunToLineEnd() { await Task.Run(() => { LocalProjectService.NcRunner.RunToLineEnd(); }).ShowIfCatched(this); } public async Task RunToNextPace() { await Task.Run(() => { LocalProjectService.PacePlayer.RunToNextPace(); }).ShowIfCatched(this); } public async Task Break() { await Task.Run(() => { LocalProjectService.PacePlayer.Terminate(); }).ShowIfCatched(this); } public async Task Reset() { await Task.Run(() => { LocalProjectService.PacePlayer.Reset(); }).ShowIfCatched(this); } } }" + "summary": "Player Tool Bar Layout Player Tool Bar Status Text Field Start Button Pause Button Run-One-Line Button Run-One-Step Button Stop Button Reset Button Behavior of Player Tool Bar See the example code to: complete the behavior of the buttons and Status Text Field. The rapidly used buttons should has hotkey. At least the following buttons: Run One Line Button Run One Step Button Start/Continue Pause Both webservice and win-desktop applications use LocalProjectService events for monitoring PacePlayer status changes. In webservice applications, the PlayerStatusService subscribes to these LocalProjectService events and broadcasts status changes via PlayerStatusHub using SignalR for real-time communication. Win-desktop applications can directly subscribe to LocalProjectService events for status updates. Alter the background color of the Status Text Field if the status changed. Warning style color Running Secondary style color Paused No Project Success style color Finished Ready The action of Reset Button should be async for user experience. Tip Use icon instead of text to the tool bar button. Run One Line Button and Run One Step Button use the same icon, use the different color to resolve them. Run One Line Button > default color with green seasoned Run One Step Button > default color with blue seasoned The other button use the default color is enough. Source Code Path See this page for git repository. WPF Application Source Code Path Play/PlayerToolBar Web Page Application Source Code Path wwwroot/player/player-tool-bar.js Players/PlayerController.cs Players/PlayerStatusHub.cs Players/PlayerStatusService.cs SignalR Implementation (Webapi Only) PlayerStatusHub provides real-time player status updates, with methods GetPlayerStatus() and event PlayerStatusUpdated. PlayerStatusService monitors PacePlayer events (IsRunningChangedEvent, IsLockedChangedEvent, IsFinishedChangedEvent, ResetedEvent) and broadcasts changes via SignalR. The JavaScript component connects to /playerStatusHub and listens for status updates. API endpoints include /api/player/start, /api/player/pause, /api/player/resume, /api/player/run-line, /api/player/run-step, /api/player/stop, and /api/player/reset. Razor Page Source Code @using Hi.Common.PathUtils; @using Hi.HiNcKits; @using Hi.MachiningProcs @using Hi.MillingProcs; @using Hi.Numerical.FilePlayers; @inject HiNcHost hiNcHost @{ MachiningProject machiningProject = hiNcHost.MachiningProject; var localProjectService = hiNcHost.LocalProjectService; bool disabledByMachiningProject = machiningProject == null; }
    @if (machiningProject == null) { } else if (!localProjectService.PacePlayer.IsLocked) { } else { }
    using Hi.Common; using Hi.MachiningProcs; using Hi.Parallels; using Microsoft.AspNetCore.Components; namespace HiNcRcl.Areas.Player { public partial class PlayerButtonGroup : IAsyncDisposable { [Parameter] public string Tid { set; get; } = System.Guid.NewGuid().ToString(); StringLocalizer Loc { get; } = new StringLocalizer(typeof(PlayerDiv)); SemaphoreSlim DisposeSemaphore { get; } = new SemaphoreSlim(1); MachiningProject MachiningProject => hiNcHost.MachiningProject; LocalProjectService LocalProjectService => hiNcHost.LocalProjectService; bool disposedValue = false; /// protected override async Task OnAfterRenderAsync(bool firstRender) { base.OnAfterRender(firstRender); if (firstRender) { using var _ = await DisposeSemaphore.EmbraceAsync(); if (disposedValue) return; LocalProjectService.PacePlayer.IsLockedChangedEvent += EnumerablePlayer_IsLockedEventHandler; LocalProjectService.PacePlayer.IsRunningChangedEvent += EnumerablePlayer_IsLockedEventHandler; LocalProjectService.PacePlayer.IsFinishedChangedEvent += EnumerablePlayer_IsLockedEventHandler; } } /// public async ValueTask DisposeAsync() { using var _ = await DisposeSemaphore.EmbraceAsync(); LocalProjectService.PacePlayer.IsLockedChangedEvent -= EnumerablePlayer_IsLockedEventHandler; LocalProjectService.PacePlayer.IsRunningChangedEvent -= EnumerablePlayer_IsLockedEventHandler; LocalProjectService.PacePlayer.IsFinishedChangedEvent -= EnumerablePlayer_IsLockedEventHandler; disposedValue = true; await ValueTask.CompletedTask; } private void EnumerablePlayer_IsLockedEventHandler(bool obj) { InvokeAsync(StateHasChanged).ConfigureAwait(false); } public async Task StartOrContinue() { await Task.Run(() => { var pacePlayer = LocalProjectService.PacePlayer; if (!pacePlayer.IsLocked) { pacePlayer.Start(); } else if (!pacePlayer.IsRunning && !pacePlayer.IsFinished) { pacePlayer.Resume(); } }).ShowIfCatched(this); } public async Task Pause() { await Task.Run(() => { LocalProjectService.PacePlayer.Pause(); }).ShowIfCatched(this); } public async Task RunToLineEnd() { await Task.Run(() => { LocalProjectService.NcRunner.RunToLineEnd(); }).ShowIfCatched(this); } public async Task RunToNextPace() { await Task.Run(() => { LocalProjectService.PacePlayer.RunToNextPace(); }).ShowIfCatched(this); } public async Task Break() { await Task.Run(() => { LocalProjectService.PacePlayer.Terminate(); }).ShowIfCatched(this); } public async Task Reset() { await Task.Run(() => { LocalProjectService.PacePlayer.Reset(); }).ShowIfCatched(this); } } }" }, "brief/dev-doc/build-hinc/player/selected-step-info-panel.html": { "href": "brief/dev-doc/build-hinc/player/selected-step-info-panel.html", @@ -5052,7 +5057,7 @@ "brief/dev-doc/release-note/index.html": { "href": "brief/dev-doc/release-note/index.html", "title": "Release Note | HiAPI-C# 2025", - "summary": "Release Note HiNc Packages Version 3.1.102 Separate resource files (Resource, wwwroot, Doc) to HiNc-Resource nuget package for smaller package size Add ScaledFeedPerCycle function for scaled feed-per-cycle machining motion resolution Upgrade target framework to .NET 10.0 Various code cleanup and improvements HiNc Packages Version 3.1.100 Refactor project architecture: split runtime functions from MachiningProject to LocalProjectService for better separation of concerns Improve MillingTraining module with separate lead and result parameter templates for more accurate cutting parameter training Separate C++ library for code protection Add UTF-8 file path support for runtime geometry IO operations Improve CsvRunner with enhanced time mapping pattern Various architecture improvements and bug fixes HiNc Packages Version 3.1.91 Add NcOptimizationEmbeddedLogMode to control embedded log detail level (None/SimpleLog/FullLog) (see 嵌入式日誌註解). Fix bug of NcOptProc duplicated feedrate assignment HiNc Packages Version 3.1.90 Rename optimization log API EnableIndividualStepAdjustmentLog Fix crash from workpiece displaying with specific mechanical topology setting Improve .flatproc.log output to maintain step order during parallel computation Various stability improvements and bug fixes HiNc Packages Version 3.1.86 Re-build NcOptProc with stricter optimization logics Add optimization logging features (see 優化日誌): .flatproc.log file output for optimization process analysis Embedded log comments in optimized NC file marking source lines with (src) suffix Fix cutting depth and width accuracy by bounding-box method with workpiece surface Fix collision check error during concurrent changing collidable object Various stability improvements and bug fixes HiNc Packages Version 3.1.84 Optimize memory usage by shrinking map-size of clStripPos Fix design pattern of cutting parameter training module (MillingTraining) Add LoadCuttingParaByFile function to load cutting parameters from file Improve CsvRunner actual time parsing: automatically calculate step duration from actual time when duration is not provided Enhance message handling in RuntimeApi by unifying SessionMessageHost usage Improve optimization performance with better task scheduling Various performance improvements and bug fixes HiNc Packages Version 3.1.75 Add actual time tracking functionality (ActualTime) Various stability improvements and bug fixes HiNc Packages Version 3.1.74 Rename class MillingCutterOptLimit to MillingCutterOptOption Add physics simulation function for relief face collision depth detection (ReliefFaceCollidingDepth_mm) and optimization (EnableLimitByReliefAngle) Add UpdateNcOptOption function to step processing Fix step ordering bug from concurrent processing Fix ClStrip shrinking to zero issue" + "summary": "Release Note HiNc Packages Version 3.1.106 Rename mapping API for clearer naming: ReadCsvByTimeInterpolation → MapSingleByCsvFile (one-to-one mapping) MapByActualTime → MapSeriesByCsvFile (one-to-many mapping) Unify CSV column tags to MappingUtil for consistent data mapping Fix ChartRange manipulation to be time-based instead of step-based for more accurate time chart display Tune thread priority for machining parallel processing to improve UI responsiveness during simulation Various code cleanup and improvements HiNc Packages Version 3.1.102 Separate resource files (Resource, wwwroot, Doc) to HiNc-Resource nuget package for smaller package size Add ScaledFeedPerCycle function for scaled feed-per-cycle machining motion resolution Upgrade target framework to .NET 10.0 Various code cleanup and improvements HiNc Packages Version 3.1.100 Refactor project architecture: split runtime functions from MachiningProject to LocalProjectService for better separation of concerns Improve MillingTraining module with separate lead and result parameter templates for more accurate cutting parameter training Separate C++ library for code protection Add UTF-8 file path support for runtime geometry IO operations Improve CsvRunner with enhanced time mapping pattern Various architecture improvements and bug fixes HiNc Packages Version 3.1.91 Add NcOptimizationEmbeddedLogMode to control embedded log detail level (None/SimpleLog/FullLog) (see 嵌入式日誌註解). Fix bug of NcOptProc duplicated feedrate assignment HiNc Packages Version 3.1.90 Rename optimization log API EnableIndividualStepAdjustmentLog Fix crash from workpiece displaying with specific mechanical topology setting Improve .flatproc.log output to maintain step order during parallel computation Various stability improvements and bug fixes HiNc Packages Version 3.1.86 Re-build NcOptProc with stricter optimization logics Add optimization logging features (see 優化日誌): .flatproc.log file output for optimization process analysis Embedded log comments in optimized NC file marking source lines with (src) suffix Fix cutting depth and width accuracy by bounding-box method with workpiece surface Fix collision check error during concurrent changing collidable object Various stability improvements and bug fixes HiNc Packages Version 3.1.84 Optimize memory usage by shrinking map-size of clStripPos Fix design pattern of cutting parameter training module (MillingTraining) Add LoadCuttingParaByFile function to load cutting parameters from file Improve CsvRunner actual time parsing: automatically calculate step duration from actual time when duration is not provided Enhance message handling in RuntimeApi by unifying SessionMessageHost usage Improve optimization performance with better task scheduling Various performance improvements and bug fixes HiNc Packages Version 3.1.75 Add actual time tracking functionality (ActualTime) Various stability improvements and bug fixes HiNc Packages Version 3.1.74 Rename class MillingCutterOptLimit to MillingCutterOptOption Add physics simulation function for relief face collision depth detection (ReliefFaceCollidingDepth_mm) and optimization (EnableLimitByReliefAngle) Add UpdateNcOptOption function to step processing Fix step ordering bug from concurrent processing Fix ClStrip shrinking to zero issue" }, "brief/dev-doc/system-requirements.html": { "href": "brief/dev-doc/system-requirements.html", @@ -5292,7 +5297,7 @@ "brief/user-guide/zh-Hant/output/simulation-step-output.html": { "href": "brief/user-guide/zh-Hant/output/simulation-step-output.html", "title": "仿真步輸出資訊(Simulation Step Output) | HiAPI-C# 2025", - "summary": "仿真步輸出資訊(Simulation Step Output) 完整欄位與即時最新對照請見 MachiningStep。 若需要評估是否有斷刀風險,亦可參考「評估製程可加工性」。 步(Step)指仿真中的單次運算,在切削過程中預設為主軸一轉(可透過 仿真解析度 修改)。 本頁彙整模擬每一步(Step)的主要輸出資訊,涵蓋來源行、運動學、載荷、力/力矩、功率、熱與磨耗等,協助快速理解當步的加工狀態。 步資訊包含了兩步之間時間的資料(即從上一步到這一步之間的資料),所以資訊中許多項目為該時間段的簡化資料,依照簡化方式會出現的常見前綴命名有平均數(Avg)、極值(Min,Max)、極值差(Delta)、絕對值最大值(MaxAbs)等。 基本來源資訊 FileNo / LineNo / FilePath / LineText / FlagsText:對應來源 NC 指令的檔案/行資訊與標記。 StepIndex:步序索引。 ToolId:當前使用之刀具 ID。 時間與運動 AccumulatedTime:模擬累積時間。 StepDuration:本步持續時間(預設每轉模式:一步等於主軸一轉)。 BeginSpindleAngle_deg:本步開始時主軸角度位移。 Cl(Cutter Location):刀位點(含 IJK 法向)。 MoveOnProgramCoordinate、MovingLength_mm:程式座標系上的位移向量與長度。 Feedrate_mmdmin / SpindleSpeed_rpm / CuttingSpeed_mmds:進給率、主軸轉速、切削速度。 FeedPerTooth_mm / FeedPerCycle_mm / ToothArcDuration_s / SpindleCyclePeriod_s:每齒/每循環進給、齒弧時間與主軸循環週期。 切削接觸與去除率 IsTouched:是否切削接觸。 CuttingWidth_mm(ae)/ CuttingDepth_mm(ap):切寬/切深。 Mrr_mm3ds:材料去除率。 ProgramSideCusp_um、SideCuspList_um:由程式進給與半徑估算之側向殘留高與分佈。 晶屑(Chip) ChipThickness_mm(/um):晶屑厚度。 ChipVolume_mm3:晶屑體積。 ChipMass_mg:晶屑質量。 力與力矩(含映射比較) 座標系提示:本節多數欄位會標示所屬座標系(如 [W] 工件、[TR] 刀具行進、[SR] 主軸旋轉)。若需座標系定義與示意,請參考「銑削物理座標系」。 AvgForceToToolOnToolRunningCoordinate_N、MaxAbsForce_N:平均/最大受力。 各種平均/最大力矩(對刀尖、對感測點;刀運座標系/主軸旋轉座標系/工件程式座標系)。 AvgAbsTorque_Nm:平均絕對扭矩。 與量測映射比較:AvgMomentXyByMapping_Nm、AvgAbsTorqueByMapping_Nm、誤差比與符號化誤差關聯等指標。 功率、扭矩與能耗 SpindleInputPower_W(輸入功率):進入主軸的能量。 SpindleOutputPower_W(輸出功率):經過主軸能量損耗後,作用於切削端的能量,亦即造成工件與切屑形變、溫度改變的能量。 MaxSpindlePowerRatio(最大主軸功率比率):輸入功率 / 基於主軸性能的瞬間最大功率。 InfInsistentSpindlePowerRatio(持續主軸功率比率):輸入功率 / 基於主軸性能的不限時最大功率。 AccumulatedSpindleEnergyConsumption_kWh:主軸累積能耗。 Max/Continue Spindle Torque Ratio:主軸扭矩瞬時/持續比率。 熱與溫度 CutterBodyTemperature_C / CutterDermisTemperature_C / WorkpieceDermisTemperature_C / ChipTemperature_C:刀體、刀表、工件表面、晶屑溫度。 GetCutterDermisTemperature_C(depth_mm) / GetCutterDermisAvgTemperature_C(depth_mm):刀具表層深度溫度/平均溫度。 ThermalStress_MPa / ThermalYieldRatio:熱應力與熱塑刃應力比。 磨耗與變形 磨耗模型、評估指標與適用情境,請見「刀具壽命與磨耗」。 InstantCraterWear_um / AccumulatedCraterWear_um:瞬時/累積月牙洼磨耗。 AccumulatedFlankWearDepth_um / AccumulatedFlankWearWidth_um:累積後刀面磨耗深度/寬度。 Tip/Edge Deflection(um):刀尖與底刃撓度(含最大值與差量),以及 ReCutDepth_um(再切削深度)。" + "summary": "仿真步輸出資訊(Simulation Step Output) 完整欄位與即時最新對照請見 MachiningStep。 若需要評估是否有斷刀風險,亦可參考「評估製程可加工性」。 步(Step)指仿真中的單次運算,在切削過程中預設為主軸一轉(可透過 仿真解析度 修改)。 本頁彙整模擬每一步(Step)的主要輸出資訊,涵蓋來源行、運動學、載荷、力/力矩、功率、熱與磨耗等,協助快速理解當步的加工狀態。 步資訊包含了兩步之間時間的資料(即從上一步到這一步之間的資料),所以資訊中許多項目為該時間段的簡化資料,依照簡化方式會出現的常見前綴命名有平均數(Avg)、極值(Min,Max)、極值差(Delta)、絕對值最大值(MaxAbs)等。 基本來源資訊 FileNo / LineNo / FilePath / LineText / FlagsText:對應來源 NC 指令的檔案/行資訊與標記。 StepIndex:步序索引。 ToolId:當前使用之刀具 ID。 時間與運動 AccumulatedTime:模擬累積時間。 StepDuration:本步持續時間(預設每轉模式:一步等於主軸一轉)。 BeginSpindleAngle_deg:本步開始時主軸角度位移。 Cl(Cutter Location):刀位點(含 IJK 法向)。 MoveOnProgramCoordinate、MovingLength_mm:程式座標系上的位移向量與長度。 Feedrate_mmdmin / SpindleSpeed_rpm / CuttingSpeed_mmds:進給率、主軸轉速、切削速度。 FeedPerTooth_mm / FeedPerCycle_mm / ToothArcDuration_s / SpindleCyclePeriod_s:每齒/每循環進給、齒弧時間與主軸循環週期。 切削接觸與去除率 IsTouched:是否切削接觸。 CuttingWidth_mm(ae)/ CuttingDepth_mm(ap):切寬/切深。 Mrr_mm3ds:材料去除率。 ProgramSideCusp_um、SideCuspList_um:由程式進給與半徑估算之側向殘留高與分佈。 晶屑(Chip) ChipThickness_mm(/um):晶屑厚度。 ChipVolume_mm3:晶屑體積。 ChipMass_mg:晶屑質量。 力與力矩(含映射比較) 座標系提示:本節多數欄位會標示所屬座標系(如 [W] 工件、[TR] 刀具行進、[SR] 主軸旋轉)。若需座標系定義與示意,請參考「銑削物理座標系」。 AvgForceToToolOnToolRunningCoordinate_N、MaxAbsForce_N:平均/最大受力。 各種平均/最大力矩(對刀尖、對感測點;刀運座標系/主軸旋轉座標系/工件程式座標系)。 AvgAbsTorque_Nm:平均絕對扭矩。 與量測映射比較:AvgMomentXyByMapping_Nm、AvgAbsTorqueByMapping_Nm、誤差比與符號化誤差關聯等指標。 功率、扭矩與能耗 SpindleInputPower_W(輸入功率):進入主軸的能量。 SpindleOutputPower_W(輸出功率):經過主軸能量損耗後,作用於切削端的能量,亦即造成工件與切屑形變、溫度改變的能量。通常輸出功率與輸入功率成比例,比例為主軸設置中的能量效率 EnergyEfficiency(API)。 MaxSpindlePowerRatio(最大主軸功率比率):輸入功率 / 基於主軸性能的瞬間最大功率。 InfInsistentSpindlePowerRatio(持續主軸功率比率):輸入功率 / 基於主軸性能的不限時最大功率。 AccumulatedSpindleEnergyConsumption_kWh:主軸累積能耗。 Max/Continue Spindle Torque Ratio:主軸扭矩瞬時/持續比率。 熱與溫度 CutterBodyTemperature_C / CutterDermisTemperature_C / WorkpieceDermisTemperature_C / ChipTemperature_C:刀體、刀表、工件表面、晶屑溫度。 GetCutterDermisTemperature_C(depth_mm) / GetCutterDermisAvgTemperature_C(depth_mm):刀具表層深度溫度/平均溫度。 ThermalStress_MPa / ThermalYieldRatio:熱應力與熱塑刃應力比。 磨耗與變形 磨耗模型、評估指標與適用情境,請見「刀具壽命與磨耗」。 InstantCraterWear_um / AccumulatedCraterWear_um:瞬時/累積月牙洼磨耗。 AccumulatedFlankWearDepth_um / AccumulatedFlankWearWidth_um:累積後刀面磨耗深度/寬度。 Tip/Edge Deflection(um):刀尖與底刃撓度(含最大值與差量),以及 ReCutDepth_um(再切削深度)。" }, "brief/user-guide/zh-Hant/script/ActOperations/index.html": { "href": "brief/user-guide/zh-Hant/script/ActOperations/index.html", @@ -5332,7 +5337,7 @@ "brief/user-guide/zh-Hant/script/Mapping/index.html": { "href": "brief/user-guide/zh-Hant/script/Mapping/index.html", "title": "資料映射 | HiAPI-C# 2025", - "summary": "資料映射 資料映射指,將外部資料對應於仿真路徑,使得仿真步(仿真步輸出資訊(Simulation Step Output))可以索引外部資料。 外部資料包含智慧刀把、動力計,可依時間線性映射至指定刀具路徑及加工區域。 映射資料可用於檢視加工狀態、訓練銑削係數、校正銑削係數。 資料映射的形式 依據資料大小、應用情境不同,資料映射有多種形式。 以資料量區分,仿真步對應外部資料可以一對一與一對多。 一對一映射 一對一映射指每個仿真步對應一個外部資料點,資料量與仿真步數量相同或相近。 一對一的資料映射方式: 執行CSV檔:適用控制器資料,每個步階對應一個CSV資料行 ReadCsvByTimeInterpolation(API):使用時間插值將CSV資料映射到加工步階 PlayCsvFile 執行CSV檔 可以與一對多的資料映射協同使用,詳見 執行CSV檔。 ReadCsvByTimeInterpolation ReadCsvByTimeInterpolation(API) 讀取CSV檔案並使用時間插值將資料映射到加工步階。每個仿真步對應一個外部資料點(透過時間插值計算)。 Note 指令格式 ReadCsvByTimeInterpolation(); Tip 指令範例 // 讀取CSV檔案並映射到步階 PlayNcFile(\"NC/file1.nc\"); ReadCsvByTimeInterpolation(\"Data/sensor.csv\"); Note 此方法使用時間插值方式將CSV資料映射到加工步階,適用於需要將外部感測器資料對應到仿真步階的場景。每個仿真步會對應一個透過時間插值計算的外部資料點。 一對多映射 一對多映射指每個仿真步對應多個外部資料點,外部資料量遠大於仿真步數量(通常數十倍以上)。 一對多的形式適用智慧刀把、加速規、測力計等高採樣率資料。 一對多的資料映射可以直接對應真實加工時間全局映射,也可以對指定數控路徑及時間局部映射。 對應真實加工時間全局映射 需使用執行CSV檔作為前置,以獲取真實加工時間,csv檔案中須包含ActualTime欄位(ActualTime(API))。然後使用MapByActualTime(API)映射外部資料。 此方法為一對多映射,每個仿真步會對應多個外部資料點。 Note 指令格式 MapByActualTime(<檔案名>); 指定數控路徑及時間局部映射 資料映射需設定:指定輸入資料、指定NC路徑。 此方法為一對多映射,每個仿真步會對應多個外部資料點。 資料映射圖例 指定輸入資料 Note 指令格式 AddTimeDataByFile(<映射名>, <輸入檔案路徑>, <映射起點時間>, <映射終點時間>); <映射名>為自訂之標記名稱,對應於指定NC路徑中的映射名。 時間資料格式為<時>:<分>:<秒>.<小數點後秒>;其餘資料格式為實數。 注意映射資料不會因撥放器重置而被清空。可以使用ClearTimeMappingData指令清空。 Note 指令格式 ClearTimeMappingData(); Tip 指令範例 ClearTimeMappingData(); AddTimeDataByFile( \"lineA\", \"Mapping/sensor1.csv\", \"18:25:51.7100\", \"18:26:12.9910\"); AddTimeDataByFile( \"lineB\", \"Mapping/sensor1.csv\", \"18:26:30.5750\", \"18:27:12.2880\"); PlayNcFile(\"NC/file1.nc\") 指定NC路徑 Note 指令格式 //範圍(多行)資料映射 BeginSelection(<映射名>, <起點映射錨點旗標>, <起點偏置物件>); EndSelection(<映射名>, <終點映射錨點旗標>, <終點偏置物件>); //單行資料映射 LineSelection(<映射名>, <起點映射錨點旗標>, <起點偏置物件>, <終點映射錨點旗標>, <終點偏置物件>); <映射名>為自訂之標記名稱,對應於指定輸入資料中的映射名。 可以使用BeginSelection與EndSelection作範圍(多行)資料映射: BeginSelection設置映射起點。 EndSelection設置映射終點。 或是使用LineSelection作單行資料映射。 <映射錨點旗標>可以使用: LineBegin 以該行運動起點為映射錨點。 LineEnd 以該行運動終點為映射錨點。 FirstTouch 以該行第一次接觸工件的位置為映射錨點。 LastTouch 以該行最後接觸工件的位置為映射錨點。 <偏置物件>是相對於錨點的偏移,可以使用: null 無偏移。 ShiftTime_s 單位秒。正值為往後時間;負值為往前時間。 ShiftDistance_mm 單位mm。正值為往後位移;負值為往前位移。 指定NC路徑命令需在NC碼註解中執行,前置;@符號。 Tip NC檔案範例 ... G00 G90 X-6. Y10. G17 G01 Z-1. F600. S50 M03 X13. F20 ;@LineSelection(\"lineA\", FirstTouch, ShiftTime_s(2), LineEnd, ShiftDistance_mm(-1)); X25. F10 ;@LineSelection(\"lineB\", FirstTouch, null, LastTouch, null); ... Tip NC檔案範例2 如果控制器不支援;符號作為註解,如FANUC控制器,則需將其引入註解範圍內。 ... G00 G90 X-6. Y10. G17 G01 Z-1. F600. S50 M03 X13. F20 (;@LineSelection(\"lineA\", FirstTouch, ShiftTime_s(2), LineEnd, ShiftDistance_mm(-1));) X25. F10 (;@LineSelection(\"lineB\", FirstTouch, null, LastTouch, null);) ... 外部資料檔案格式 輸入檔案格式為csv,須包含時間資訊,其餘資訊可選擇包含或不包含。 csv檔案需有標題列,欄位標題需用特定指示詞標示。 部分欄位指示詞為方便性是多擇一。 時間: TimeTag Timetag Time t 動力計: X方向力: Fx Workpiece.Fx Y方向力: Fy Workpiece.Fy Z方向力: Fz Workpiece.Fz 智慧刀把: X方向力矩: Mx Spindle.Mx Y方向力矩: My Spindle.My Z方向力矩: Mz Spindle.Mz 加速規(可選): Ax Ay Az 欄位可以包含其他外部資訊,如下例之CH1、CH2。 Tip 檔案範例 TimeTag,CH1,CH2,Mx,My,Mz 18:23:54.703,-0.00398,-0.00034,-0.02923,0.10733,0.00409 18:23:54.704,-0.00194,0.00285,0.04155,-0.04457,0.00448 ... 其他設置 自動映射設定 EnableAutoMapOnSelectionEnd(API) 設定是否在選擇結束時自動執行映射。 Note 指令格式 EnableAutoMapOnSelectionEnd = true; // 或 false Tip 指令範例 // 啟用自動映射 EnableAutoMapOnSelectionEnd = true; BeginSelection(\"region1\"); // ... NC 代碼 ... EndSelection(\"region1\"); // 自動執行映射 // 停用自動映射 EnableAutoMapOnSelectionEnd = false; BeginSelection(\"region2\"); // ... NC 代碼 ... EndSelection(\"region2\"); // 不自動執行映射 Map(\"region2\"); // 手動執行映射 Note 預設值為 true。當設為 true 時,EndSelection 會自動執行對應的 Map 操作。" + "summary": "資料映射 資料映射指,將外部資料對應於仿真路徑,使得仿真步(仿真步輸出資訊(Simulation Step Output))可以索引外部資料。 外部資料包含智慧刀把、動力計,可依時間線性映射至指定刀具路徑及加工區域。 映射資料可用於檢視加工狀態、訓練銑削係數、校正銑削係數。 資料映射的形式 依據資料大小、應用情境不同,資料映射有多種形式。 以資料量區分,仿真步對應外部資料可以一對一與一對多。 一對一映射 一對一映射指每個仿真步對應一個外部資料點,資料量與仿真步數量相同或相近。 一對一的資料映射方式: 執行CSV檔:適用控制器資料,每個步階對應一個CSV資料行 MapSingleByCsvFile(API):使用時間插值將CSV資料映射到加工步階 PlayCsvFile 執行CSV檔 可以與一對多的資料映射協同使用,詳見 執行CSV檔。 MapSingleByCsvFile MapSingleByCsvFile(API) 讀取CSV檔案並使用時間插值將資料映射到加工步階。每個仿真步對應一個外部資料點(透過時間插值計算)。 Note 指令格式 MapSingleByCsvFile(); Tip 指令範例 // 讀取CSV檔案並映射到步階 PlayNcFile(\"NC/file1.nc\"); MapSingleByCsvFile(\"Data/sensor.csv\"); Note 此方法使用時間插值方式將CSV資料映射到加工步階,適用於需要將外部感測器資料對應到仿真步階的場景。每個仿真步會對應一個透過時間插值計算的外部資料點。 一對多映射 一對多映射指每個仿真步對應多個外部資料點,外部資料量遠大於仿真步數量(通常數十倍以上)。 一對多的形式適用智慧刀把、加速規、測力計等高採樣率資料。 一對多的資料映射可以直接對應真實加工時間全局映射,也可以對指定數控路徑及時間局部映射。 對應真實加工時間全局映射 需使用執行CSV檔作為前置,以獲取真實加工時間,csv檔案中須包含ActualTime欄位(ActualTime(API))。然後使用MapSeriesByCsvFile(API)映射外部資料。 此方法為一對多映射,每個仿真步會對應多個外部資料點。 Note 指令格式 MapSeriesByCsvFile(<檔案名>); 指定數控路徑及時間局部映射 資料映射需設定:指定輸入資料、指定NC路徑。 此方法為一對多映射,每個仿真步會對應多個外部資料點。 資料映射圖例 指定輸入資料 Note 指令格式 AddTimeDataByFile(<映射名>, <輸入檔案路徑>, <映射起點時間>, <映射終點時間>); <映射名>為自訂之標記名稱,對應於指定NC路徑中的映射名。 時間資料格式為<時>:<分>:<秒>.<小數點後秒>;其餘資料格式為實數。 注意映射資料不會因撥放器重置而被清空。可以使用ClearTimeMappingData指令清空。 Note 指令格式 ClearTimeMappingData(); Tip 指令範例 ClearTimeMappingData(); AddTimeDataByFile( \"lineA\", \"Mapping/sensor1.csv\", \"18:25:51.7100\", \"18:26:12.9910\"); AddTimeDataByFile( \"lineB\", \"Mapping/sensor1.csv\", \"18:26:30.5750\", \"18:27:12.2880\"); PlayNcFile(\"NC/file1.nc\") 指定NC路徑 Note 指令格式 //範圍(多行)資料映射 BeginSelection(<映射名>, <起點映射錨點旗標>, <起點偏置物件>); EndSelection(<映射名>, <終點映射錨點旗標>, <終點偏置物件>); //單行資料映射 LineSelection(<映射名>, <起點映射錨點旗標>, <起點偏置物件>, <終點映射錨點旗標>, <終點偏置物件>); <映射名>為自訂之標記名稱,對應於指定輸入資料中的映射名。 可以使用BeginSelection與EndSelection作範圍(多行)資料映射: BeginSelection設置映射起點。 EndSelection設置映射終點。 或是使用LineSelection作單行資料映射。 <映射錨點旗標>可以使用: LineBegin 以該行運動起點為映射錨點。 LineEnd 以該行運動終點為映射錨點。 FirstTouch 以該行第一次接觸工件的位置為映射錨點。 LastTouch 以該行最後接觸工件的位置為映射錨點。 <偏置物件>是相對於錨點的偏移,可以使用: null 無偏移。 ShiftTime_s 單位秒。正值為往後時間;負值為往前時間。 ShiftDistance_mm 單位mm。正值為往後位移;負值為往前位移。 指定NC路徑命令需在NC碼註解中執行,前置;@符號。 Tip NC檔案範例 ... G00 G90 X-6. Y10. G17 G01 Z-1. F600. S50 M03 X13. F20 ;@LineSelection(\"lineA\", FirstTouch, ShiftTime_s(2), LineEnd, ShiftDistance_mm(-1)); X25. F10 ;@LineSelection(\"lineB\", FirstTouch, null, LastTouch, null); ... Tip NC檔案範例2 如果控制器不支援;符號作為註解,如FANUC控制器,則需將其引入註解範圍內。 ... G00 G90 X-6. Y10. G17 G01 Z-1. F600. S50 M03 X13. F20 (;@LineSelection(\"lineA\", FirstTouch, ShiftTime_s(2), LineEnd, ShiftDistance_mm(-1));) X25. F10 (;@LineSelection(\"lineB\", FirstTouch, null, LastTouch, null);) ... 選區結束映射設定 EnableMapOnSelectionEnd(API) 設定是否在選擇結束時連帶執行映射。 Note 指令格式 EnableMapOnSelectionEnd = true; // 或 false Tip 指令範例 // 啟用選區結束映射 EnableMapOnSelectionEnd = true; BeginSelection(\"region1\"); // ... NC 代碼 ... EndSelection(\"region1\"); // 連帶執行映射 // 停用選區結束映射 EnableMapOnSelectionEnd = false; BeginSelection(\"region2\"); // ... NC 代碼 ... EndSelection(\"region2\"); // 不連帶執行映射 Map(\"region2\"); // 手動執行映射 Note 預設值為 true。當設為 true 時,EndSelection 會連帶執行對應的 Map 操作。 感測器資料檔案格式 輸入檔案格式為csv,須包含時間資訊,其餘資訊可選擇包含或不包含。 csv檔案需有標題列,欄位標題需用特定指示詞標示。 部分欄位指示詞為方便性是多擇一。 時間: TimeTag Timetag Time t 動力計: X方向力: Fx Workpiece.Fx Y方向力: Fy Workpiece.Fy Z方向力: Fz Workpiece.Fz 智慧刀把: X方向力矩: Mx Holder.Mx Y方向力矩: My Holder.My Z方向力矩: Mz Holder.Mz 加速規(可選): Ax Ay Az 欄位可以包含其他外部資訊,如下例之CH1、CH2。 Tip 檔案範例 TimeTag,CH1,CH2,Mx,My,Mz 18:23:54.703,-0.00398,-0.00034,-0.02923,0.10733,0.00409 18:23:54.704,-0.00194,0.00285,0.04155,-0.04457,0.00448 ... 串接控制器資料及感測器資料至數控路徑 因為機台加減速,模擬加工時間與實際加工時間會累積誤差,時間拉長了對不上。所以在資料映射時透過錨點做線性投影。 模擬步資料及控制器資料皆含檔案號行號,故可依此設定兩者相應錨點 控制器資料及感測器資料皆含實際時間,故可依此設定兩者相應錨點 串接後可使模擬步索引感測器資料。 Note 為何使用兩層映射? 雖然可以直接使用 執行CSV檔 執行模擬,但控制器的採樣頻率有限,直接播放會導致模擬路徑失真。 透過系統解譯器解譯數控路徑(執行NC檔),再將控制器資料與感測器資料映射至模擬步,可獲得較精確的模擬路徑。 操作流程 依序使用兩指令串聯控制器資料及感測器資料至虛擬環境: 先使用 MapSingleByCsvFile(API) 將控制器資料映射至模擬數控路徑 控制器資料至少包含 FileNo、LineNo、ActualTime 該指令會依 FileNo 及 LineNo 將 ActualTime 及其他控制器資料插補至模擬步中 而後使用 MapSeriesByCsvFile(API) 將感測器資料映射至模擬數控路徑 感測器資料至少包含 ActualTime 該指令會依 ActualTime 將其他感測器資料插補至模擬步中 Tip 指令範例 // 1. 使用系統解譯器解譯數控路徑(獲得精確的模擬路徑) PlayNcFile(\"NC/machining.nc\"); // 2. 映射控制器資料(含FileNo, LineNo, ActualTime) MapSingleByCsvFile(\"Data/controller.csv\"); // 3. 映射感測器資料(含ActualTime及感測器數據) MapSeriesByCsvFile(\"Data/sensor.csv\");" }, "brief/user-guide/zh-Hant/script/Messages/index.html": { "href": "brief/user-guide/zh-Hant/script/Messages/index.html", diff --git a/App/wwwroot/HiAPI-docsite/manifest.json b/App/wwwroot/HiAPI-docsite/manifest.json index 3b9b5a9..ed29bf1 100644 --- a/App/wwwroot/HiAPI-docsite/manifest.json +++ b/App/wwwroot/HiAPI-docsite/manifest.json @@ -1072,7 +1072,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.Common.Collections.SubList", - "Summary": null + "Summary": "

    Represents a sub-list view of a source list within a specified index range.

    \n" }, { "type": "ManagedReference", @@ -5834,6 +5834,20 @@ "Title": "Hi.Mapping.ITimeShot", "Summary": "

    Interface for objects that represent a snapshot of data at a specific time and support arithmetic operations.\nThis interface provides a foundation for time-series data with vector operations.

    \n" }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.Mapping.MappingUtil.yml", + "output": { + ".html": { + "relative_path": "api/Hi.Mapping.MappingUtil.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.Mapping.MappingUtil", + "Summary": null + }, { "type": "ManagedReference", "source_relative_path": "api/Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.yml", diff --git a/App/wwwroot/HiAPI-docsite/xrefmap.yml b/App/wwwroot/HiAPI-docsite/xrefmap.yml index 6ca9da9..78279d6 100644 --- a/App/wwwroot/HiAPI-docsite/xrefmap.yml +++ b/App/wwwroot/HiAPI-docsite/xrefmap.yml @@ -79609,19 +79609,6 @@ references: isSpec: "True" fullName: Hi.MachiningProcs.ProxyProjectService.LocalProjectService nameWithType: ProxyProjectService.LocalProjectService -- uid: Hi.MachiningProcs.ProxyProjectService.MachiningProjectPath - name: MachiningProjectPath - href: api/Hi.MachiningProcs.ProxyProjectService.html#Hi_MachiningProcs_ProxyProjectService_MachiningProjectPath - commentId: P:Hi.MachiningProcs.ProxyProjectService.MachiningProjectPath - fullName: Hi.MachiningProcs.ProxyProjectService.MachiningProjectPath - nameWithType: ProxyProjectService.MachiningProjectPath -- uid: Hi.MachiningProcs.ProxyProjectService.MachiningProjectPath* - name: MachiningProjectPath - href: api/Hi.MachiningProcs.ProxyProjectService.html#Hi_MachiningProcs_ProxyProjectService_MachiningProjectPath_ - commentId: Overload:Hi.MachiningProcs.ProxyProjectService.MachiningProjectPath - isSpec: "True" - fullName: Hi.MachiningProcs.ProxyProjectService.MachiningProjectPath - nameWithType: ProxyProjectService.MachiningProjectPath - uid: Hi.MachiningProcs.ProxyProjectService.NewProject(System.String) name: NewProject(string) href: api/Hi.MachiningProcs.ProxyProjectService.html#Hi_MachiningProcs_ProxyProjectService_NewProject_System_String_ @@ -79961,19 +79948,6 @@ references: isSpec: "True" fullName: Hi.MachiningProcs.RuntimeApi.EmbeddedLogMode nameWithType: RuntimeApi.EmbeddedLogMode -- uid: Hi.MachiningProcs.RuntimeApi.EnableAutoMapOnSelectionEnd - name: EnableAutoMapOnSelectionEnd - href: api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_EnableAutoMapOnSelectionEnd - commentId: P:Hi.MachiningProcs.RuntimeApi.EnableAutoMapOnSelectionEnd - fullName: Hi.MachiningProcs.RuntimeApi.EnableAutoMapOnSelectionEnd - nameWithType: RuntimeApi.EnableAutoMapOnSelectionEnd -- uid: Hi.MachiningProcs.RuntimeApi.EnableAutoMapOnSelectionEnd* - name: EnableAutoMapOnSelectionEnd - href: api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_EnableAutoMapOnSelectionEnd_ - commentId: Overload:Hi.MachiningProcs.RuntimeApi.EnableAutoMapOnSelectionEnd - isSpec: "True" - fullName: Hi.MachiningProcs.RuntimeApi.EnableAutoMapOnSelectionEnd - nameWithType: RuntimeApi.EnableAutoMapOnSelectionEnd - uid: Hi.MachiningProcs.RuntimeApi.EnableCollisionDetection name: EnableCollisionDetection href: api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_EnableCollisionDetection @@ -80000,6 +79974,19 @@ references: isSpec: "True" fullName: Hi.MachiningProcs.RuntimeApi.EnableIndividualStepAdjustmentLog nameWithType: RuntimeApi.EnableIndividualStepAdjustmentLog +- uid: Hi.MachiningProcs.RuntimeApi.EnableMapOnSelectionEnd + name: EnableMapOnSelectionEnd + href: api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_EnableMapOnSelectionEnd + commentId: P:Hi.MachiningProcs.RuntimeApi.EnableMapOnSelectionEnd + fullName: Hi.MachiningProcs.RuntimeApi.EnableMapOnSelectionEnd + nameWithType: RuntimeApi.EnableMapOnSelectionEnd +- uid: Hi.MachiningProcs.RuntimeApi.EnableMapOnSelectionEnd* + name: EnableMapOnSelectionEnd + href: api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_EnableMapOnSelectionEnd_ + commentId: Overload:Hi.MachiningProcs.RuntimeApi.EnableMapOnSelectionEnd + isSpec: "True" + fullName: Hi.MachiningProcs.RuntimeApi.EnableMapOnSelectionEnd + nameWithType: RuntimeApi.EnableMapOnSelectionEnd - uid: Hi.MachiningProcs.RuntimeApi.EnablePauseOnCollision name: EnablePauseOnCollision href: api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_EnablePauseOnCollision @@ -86242,19 +86229,6 @@ references: isSpec: "True" fullName: Hi.Mapping.CsvNcStep.ActualTime nameWithType: CsvNcStep.ActualTime -- uid: Hi.Mapping.CsvNcStep.ActualTimeTag - name: ActualTimeTag - href: api/Hi.Mapping.CsvNcStep.html#Hi_Mapping_CsvNcStep_ActualTimeTag - commentId: P:Hi.Mapping.CsvNcStep.ActualTimeTag - fullName: Hi.Mapping.CsvNcStep.ActualTimeTag - nameWithType: CsvNcStep.ActualTimeTag -- uid: Hi.Mapping.CsvNcStep.ActualTimeTag* - name: ActualTimeTag - href: api/Hi.Mapping.CsvNcStep.html#Hi_Mapping_CsvNcStep_ActualTimeTag_ - commentId: Overload:Hi.Mapping.CsvNcStep.ActualTimeTag - isSpec: "True" - fullName: Hi.Mapping.CsvNcStep.ActualTimeTag - nameWithType: CsvNcStep.ActualTimeTag - uid: Hi.Mapping.CsvNcStep.DoubleFlexList name: DoubleFlexList href: api/Hi.Mapping.CsvNcStep.html#Hi_Mapping_CsvNcStep_DoubleFlexList @@ -86281,19 +86255,6 @@ references: isSpec: "True" fullName: Hi.Mapping.CsvNcStep.FileLineIndex nameWithType: CsvNcStep.FileLineIndex -- uid: Hi.Mapping.CsvNcStep.FileNoTag - name: FileNoTag - href: api/Hi.Mapping.CsvNcStep.html#Hi_Mapping_CsvNcStep_FileNoTag - commentId: P:Hi.Mapping.CsvNcStep.FileNoTag - fullName: Hi.Mapping.CsvNcStep.FileNoTag - nameWithType: CsvNcStep.FileNoTag -- uid: Hi.Mapping.CsvNcStep.FileNoTag* - name: FileNoTag - href: api/Hi.Mapping.CsvNcStep.html#Hi_Mapping_CsvNcStep_FileNoTag_ - commentId: Overload:Hi.Mapping.CsvNcStep.FileNoTag - isSpec: "True" - fullName: Hi.Mapping.CsvNcStep.FileNoTag - nameWithType: CsvNcStep.FileNoTag - uid: Hi.Mapping.CsvNcStep.GetFileLineIndex name: GetFileLineIndex() href: api/Hi.Mapping.CsvNcStep.html#Hi_Mapping_CsvNcStep_GetFileLineIndex @@ -86307,19 +86268,6 @@ references: isSpec: "True" fullName: Hi.Mapping.CsvNcStep.GetFileLineIndex nameWithType: CsvNcStep.GetFileLineIndex -- uid: Hi.Mapping.CsvNcStep.LineNoTag - name: LineNoTag - href: api/Hi.Mapping.CsvNcStep.html#Hi_Mapping_CsvNcStep_LineNoTag - commentId: P:Hi.Mapping.CsvNcStep.LineNoTag - fullName: Hi.Mapping.CsvNcStep.LineNoTag - nameWithType: CsvNcStep.LineNoTag -- uid: Hi.Mapping.CsvNcStep.LineNoTag* - name: LineNoTag - href: api/Hi.Mapping.CsvNcStep.html#Hi_Mapping_CsvNcStep_LineNoTag_ - commentId: Overload:Hi.Mapping.CsvNcStep.LineNoTag - isSpec: "True" - fullName: Hi.Mapping.CsvNcStep.LineNoTag - nameWithType: CsvNcStep.LineNoTag - uid: Hi.Mapping.CsvNcStep.MapSingleByCsvFile(Hi.CutterLocations.ClStrips.ClStrip,System.String,System.String,Hi.Common.Messages.IMessageHost) name: MapSingleByCsvFile(ClStrip, string, string, IMessageHost) href: api/Hi.Mapping.CsvNcStep.html#Hi_Mapping_CsvNcStep_MapSingleByCsvFile_Hi_CutterLocations_ClStrips_ClStrip_System_String_System_String_Hi_Common_Messages_IMessageHost_ @@ -86336,19 +86284,6 @@ references: isSpec: "True" fullName: Hi.Mapping.CsvNcStep.MapSingleByCsvFile nameWithType: CsvNcStep.MapSingleByCsvFile -- uid: Hi.Mapping.CsvNcStep.McTag - name: McTag - href: api/Hi.Mapping.CsvNcStep.html#Hi_Mapping_CsvNcStep_McTag - commentId: P:Hi.Mapping.CsvNcStep.McTag - fullName: Hi.Mapping.CsvNcStep.McTag - nameWithType: CsvNcStep.McTag -- uid: Hi.Mapping.CsvNcStep.McTag* - name: McTag - href: api/Hi.Mapping.CsvNcStep.html#Hi_Mapping_CsvNcStep_McTag_ - commentId: Overload:Hi.Mapping.CsvNcStep.McTag - isSpec: "True" - fullName: Hi.Mapping.CsvNcStep.McTag - nameWithType: CsvNcStep.McTag - uid: Hi.Mapping.CsvNcStep.McXyzabc name: McXyzabc href: api/Hi.Mapping.CsvNcStep.html#Hi_Mapping_CsvNcStep_McXyzabc @@ -86566,6 +86501,108 @@ references: isSpec: "True" fullName: Hi.Mapping.ITimeShot.GetScaled nameWithType: ITimeShot.GetScaled +- uid: Hi.Mapping.MappingUtil + name: MappingUtil + href: api/Hi.Mapping.MappingUtil.html + commentId: T:Hi.Mapping.MappingUtil + fullName: Hi.Mapping.MappingUtil + nameWithType: MappingUtil +- uid: Hi.Mapping.MappingUtil.ActualTimeTag + name: ActualTimeTag + href: api/Hi.Mapping.MappingUtil.html#Hi_Mapping_MappingUtil_ActualTimeTag + commentId: F:Hi.Mapping.MappingUtil.ActualTimeTag + fullName: Hi.Mapping.MappingUtil.ActualTimeTag + nameWithType: MappingUtil.ActualTimeTag +- uid: Hi.Mapping.MappingUtil.CutterLocationPrefix + name: CutterLocationPrefix + href: api/Hi.Mapping.MappingUtil.html#Hi_Mapping_MappingUtil_CutterLocationPrefix + commentId: F:Hi.Mapping.MappingUtil.CutterLocationPrefix + fullName: Hi.Mapping.MappingUtil.CutterLocationPrefix + nameWithType: MappingUtil.CutterLocationPrefix +- uid: Hi.Mapping.MappingUtil.DurationTag + name: DurationTag + href: api/Hi.Mapping.MappingUtil.html#Hi_Mapping_MappingUtil_DurationTag + commentId: F:Hi.Mapping.MappingUtil.DurationTag + fullName: Hi.Mapping.MappingUtil.DurationTag + nameWithType: MappingUtil.DurationTag +- uid: Hi.Mapping.MappingUtil.FeedrateTag_mmdmin + name: FeedrateTag_mmdmin + href: api/Hi.Mapping.MappingUtil.html#Hi_Mapping_MappingUtil_FeedrateTag_mmdmin + commentId: F:Hi.Mapping.MappingUtil.FeedrateTag_mmdmin + fullName: Hi.Mapping.MappingUtil.FeedrateTag_mmdmin + nameWithType: MappingUtil.FeedrateTag_mmdmin +- uid: Hi.Mapping.MappingUtil.FileNoTag + name: FileNoTag + href: api/Hi.Mapping.MappingUtil.html#Hi_Mapping_MappingUtil_FileNoTag + commentId: F:Hi.Mapping.MappingUtil.FileNoTag + fullName: Hi.Mapping.MappingUtil.FileNoTag + nameWithType: MappingUtil.FileNoTag +- uid: Hi.Mapping.MappingUtil.HolderMomentPrefix + name: HolderMomentPrefix + href: api/Hi.Mapping.MappingUtil.html#Hi_Mapping_MappingUtil_HolderMomentPrefix + commentId: F:Hi.Mapping.MappingUtil.HolderMomentPrefix + fullName: Hi.Mapping.MappingUtil.HolderMomentPrefix + nameWithType: MappingUtil.HolderMomentPrefix +- uid: Hi.Mapping.MappingUtil.LineBeginCsScriptTag + name: LineBeginCsScriptTag + href: api/Hi.Mapping.MappingUtil.html#Hi_Mapping_MappingUtil_LineBeginCsScriptTag + commentId: F:Hi.Mapping.MappingUtil.LineBeginCsScriptTag + fullName: Hi.Mapping.MappingUtil.LineBeginCsScriptTag + nameWithType: MappingUtil.LineBeginCsScriptTag +- uid: Hi.Mapping.MappingUtil.LineEndCsScriptTag + name: LineEndCsScriptTag + href: api/Hi.Mapping.MappingUtil.html#Hi_Mapping_MappingUtil_LineEndCsScriptTag + commentId: F:Hi.Mapping.MappingUtil.LineEndCsScriptTag + fullName: Hi.Mapping.MappingUtil.LineEndCsScriptTag + nameWithType: MappingUtil.LineEndCsScriptTag +- uid: Hi.Mapping.MappingUtil.LineNoTag + name: LineNoTag + href: api/Hi.Mapping.MappingUtil.html#Hi_Mapping_MappingUtil_LineNoTag + commentId: F:Hi.Mapping.MappingUtil.LineNoTag + fullName: Hi.Mapping.MappingUtil.LineNoTag + nameWithType: MappingUtil.LineNoTag +- uid: Hi.Mapping.MappingUtil.MachineCoordinatePrefix + name: MachineCoordinatePrefix + href: api/Hi.Mapping.MappingUtil.html#Hi_Mapping_MappingUtil_MachineCoordinatePrefix + commentId: F:Hi.Mapping.MappingUtil.MachineCoordinatePrefix + fullName: Hi.Mapping.MappingUtil.MachineCoordinatePrefix + nameWithType: MappingUtil.MachineCoordinatePrefix +- uid: Hi.Mapping.MappingUtil.SpindleDirectionTag + name: SpindleDirectionTag + href: api/Hi.Mapping.MappingUtil.html#Hi_Mapping_MappingUtil_SpindleDirectionTag + commentId: F:Hi.Mapping.MappingUtil.SpindleDirectionTag + fullName: Hi.Mapping.MappingUtil.SpindleDirectionTag + nameWithType: MappingUtil.SpindleDirectionTag +- uid: Hi.Mapping.MappingUtil.SpindleSpeedTag_rpm + name: SpindleSpeedTag_rpm + href: api/Hi.Mapping.MappingUtil.html#Hi_Mapping_MappingUtil_SpindleSpeedTag_rpm + commentId: F:Hi.Mapping.MappingUtil.SpindleSpeedTag_rpm + fullName: Hi.Mapping.MappingUtil.SpindleSpeedTag_rpm + nameWithType: MappingUtil.SpindleSpeedTag_rpm +- uid: Hi.Mapping.MappingUtil.TimeTag + name: TimeTag + href: api/Hi.Mapping.MappingUtil.html#Hi_Mapping_MappingUtil_TimeTag + commentId: F:Hi.Mapping.MappingUtil.TimeTag + fullName: Hi.Mapping.MappingUtil.TimeTag + nameWithType: MappingUtil.TimeTag +- uid: Hi.Mapping.MappingUtil.ToolForcePrefix + name: ToolForcePrefix + href: api/Hi.Mapping.MappingUtil.html#Hi_Mapping_MappingUtil_ToolForcePrefix + commentId: F:Hi.Mapping.MappingUtil.ToolForcePrefix + fullName: Hi.Mapping.MappingUtil.ToolForcePrefix + nameWithType: MappingUtil.ToolForcePrefix +- uid: Hi.Mapping.MappingUtil.ToolIdTag + name: ToolIdTag + href: api/Hi.Mapping.MappingUtil.html#Hi_Mapping_MappingUtil_ToolIdTag + commentId: F:Hi.Mapping.MappingUtil.ToolIdTag + fullName: Hi.Mapping.MappingUtil.ToolIdTag + nameWithType: MappingUtil.ToolIdTag +- uid: Hi.Mapping.MappingUtil.WorkpieceForcePrefix + name: WorkpieceForcePrefix + href: api/Hi.Mapping.MappingUtil.html#Hi_Mapping_MappingUtil_WorkpieceForcePrefix + commentId: F:Hi.Mapping.MappingUtil.WorkpieceForcePrefix + fullName: Hi.Mapping.MappingUtil.WorkpieceForcePrefix + nameWithType: MappingUtil.WorkpieceForcePrefix - uid: Hi.Mapping.StepTimeShotUtil name: StepTimeShotUtil href: api/Hi.Mapping.StepTimeShotUtil.html @@ -117089,19 +117126,19 @@ references: isSpec: "True" fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.ActualTimeTag nameWithType: CsvRunnerConfig.ActualTimeTag -- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.CutterLocationPrefixTag - name: CutterLocationPrefixTag - href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_CutterLocationPrefixTag - commentId: P:Hi.Numerical.FilePlayers.CsvRunnerConfig.CutterLocationPrefixTag - fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.CutterLocationPrefixTag - nameWithType: CsvRunnerConfig.CutterLocationPrefixTag -- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.CutterLocationPrefixTag* - name: CutterLocationPrefixTag - href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_CutterLocationPrefixTag_ - commentId: Overload:Hi.Numerical.FilePlayers.CsvRunnerConfig.CutterLocationPrefixTag +- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.CutterLocationPrefix + name: CutterLocationPrefix + href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_CutterLocationPrefix + commentId: P:Hi.Numerical.FilePlayers.CsvRunnerConfig.CutterLocationPrefix + fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.CutterLocationPrefix + nameWithType: CsvRunnerConfig.CutterLocationPrefix +- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.CutterLocationPrefix* + name: CutterLocationPrefix + href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_CutterLocationPrefix_ + commentId: Overload:Hi.Numerical.FilePlayers.CsvRunnerConfig.CutterLocationPrefix isSpec: "True" - fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.CutterLocationPrefixTag - nameWithType: CsvRunnerConfig.CutterLocationPrefixTag + fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.CutterLocationPrefix + nameWithType: CsvRunnerConfig.CutterLocationPrefix - uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.DurationTag name: DurationTag href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_DurationTag @@ -117154,19 +117191,19 @@ references: isSpec: "True" fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.LineEndCsScriptTag nameWithType: CsvRunnerConfig.LineEndCsScriptTag -- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.MachineCoordinatePrefixTag - name: MachineCoordinatePrefixTag - href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_MachineCoordinatePrefixTag - commentId: P:Hi.Numerical.FilePlayers.CsvRunnerConfig.MachineCoordinatePrefixTag - fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.MachineCoordinatePrefixTag - nameWithType: CsvRunnerConfig.MachineCoordinatePrefixTag -- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.MachineCoordinatePrefixTag* - name: MachineCoordinatePrefixTag - href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_MachineCoordinatePrefixTag_ - commentId: Overload:Hi.Numerical.FilePlayers.CsvRunnerConfig.MachineCoordinatePrefixTag +- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.MachineCoordinatePrefix + name: MachineCoordinatePrefix + href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_MachineCoordinatePrefix + commentId: P:Hi.Numerical.FilePlayers.CsvRunnerConfig.MachineCoordinatePrefix + fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.MachineCoordinatePrefix + nameWithType: CsvRunnerConfig.MachineCoordinatePrefix +- uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.MachineCoordinatePrefix* + name: MachineCoordinatePrefix + href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_MachineCoordinatePrefix_ + commentId: Overload:Hi.Numerical.FilePlayers.CsvRunnerConfig.MachineCoordinatePrefix isSpec: "True" - fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.MachineCoordinatePrefixTag - nameWithType: CsvRunnerConfig.MachineCoordinatePrefixTag + fullName: Hi.Numerical.FilePlayers.CsvRunnerConfig.MachineCoordinatePrefix + nameWithType: CsvRunnerConfig.MachineCoordinatePrefix - uid: Hi.Numerical.FilePlayers.CsvRunnerConfig.MakeXmlSource(System.String,System.String,System.Boolean) name: MakeXmlSource(string, string, bool) href: api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html#Hi_Numerical_FilePlayers_CsvRunnerConfig_MakeXmlSource_System_String_System_String_System_Boolean_ diff --git a/App/zh-Hans/HiMech.resources.dll b/App/zh-Hans/HiMech.resources.dll index 0623de58445aa8edf104375813195ef6770fb2f1..be6f6260aca0e110c34f8d016623850b9dd3dddb 100644 GIT binary patch delta 230 zcmZq3Xvmn*!E)u%ulXB$oR}GtHlJr!WD?kLHDt;k%|NG(TUM<*P$QhTi7k`S!a~o0 zfx(24LEl)2PWr=?mZCK{(Enx`5i8k$)qCL1TGS|(XqCM8;I zUdaAdg)@nPk%5_kfgx%0be-o+j24^g_3IgfEf};Jl7P^RA(g?9A(0`O!3fBLu+16L zfGkU(Xd;6#kd??_4kV3$v>{MENIV%Ro(xu#1ms%+%}Hdim>g(m%4)%&$6zp7P`hk1 IqtSmx02C}dfB*mh delta 230 zcmZq3Xvmn*!Ln<`vo9NaoR}FCH=k!#WD;20`tWSVJQtrS&%|Wqr`+M&#FoiuVXkMu zz+l42pl_^asAp-eZDwwelxAd@WSDAVmTa74U}kQdoMM@5U}~P0W^81hWNwgXY+{mV zym=w}TNTbk21W*E1_p-2&C_+BGclTPuGg<;3^r%bW-wzgXE0z$Vn|~!VlV{Kh773; zCP2|-24f)404#3|F#4gdfE diff --git a/App/zh-Hans/HiNc.resources.dll b/App/zh-Hans/HiNc.resources.dll index 8d15f23ea52ba64289f0ffc871858e680f972fa6..ccecc24a575fe717470f33cce8faca443130d262 100644 GIT binary patch delta 223 zcmZorX;7Ka!4m&@N6*F{CuYX%&F7f~nFKC{vTxXtc*|wkS;3!r4#K9BKd|n!G}kj= zU@&E5Ffi6L)H5_N*ETaZN;9)CNU^j?HZd?vu{1YMO*KwQF-uBKGcz!@G_y!dOG!0L zOxyg3Z4EPLHUlFAGXn!d_U7qat&EK3n`L>58H3Fkv>D78%o&Ur(txxDg8@SdgC&qo zW-tM=4Z%Ef24jX)AT$Q@Qh=(GfNYRz1E7c{SXUyDp8^y$V*s)yKjyUr8PE5a834Lo BHl+Xn delta 223 zcmZorX;7Ka!6L9F^328_CuYXX&F7f~nFPM%6lh($ delta 231 zcmZorX;7Ka!Lsk6#G#EnPRxuUo6j>#G6`IXiRx^+BIZB)!R<}Ka+4NK{=xd!!bH!2 zfx(24LEl)Jh?RwpV73ng z5=iG`q{=hIF=61JZ$5rzKABHm7R`_S=htC5NEF9oa?`kOZg%bAbn&oy%jy)WpfAnWn|aesyXoUYf0%v0zsxT(4=f I$&^3l7yS%38UO$Q diff --git a/App/zh-Hant/HiNc.resources.dll b/App/zh-Hant/HiNc.resources.dll index d1bf65dc33f48a94be2cb6de23ebc8905f215fa7..48d7e1e6316f74a575260c44febe6076925e399c 100644 GIT binary patch delta 223 zcmZoLX)u}4!IGHure|Z16EkD>=JU*3nFLH~7EL_J=KPiCYnz!HrI}e6q*z)cn;00TSehHBrW&WDm?fpAnHd;cnpq^KrKFlA zrfqIx=iuhdW?*DsW?*2*-aK8Xm66eWv#dxlW3V}cHiH?1IfD^H8j!YNFknbwumsY{ z3?@LfA(&^*V9byTgvLN#3Q$!NkPT9802HwV>q-RjQ-Gpo3_#Z8$D)=X}xdi