<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="CDZ0yV9i^/I4D(1hh:5N">points</variable>
<variable id="(w_I)eNw(w^A2^!fDaoR">roofElements</variable>
<variable id="Obk[vz^n7Mv)Cg?T^FJ^">columnElements</variable>
<variable id="No-.@!ajW`iZNhtYFs:|">walkway</variable>
<variable id=")JDd/$?9d@/)Q;8uHsOh">pts1</variable>
<variable id="D?;jOf0wLZbE4dA0t0jA">surfaceMain</variable>
<variable id="[zm1f7j{n!%h6krajW07">transformedPoints</variable>
<variable id="z1)P]:Q8Nc^e2e?^rZg7">grid</variable>
<variable id="OC![oF$0|+P/T?a;yJTj">pts2</variable>
<variable id="m$+ZiW?SBj/+-L2AGg1h">j</variable>
<variable id="zY,-3Xz-hVmXZ4oCNr_f">uvsPromise</variable>
<variable id="$yivl^(Am[EkP_A06+[|">uDivColumns</variable>
<variable id=":{:pInCv~v4mN}VULXJe">roofTopOptions</variable>
<variable id="~wVJAVr.~@%#AYbA:a-N">pts3</variable>
<variable id="^rvuq!wt/JF*90FsJOeQ">vDivColumns</variable>
<variable id="uTzH((#w}Ij;zzjur!5F">roofBottomOptions</variable>
<variable id="{KFi.~;$`.^:S~:pGPLG">resSurfaceMain</variable>
<variable id="SP{8^mo@bpDq_GT6lTS?">pts4</variable>
<variable id="^FR)0Ddc/OYd-|yG}z1g">faceToEvaluate</variable>
<variable id="5M/tUeLH#WBo8c9eS6B=">uSubdivisions</variable>
<variable id="K|Koc`l+CDW}3!pNIo!l">vSubdivisions</variable>
<variable id="$p2$U}Vb3*GvO2k$]Om%">uStepDist</variable>
<variable id="/%(HsU-ilHZm{!Zif:#Y">groundFace</variable>
<variable id="_sI/G~-@l^Q$uG9O*Iee">roofGlassOptions</variable>
<variable id="_)rR8pCl7ac0%(xJKy_K">surfaceBottom</variable>
<variable id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</variable>
<variable id="SXdUZ]|Yz(6xfEDCx_wd">uvs</variable>
<variable id="*lx^8ZUn[Q^L|qSZuhHY">uvsGroundPromise</variable>
<variable id="(c**hXH!56[y}eFm`:om">columnBaseOptions</variable>
<variable id="ldD+4LNvts!5w[Pn%{pu">offsetResSurfaceMain</variable>
<variable id="CBa30-Qz_F3Vu!Lw2u=|">pts5</variable>
<variable id="VuD}(DXs1m6QMh7.FUZw">prlOuterTranslatedPromise</variable>
<variable id="TdcI-~EpnVX}!RhQtDWM">wireOnMiddleColumn</variable>
<variable id="Lb#;CZTb.U=]?/FE0R}d">columnTopOptions</variable>
<variable id="[KonGC98P9UI$KTOaZ0x">prlTranslatedInnerPromise</variable>
<variable id="6Ev54^^AhgVN#L,t([Zf">wireOnGroundForColumn</variable>
<variable id="mvsRC!k3oyO4_t%xUm=B">walkwayOptions</variable>
<variable id="|$PN]{}GVX[u:7#KZ}]j">prlTranslatedCenterPromise</variable>
<variable id="V/60%4QKJ38i9{K=U9N,">wireOnRoofForColumn</variable>
<variable id="%JzY:cK3~3fxNUBozxc8">groundOptions</variable>
<variable id="z=G]bU^k~e{7NB?oW4^D">parallelogramOuter</variable>
<variable id="!eaT~+j[NqITtgX2;rg[">faceToEvalColumns</variable>
<variable id=")jFwhfJ64YHbuNK27:RE">roofTopMeshPromise</variable>
<variable id="i*GbLP4K*{nZ^r(aot$0">parallelogramCenter</variable>
<variable id="cSfBm{4/in%#SI5u3ZMy">uvsGround</variable>
<variable id="0G}AZ%IK~JyC.!ows@Uc">roofBottomMeshPromise</variable>
<variable id="1u?USp-?Oz$`IwPQ*#hc">uMin</variable>
<variable id="r+/!Yi8+#X!-eR|s|rGI">prallelogramInner</variable>
<variable id=":rhC^bPjxDTND+_A6FP8">columnBase</variable>
<variable id="f$6G-eXhk_lJ,Cn=?1iA">roofGlassMeshPromise</variable>
<variable id="}6uDqz(r(CCA}*my._s!">uMax</variable>
<variable id="{MJv/x02PeZvH9A#m?Jo">i</variable>
<variable id="b@rIR_v#^_UW:xWos{C#">columnTop</variable>
<variable id="V8rL(y|lr.Q.8[Zsf/mE">columnBaseMeshPromise</variable>
<variable id="@ROlmvf}?w%|vAC}5/Uv">vMin</variable>
<variable id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</variable>
<variable id="[aGwA%Xg!t{a)tJ5}eD:">prlOuterOnFace</variable>
<variable id="{en%a36.!YbF*V[[j7?|">m</variable>
<variable id="Xmx4o3$9iSkLnYrnJW3,">columnTopMeshPromise</variable>
<variable id="B4GJ,/r+G;0*@cpcz.h*">vMax</variable>
<variable id="3={IRQ9.s+1YNZC(R|C[">prlInnerOnFace</variable>
<variable id="NP)@GjOv4@SCk.GDOX39">groundMeshPromise</variable>
<variable id="XDJ,1#`g?AW/H4JSh$W;">uTotal</variable>
<variable id="-bZIDPD6jxuP!iFMX[((">prlCenterOnFace</variable>
<variable id="A,Y.pPFWC(TWX%*j5qX=">walkwayMeshPromise</variable>
<variable id="VO{bl0#LNo4KR/~%?sQy">vTotal</variable>
<variable id=",gKkM!R;f4g;gS^{t8fI">framesTopPromise</variable>
<variable id="R8)c{9+bvT]-=}NW|$n-">roofTopMesh</variable>
<variable id="AB[dWnl[/fDKtNAp#;HU">framesBottomPromise</variable>
<variable id="+ZT@[lpq#c?%#)3xGEE*">roofBottomMesh</variable>
<variable id="jZX5)i68[Y)`yPY_noM^">windowsPromise</variable>
<variable id="v=$m@*Rp!Ni=tnXa!HGQ">roofGlassMesh</variable>
<variable id="3-ph`bM~;B3iFbn2+4zw">k</variable>
<variable id="WksPa84K#Qwk9@IeZaM}">columnBaseMesh</variable>
<variable id="xG.4OQ~o,(4v5s+0r$4|">frameThickness</variable>
<variable id="#-ty|wDMJZV7nS6Z{dp,">columnTopMesh</variable>
<variable id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</variable>
<variable id="3S[CRP*red-@zg#qee,e">walkwayMesh</variable>
<variable id="[_r.QsyJ}zx:~r#7dOWs">timeElapsedFromPreviousFrame</variable>
</variables>
<block type="bitbybit.occt.cleanAllCache" id="QR31vc_rE?~G4LWZn_Ku" x="-1063" y="-497">
<next>
<block type="bitbybit.babylon.scene.enableSkybox" id="g2?7,665O9*oKfd`$}{~">
<value name="Skybox">
<block type="bitbybit.babylon.enums.skyboxEnum" id="4smkPD!]:(oA]j_zF%|i">
<field name="bitbybit.babylon.enums.skyboxEnum">'clearSky'</field>
</block>
</value>
<value name="Size">
<block type="math_number" id="iE[@_w58.dWZ|B9/^)g*">
<field name="NUM">1000</field>
</block>
</value>
<value name="Blur">
<block type="math_number" id="w4AUNRb;`qdvsxTyP|zt">
<field name="NUM">0.4</field>
</block>
</value>
<value name="EnvironmentIntensity">
<block type="math_number" id="mX+to:~Mr!k3a~gavCfz">
<field name="NUM">0.8</field>
</block>
</value>
<next>
<block type="variables_set" id="h3/^N9un?cK)xZI`])qQ">
<field name="VAR" id="z1)P]:Q8Nc^e2e?^rZg7">grid</field>
<value name="VALUE">
<block type="bitbybit.draw.drawGridMesh" id="Z.U!)WMPm8C^~67p|8]A">
<value name="Width">
<block type="math_number" id="NlJ]uMr+_?b[Wd0Ib;D[">
<field name="NUM">400</field>
</block>
</value>
<value name="Height">
<block type="math_number" id="@YFnT7jVtGBbCR6DcLIf">
<field name="NUM">400</field>
</block>
</value>
<value name="Subdivisions">
<block type="math_number" id="{)F[+MfbWm~k`wFc]#8~">
<field name="NUM">10</field>
</block>
</value>
<value name="MajorUnitFrequency">
<block type="math_number" id="BbavQrC_+#uYV#G5mALj">
<field name="NUM">10</field>
</block>
</value>
<value name="MinorUnitVisibility">
<block type="math_number" id="+-9s2%fS0A^sqT3vB}%4">
<field name="NUM">0.45</field>
</block>
</value>
<value name="GridRatio">
<block type="math_number" id="u|iuQuBZ@T_;D6{*Q{p$">
<field name="NUM">0.5</field>
</block>
</value>
<value name="Opacity">
<block type="math_number" id="epC/Uy;ogFUOLXE0XFyE">
<field name="NUM">0.5</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id="%a3Oaia[ZHi.2:o1e@Ee">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="MainColor">
<block type="colour_picker" id="[;icG=(wU$JjtN;Y3!7T">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="SecondaryColor">
<block type="colour_picker" id="3fNOZ*=TRfgb8aW23vGX">
<field name="COLOUR">#ffffff</field>
</block>
</value>
</block>
</value>
<next>
<block type="bitbybit.babylon.scene.drawDirectionalLightNoReturn" id=":N!lMyflO|DXPXkvvx!R">
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id=",IpyUl+*$W!B%}{i;@;m">
<value name="X">
<block type="math_number" id="0~lWavHT+9Y411E],{i(">
<field name="NUM">-50</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="f/iQErYhZ,D/3X{JGtX`">
<field name="NUM">-100</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="TPF96OWWzHfKt#)04Ba9">
<field name="NUM">-50</field>
</block>
</value>
</block>
</value>
<value name="Intensity">
<block type="math_number" id="+E}Jx.qJ1`.S3h[6+%MK">
<field name="NUM">2</field>
</block>
</value>
<value name="Diffuse">
<block type="colour_picker" id="lBW%OG[oDPe!/B*.x0(~">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="Specular">
<block type="colour_picker" id="*$j7V%%~~zj/T+G71DD%">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="ShadowGeneratorMapSize">
<block type="math_number" id="b}qIh!iJg-HAHZBLq4_Z">
<field name="NUM">4000</field>
</block>
</value>
<value name="EnableShadows">
<block type="logic_boolean" id="Ca%;AMi}=jm+6d+K#([`">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="ShadowDarkness">
<block type="math_number" id="+rfYp/$yTvb!?J4/U{+f">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="variables_set" id="U`AV*w=ri,yufr9m%AD0">
<field name="VAR" id="{KFi.~;$`.^:S~:pGPLG">resSurfaceMain</field>
<value name="VALUE">
<block type="bitbybit.occt.transforms.translate" id=",jCT7HOat4a0Zwiri#2X">
<value name="Shape">
<block type="procedures_callreturn" id="^rg*oH5cttihO(x.{E23">
<mutation name="createInitialSurface">
</mutation>
</block>
</value>
<value name="Translation">
<block type="bitbybit.point.pointXYZ" id="e]GkJZ3G-p(Gr1qPn6Ke">
<value name="X">
<block type="math_number" id="7j;WB6x#]%8/o}h6u]8W">
<field name="NUM">-15</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="L6UCqCWn~OXWDS_XJur.">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="wEJr{.=0`e*`#ICg_gy!">
<field name="NUM">15</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="q`E(_JYLNTLtS27gVHS0">
<field name="VAR" id="_)rR8pCl7ac0%(xJKy_K">surfaceBottom</field>
<value name="VALUE">
<block type="bitbybit.occt.transforms.translate" id="pfWa{4R#I~$ogaBuC),m">
<value name="Shape">
<block type="variables_get" id="1W?Yp?8k!cbk*uPX9`iH">
<field name="VAR" id="_)rR8pCl7ac0%(xJKy_K">surfaceBottom</field>
</block>
</value>
<value name="Translation">
<block type="bitbybit.point.pointXYZ" id="{1L93+shNFb*cKF,h,u(">
<value name="X">
<block type="math_number" id="13!/U7hd,C+,b=1HyGmg">
<field name="NUM">-15</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="^mQ$_53d=Z0Z^NmDJ1?e">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="+)ps3VPs?Tcl*NwjqvWJ">
<field name="NUM">15</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="jNbyiNew1z}R}$`g/W=m">
<field name="VAR" id="ldD+4LNvts!5w[Pn%{pu">offsetResSurfaceMain</field>
<value name="VALUE">
<block type="bitbybit.occt.operations.offset" id="hcpro2*:1(Ji+UrNSwXp">
<value name="Shape">
<block type="variables_get" id="t19_|)mg8BmoF6-xY!$q">
<field name="VAR" id="{KFi.~;$`.^:S~:pGPLG">resSurfaceMain</field>
</block>
</value>
<value name="Distance">
<block type="math_number" id="b_6wKb*vsEHf|]mU44BR">
<field name="NUM">0.3</field>
</block>
</value>
<value name="Tolerance">
<block type="math_number" id="{gvo:YVzkyxxp+O9AE$^">
<field name="NUM">1e-7</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="V0r*[^mnIL]%*k1mx9f?">
<field name="VAR" id="^FR)0Ddc/OYd-|yG}z1g">faceToEvaluate</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.face.getFace" id=".[T0lx+!5#QYj[J$7x;w">
<value name="Shape">
<block type="variables_get" id="#LRlhX/p$G2#|Z(*^l!$">
<field name="VAR" id="ldD+4LNvts!5w[Pn%{pu">offsetResSurfaceMain</field>
</block>
</value>
<value name="Index">
<block type="math_number" id="ywQ+~-ofxNlqrI3*SYzI">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="6USfM^i^L-63QUpZ(a^`">
<field name="VAR" id="5M/tUeLH#WBo8c9eS6B=">uSubdivisions</field>
<value name="VALUE">
<block type="math_number" id="O|.8z7}+?fk]4uhUzPq=">
<field name="NUM">30</field>
</block>
</value>
<next>
<block type="variables_set" id="aThZj],C::+7?U$=bpO?">
<field name="VAR" id="K|Koc`l+CDW}3!pNIo!l">vSubdivisions</field>
<value name="VALUE">
<block type="math_number" id="+:U6D3d,g#`w_+kDwxR9">
<field name="NUM">33</field>
</block>
</value>
<next>
<block type="base_time_async_context" id="s!$up=7i^PSSX:lpgW/m">
<statement name="Then">
<block type="variables_set" id="/{*ZrCh7f=U/wS~N1Vm[">
<field name="VAR" id="1u?USp-?Oz$`IwPQ*#hc">uMin</field>
<value name="VALUE">
<block type="base_time_await_return" id="4dt{cK=5Ho~mBa7bt,yN">
<value name="Promise">
<block type="bitbybit.occt.shapes.face.getUMinBound" id="2b:g7+MCbn@L@|ooWJBy">
<value name="Shape">
<block type="variables_get" id="T2,FwPbA}G_I,U6uj`Pv">
<field name="VAR" id="^FR)0Ddc/OYd-|yG}z1g">faceToEvaluate</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="e]WEZt%^ah[uecM1^yxc">
<field name="VAR" id="}6uDqz(r(CCA}*my._s!">uMax</field>
<value name="VALUE">
<block type="base_time_await_return" id="g0E6;wR2=zCKy2c2/~n5">
<value name="Promise">
<block type="bitbybit.occt.shapes.face.getUMaxBound" id="lQKlMQsDGAfuSzO`1N^#">
<value name="Shape">
<block type="variables_get" id="K.n.)l0/w!DMY6k[:C(t">
<field name="VAR" id="^FR)0Ddc/OYd-|yG}z1g">faceToEvaluate</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="AB|GBlcQnn!q0bvb$=a~">
<field name="VAR" id="@ROlmvf}?w%|vAC}5/Uv">vMin</field>
<value name="VALUE">
<block type="base_time_await_return" id="##`d}t/RBS1|y37~ES8k">
<value name="Promise">
<block type="bitbybit.occt.shapes.face.getVMinBound" id="l61u2q2Ql-=XrU){tl|~">
<value name="Shape">
<block type="variables_get" id="@IpwkcF+w*ExD-0D|B[Y">
<field name="VAR" id="^FR)0Ddc/OYd-|yG}z1g">faceToEvaluate</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="iJ~2r3MU0T7H,$DCBhlS">
<field name="VAR" id="B4GJ,/r+G;0*@cpcz.h*">vMax</field>
<value name="VALUE">
<block type="base_time_await_return" id="g[}?L;ew`jvz_W+..{eu">
<value name="Promise">
<block type="bitbybit.occt.shapes.face.getVMaxBound" id="}nV(gb@}lSq$hN4hgCTj">
<value name="Shape">
<block type="variables_get" id="Tu[3W_``zs+5S`vf%?5J">
<field name="VAR" id="^FR)0Ddc/OYd-|yG}z1g">faceToEvaluate</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id=".B!/WX-Q.zxTRf*-MA`6">
<field name="VAR" id="XDJ,1#`g?AW/H4JSh$W;">uTotal</field>
<value name="VALUE">
<block type="math_arithmetic" id="6r+}lK*|ToUZji%^rqP0">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="*.Q6?Id[y1Ut+%V=oIUC">
<field name="VAR" id="}6uDqz(r(CCA}*my._s!">uMax</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="]FzQ$9d,D1whg{eNmkf8">
<field name="VAR" id="1u?USp-?Oz$`IwPQ*#hc">uMin</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="{WQUr;I_cADz)`,@.=mu">
<field name="VAR" id="VO{bl0#LNo4KR/~%?sQy">vTotal</field>
<value name="VALUE">
<block type="math_arithmetic" id="k).T-a|se!kdWsz_QuJ`">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="18;aaa$aV3_!d6gIdk^9">
<field name="VAR" id="B4GJ,/r+G;0*@cpcz.h*">vMax</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="6}:Z)Y`6i1%5R{b|D^y?">
<field name="VAR" id="@ROlmvf}?w%|vAC}5/Uv">vMin</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="^dmj1zZdDEJ@bLN#o.{C">
<field name="VAR" id="$p2$U}Vb3*GvO2k$]Om%">uStepDist</field>
<value name="VALUE">
<block type="math_arithmetic" id="bp!]v~7DF0W!OHWPn`/b">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id=")D#tk|zI=`;sH,{{KKLz">
<field name="VAR" id="XDJ,1#`g?AW/H4JSh$W;">uTotal</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="Ym8Q]RYoz[k#2Bise~j(">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="9|H#za6+H7}@6ZgN+QO,">
<field name="VAR" id="5M/tUeLH#WBo8c9eS6B=">uSubdivisions</field>
</block>
</value>
<value name="B">
<block type="math_number" id="o3ch.7#YgYFAm8)Vl=7a">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="yig2OSj1^Z-yIjIx3H`)">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
<value name="VALUE">
<block type="math_arithmetic" id="VMl.qmeHyibnjbzrfZgY">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="itMaa|EHFyGPrVfEW,n,">
<field name="VAR" id="VO{bl0#LNo4KR/~%?sQy">vTotal</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="hdh%@4L^zei{Nst}2ybe">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="~uF.`*2^sV.~PooZ1kSK">
<field name="VAR" id="K|Koc`l+CDW}3!pNIo!l">vSubdivisions</field>
</block>
</value>
<value name="B">
<block type="math_number" id="2y9Ta%V/u`R@o]iy5HmS">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="procedures_callnoreturn" id="l-*8PuqTPA3pT+ctk?7S">
<mutation name="createRoof">
</mutation>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
<block type="procedures_defreturn" id="ju+L5%,uFv/B=?j80zW4" x="-139" y="-533">
<field name="NAME">createInitialSurface</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="_qq]ad*hCt3SN~!l)u.T">
<field name="VAR" id=")JDd/$?9d@/)Q;8uHsOh">pts1</field>
<value name="VALUE">
<block type="lists_create_with" id="J6UG6uhyng{=#^lv,HDt">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="BYsKpqsK*_VL{8_9Iu{z">
<value name="X">
<block type="math_number" id="J1NvH,oQcAMPwKlbl4!_">
<field name="NUM">1</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="B`i!(^E(v!=:WMJcc]E:">
<field name="NUM">5</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="h?tH2=,9*]7k*5,QwuVZ">
<field name="NUM">-15</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="r:4*n~::v(Mj4$96X?:j">
<value name="X">
<block type="math_number" id=";ovk!HX^FudgbJQ3O/:y">
<field name="NUM">-3</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="7Ii)Uw3z@d7lzs?@pyUJ">
<field name="NUM">12</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="#$P.(a%^b[hlk:o4s)le">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="zOvK0zvD.!V))KiDA{h/">
<value name="X">
<block type="math_number" id="a654DKllMCb@jU}.$Ars">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="toYld}iiZnU|xUau6I{b">
<field name="NUM">4</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="p18muRg7cE^-lu(rFGCj">
<field name="NUM">17</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="n=s!sfT4LM;fk9EOr:~B">
<field name="VAR" id="OC![oF$0|+P/T?a;yJTj">pts2</field>
<value name="VALUE">
<block type="lists_create_with" id="HPRWL[Wh.3$a+Nom]k3%">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="1x4Q8PALrq`zGnD|0Y}h">
<value name="X">
<block type="math_number" id="UulK2dP4)q(HkSqvZ]6C">
<field name="NUM">10</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="oMVzNUg/8}~8_C)S~EG!">
<field name="NUM">3</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="+eD!52(R?s@x|.(4g~?N">
<field name="NUM">-7</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="{@em]6C=,XqS4TlX~d1L">
<value name="X">
<block type="math_number" id="h9}EFOn^H22bEPcw*qzi">
<field name="NUM">9</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="q86K4_hi_)C`N9neVi1~">
<field name="NUM">5</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="}TWYhqM1L}Qzv6c^Hy,o">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="6rv62!cP:(!KNF+eT9k2">
<value name="X">
<block type="math_number" id="*OU#e=p1Yr4LA?Y5EQ7{">
<field name="NUM">10</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="4f.%fzV/Mq#|*.o,;)Rq">
<field name="NUM">4</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="-tHrn1LP}W(gnupGz]mE">
<field name="NUM">8</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="RHRbQo8!$=-]H6aWkFx(">
<field name="VAR" id="~wVJAVr.~@%#AYbA:a-N">pts3</field>
<value name="VALUE">
<block type="lists_create_with" id="*V/el0#zm^jeZWC`=Rz3">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="5x5OaB_VeEaWc:p]3#K:">
<value name="X">
<block type="math_number" id="?SJ(01E^1v$:8U[8]evR">
<field name="NUM">20</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="26;.tZAMR/y5w*_iEJe;">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="#SFRVns:bGcx-?QNzJ!2">
<field name="NUM">-8</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="Nj)xr*z,^A1hUi:sGRY5">
<value name="X">
<block type="math_number" id="*B*PA@0s[1$n+azxDOly">
<field name="NUM">22</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="-L61yq/z8uxCw[zXU|$F">
<field name="NUM">5</field>
</block>
</value>
<value name="Z">
<block type="math_number" id=",G[MK6O3$B7_-YZ%LX_s">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="G_!3wqm[X[vg{aq_n7s?">
<value name="X">
<block type="math_number" id="1:y.yK(d[/0/xvL9N([K">
<field name="NUM">23</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="SxJPKg2@a#6Q4k/cMUth">
<field name="NUM">4</field>
</block>
</value>
<value name="Z">
<block type="math_number" id=":XE6CZv}y1SS,]Y,_Ik]">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="|1]N56Ni=HED)jY6GkSF">
<field name="VAR" id="SP{8^mo@bpDq_GT6lTS?">pts4</field>
<value name="VALUE">
<block type="lists_create_with" id="Odai^.gLO[IxT^%^;m[~">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="*)reQV/zG8~YIzi%5Px}">
<value name="X">
<block type="math_number" id="^]=sY5s06J[Zz@O+0(._">
<field name="NUM">25</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="Ma:+dnys^1ci.mq@+Gz(">
<field name="NUM">2</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="l}Oo!QF5s|UR~/8@XUL*">
<field name="NUM">-30</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="wP!R)srCyHm33=S_OmOY">
<value name="X">
<block type="math_number" id="g:.CsIpW(K(:|S=gZ!f2">
<field name="NUM">30</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="g=Xs)`WhqV078-F_ie~+">
<field name="NUM">8</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="b%Z0byh6ykh5Oq$fP0/s">
<field name="NUM">-25</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="_3dkm8@;D3gPe+8Y16kH">
<value name="X">
<block type="math_number" id="Ct~$WT|6$ElK8$TvIEPB">
<field name="NUM">40</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="GuiwLMh)^Bh|nR8W4:t`">
<field name="NUM">4</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="1svK(.;zvKd^!a1_QCSH">
<field name="NUM">-10</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="X!d)M*dMgk$46?X4/~@w">
<field name="VAR" id="SP{8^mo@bpDq_GT6lTS?">pts4</field>
<value name="VALUE">
<block type="lists_create_with" id="~2tAx06PVOd}CywA0VEV">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="=XAz=?-6v1W.{I*t(uP)">
<value name="X">
<block type="math_number" id="1njGl$6!3x@(~e+)Zf7R">
<field name="NUM">25</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="yR]^m[lP2+|1RV)F%Eed">
<field name="NUM">2</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="ndPOw{{@XK6$B/q]5!/y">
<field name="NUM">-20</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="IT,cAcS2W~XDEniV?y!8">
<value name="X">
<block type="math_number" id="1X8Culy0[xHHNS}m6LwT">
<field name="NUM">30</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="pK#$^dkJBsOGR0FH!m[J">
<field name="NUM">5</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="7E9p[Kd0IP|[j4n:|@~Y">
<field name="NUM">-20</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="j9P+udYZ,A)Z,G#DnZ16">
<value name="X">
<block type="math_number" id="k,FMfTu=Rn_L;2e~$-G@">
<field name="NUM">40</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="e4Fa#g3h)Gxt^r=oUVR=">
<field name="NUM">4</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="(ohp1my!d;?%AQ^pr.JY">
<field name="NUM">-21</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="`kFQi~A]Q9$yCA7`s_x-">
<field name="VAR" id="CBa30-Qz_F3Vu!Lw2u=|">pts5</field>
<value name="VALUE">
<block type="lists_create_with" id="`tXy@[wXzR(FbU$r,JbP">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="bitbybit.point.pointXYZ" id="r}|#;P~A@|d^I6ZAwCCy">
<value name="X">
<block type="math_number" id=";j~).p+xEX#%PC+h6Pp:">
<field name="NUM">15</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="o]eB+ZbsIP`QkNS.WL.N">
<field name="NUM">5</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="is7b)e,P{7v=NLki@des">
<field name="NUM">-30</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.point.pointXYZ" id="gfRkVQ=wMo[l]kLJ%p{X">
<value name="X">
<block type="math_number" id="|NU)Fxt_ihA~is1k_K_P">
<field name="NUM">30</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="sPP+v:J7m(igjg4sp;Q%">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="hOV%_PdC,uaqkO*_|9Mh">
<field name="NUM">-35</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.point.pointXYZ" id="e*7!4N5E)fa2$si849}K">
<value name="X">
<block type="math_number" id="%;`?C6Fs,!oK]vJPAPBz">
<field name="NUM">35</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="|0sO_t3n}_yYCU9`Qi0W">
<field name="NUM">5</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="t9-!GpeV@*`WP,a(MX2m">
<field name="NUM">-37</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id=".hSQd?g*6Tq-)eHHVerK">
<field name="VAR" id="D?;jOf0wLZbE4dA0t0jA">surfaceMain</field>
<value name="VALUE">
<block type="bitbybit.occt.operations.loft" id="UW;Bu0qOJyjy7peVQaGo">
<value name="Shapes">
<block type="lists_create_with" id="3+eAn}}hSzD]a+mmZo1%">
<mutation items="5">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="K:8PoY;R^5m}ZDMbt6ks">
<value name="Points">
<block type="variables_get" id="ntFj^@#?fRicjNXMN~d5">
<field name="VAR" id=")JDd/$?9d@/)Q;8uHsOh">pts1</field>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="Y.D@17qU+5Gs$`(4be%4">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="]^ckaOaEDc}O#L6I_jCf">
<value name="Points">
<block type="variables_get" id="RiS@z8)k)g`Km+45o{H#">
<field name="VAR" id="OC![oF$0|+P/T?a;yJTj">pts2</field>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="VF3%k}u0+^7PP2y^(?}z">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="y.EQWitz7zOVim|hRkq{">
<value name="Points">
<block type="variables_get" id="Ej|,AxtEB{BGuRz+RN$O">
<field name="VAR" id="~wVJAVr.~@%#AYbA:a-N">pts3</field>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="6`0?!f_+DB:Ie.;//H37">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ADD3">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="!}G70,ZlT#b2$,|7O[s*">
<value name="Points">
<block type="variables_get" id="8nn+*MJR-E1jZqk0h0Eg">
<field name="VAR" id="SP{8^mo@bpDq_GT6lTS?">pts4</field>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="/++#!]nOa8kW;POS9Ud5">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ADD4">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="Vb+#tA-iE5a/N!m%CI)B">
<value name="Points">
<block type="variables_get" id="y,+rHrw^C;,!S+tZ`iCC">
<field name="VAR" id="CBa30-Qz_F3Vu!Lw2u=|">pts5</field>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="mQp{DAebGSZuR?nxK%67">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="j=V8G*(R@3lNN^21{$cY">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="m!TP!$p-g)09-Kz``u:l">
<field name="VAR" id="_)rR8pCl7ac0%(xJKy_K">surfaceBottom</field>
<value name="VALUE">
<block type="bitbybit.occt.operations.loft" id="H={z8AjJ`HQ79/.7SZ94">
<value name="Shapes">
<block type="lists_create_with" id="HGnR^*Y4wI+7UJ#3/Dy4">
<mutation items="5">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="0|a*$wPd,Ski8TNZs247">
<value name="Points">
<block type="procedures_callreturn" id="W!#tv,Ni~9cMY7LIQ:_9">
<mutation name="flattenPointsOnY">
<arg name="points">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="=+d$yPkgYcy||MFcu0F=">
<field name="VAR" id=")JDd/$?9d@/)Q;8uHsOh">pts1</field>
</block>
</value>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="T=PA/T.$S=xRp(T+gMj2">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="z?#@sW5Wui~09;|J]]9`">
<value name="Points">
<block type="procedures_callreturn" id=")Dx$i=![Rhslwb[5BT/v">
<mutation name="flattenPointsOnY">
<arg name="points">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="SEmtZRb_BJnAhc.OUY09">
<field name="VAR" id="OC![oF$0|+P/T?a;yJTj">pts2</field>
</block>
</value>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="+k*-I{}Ew.,LN+_+|/9^">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="@Rp^[|@z,C;li((-MPI%">
<value name="Points">
<block type="procedures_callreturn" id="!O,GVV6ZCdsf)6(VeO2P">
<mutation name="flattenPointsOnY">
<arg name="points">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="r_.2)5)a*]hw23#^~[gp">
<field name="VAR" id="~wVJAVr.~@%#AYbA:a-N">pts3</field>
</block>
</value>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="yom}NTsxM(LW%Q~8E]]h">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ADD3">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="PQI1/auBnIox;W5bsWg8">
<value name="Points">
<block type="procedures_callreturn" id="6UFwp@@rZ_]02/tP%lxA">
<mutation name="flattenPointsOnY">
<arg name="points">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="Y=!)4BnL3+pv!j{62CT*">
<field name="VAR" id="SP{8^mo@bpDq_GT6lTS?">pts4</field>
</block>
</value>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="$w;=(H!^rHj,*Mh=]El3">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="ADD4">
<block type="bitbybit.occt.shapes.wire.createBSpline" id="7}E8[ES[X:[1bDUf%M,6">
<value name="Points">
<block type="procedures_callreturn" id="0EuC!5LgwK(/J+hl+5t4">
<mutation name="flattenPointsOnY">
<arg name="points">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="oCN*^/X6od4@G3bU/);(">
<field name="VAR" id="CBa30-Qz_F3Vu!Lw2u=|">pts5</field>
</block>
</value>
</block>
</value>
<value name="Closed">
<block type="logic_boolean" id="H-V~-jSgIBZ+a[B3U$j,">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="T*j+TgR}uBHhUdEkM)nU">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<value name="RETURN">
<block type="variables_get" id="=rB]L`pDBn#lUGJd(w|^">
<field name="VAR" id="D?;jOf0wLZbE4dA0t0jA">surfaceMain</field>
</block>
</value>
</block>
<block type="procedures_defreturn" id="-=WWu0iLKdY#,[b36hq@" x="730" y="-535">
<mutation>
<arg name="points" varid="CDZ0yV9i^/I4D(1hh:5N">
</arg>
</mutation>
<field name="NAME">flattenPointsOnY</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="variables_set" id="}Cr1=O3B7b3YtZS`-xlK">
<field name="VAR" id="[zm1f7j{n!%h6krajW07">transformedPoints</field>
<value name="VALUE">
<block type="lists_create_with" id="y[?(UIQnUgHRoJ|qJwdh">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="controls_forEach" id="IPL/,{h5cJ$$Cj66ZS}U">
<field name="VAR" id="m$+ZiW?SBj/+-L2AGg1h">j</field>
<value name="LIST">
<block type="variables_get" id="8NJjDhMPMxS7mYyMHwQ6">
<field name="VAR" id="CDZ0yV9i^/I4D(1hh:5N">points</field>
</block>
</value>
<statement name="DO">
<block type="lists_setIndex" id="_(~Nq}cr+=xG^4|ES[%B">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="ziY%l6fFGtR8O]UGAfXW">
<field name="VAR" id="[zm1f7j{n!%h6krajW07">transformedPoints</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.point.pointXYZ" id="WG-]k^w[LKc,s0;z:!sR">
<value name="X">
<block type="bitbybit.point.getX" id="Do;)A0@vfw.]x$}Xz3dm">
<value name="Point">
<block type="variables_get" id="i?=}Y|Kr(tJQ9+U[OatU">
<field name="VAR" id="m$+ZiW?SBj/+-L2AGg1h">j</field>
</block>
</value>
</block>
</value>
<value name="Y">
<block type="math_number" id="x-HZi3Ga_FJ^SMHYi8/d">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="bitbybit.point.getZ" id="qN!4)2^%t32T/y14BOJz">
<value name="Point">
<block type="variables_get" id="mG;BOL#[R2w+,IE[CTRk">
<field name="VAR" id="m$+ZiW?SBj/+-L2AGg1h">j</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
<value name="RETURN">
<block type="variables_get" id="IIgd)RQG!pH]oPM5aQiQ">
<field name="VAR" id="[zm1f7j{n!%h6krajW07">transformedPoints</field>
</block>
</value>
</block>
<block type="procedures_defnoreturn" id="~91$Fsn%zTRQD3-tl^S9" x="1871" y="-552">
<field name="NAME">createRoof</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="base_time_async_context" id="CsQs]l,BYvw@4`qrn@A3">
<statement name="Then">
<block type="variables_set" id="oB3]uK}u~_$p;?z?geU(">
<field name="VAR" id="zY,-3Xz-hVmXZ4oCNr_f">uvsPromise</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.face.subdivideToUV" id="ryy1OvF!cH@wn_IkmA2{">
<value name="Shape">
<block type="variables_get" id="TZXi(/yyZIY6asR:OjW_">
<field name="VAR" id="^FR)0Ddc/OYd-|yG}z1g">faceToEvaluate</field>
</block>
</value>
<value name="NrDivisionsU">
<block type="variables_get" id="3zTprA;y0={byDP,16Pu">
<field name="VAR" id="5M/tUeLH#WBo8c9eS6B=">uSubdivisions</field>
</block>
</value>
<value name="NrDivisionsV">
<block type="variables_get" id="g$KOz!y/Vna?D%{!BVuw">
<field name="VAR" id="K|Koc`l+CDW}3!pNIo!l">vSubdivisions</field>
</block>
</value>
<value name="ShiftHalfStepU">
<block type="logic_boolean" id="UjsS`h$#_;s2G(HUwH%u">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="RemoveStartEdgeU">
<block type="logic_boolean" id="PU`X8Af8yuNZmrXnoPxb">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="RemoveEndEdgeU">
<block type="logic_boolean" id="@K~Nh~:8^6qEK#/8E#8I">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="ShiftHalfStepV">
<block type="logic_boolean" id="=r)6)Zk|HCm3+Puxdg?E">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="RemoveStartEdgeV">
<block type="logic_boolean" id="3:1rA8z;fp@0|Gsr;PL*">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="RemoveEndEdgeV">
<block type="logic_boolean" id="RIVMPOzEcj)$I~T;GNg.">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<next>
<block type="base_io_console_log" id="zvrm[.BOgur.!B-y(=IL">
<value name="Text">
<block type="variables_get" id="8r8E@6{wAGwZSmKQiP`{">
<field name="VAR" id="$p2$U}Vb3*GvO2k$]Om%">uStepDist</field>
</block>
</value>
<next>
<block type="base_io_console_log" id="f]APWtNthH]7(SX)pvPH">
<value name="Text">
<block type="variables_get" id="eZ),$wD;yE4QR0B6Y-)G">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<next>
<block type="variables_set" id="=AeAiN5{Pm!E93uvk`9v">
<field name="VAR" id="SXdUZ]|Yz(6xfEDCx_wd">uvs</field>
<value name="VALUE">
<block type="base_time_await_return" id="a^:7^@2#FPF|X0PCd9Y9">
<value name="Promise">
<block type="variables_get" id="%uN8voveC3bpR[37gPNc">
<field name="VAR" id="zY,-3Xz-hVmXZ4oCNr_f">uvsPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="R]BQtk1{KUh/vO8Vx66x">
<field name="VAR" id="VuD}(DXs1m6QMh7.FUZw">prlOuterTranslatedPromise</field>
<value name="VALUE">
<block type="lists_create_with" id="Z:tG1]H4Y2+SPL,/PUw0">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="ml};7F*KuWL2m1MV_4$v">
<field name="VAR" id="[KonGC98P9UI$KTOaZ0x">prlTranslatedInnerPromise</field>
<value name="VALUE">
<block type="lists_create_with" id="qzfs1Uw0GeBZ1Q-]}@CO">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="eH{Jtqi]k/`IQ=t+slg4">
<field name="VAR" id="|$PN]{}GVX[u:7#KZ}]j">prlTranslatedCenterPromise</field>
<value name="VALUE">
<block type="lists_create_with" id="KFCiz/s,x!*Up.)bL[P;">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="%RR@yCMOliTCZP}VafP`">
<field name="VAR" id="z=G]bU^k~e{7NB?oW4^D">parallelogramOuter</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.createParallelogramWire" id="OBZi}1w=6zwJiRZ+I?Pc">
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="x|1CBg^R[v_s-^k=WI76">
<value name="X">
<block type="math_number" id="DIDe^J}7{-F=}zFQ+^^e">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="GL^@ZYY3G5HXFSyi.hk)">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="wb5Y?%][CKnhR0-o$X}_">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="~E}|b1.D(g[*U~Z`CG!L">
<value name="X">
<block type="math_number" id="v0h[h8d?lc?2Yb0`|I1%">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="Zf@4za*$OjML*C1{qOBn">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="#/+fzrD*vwxZMpg!%C},">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="AroundCenter">
<block type="logic_boolean" id="4L1T}BU[9S-FY(_06$aK">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Width">
<block type="variables_get" id="$B%^hvh1CCR}FMLG!g?U">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<value name="Height">
<block type="variables_get" id="TmT(^J5|S^,;dTsEPetF">
<field name="VAR" id="$p2$U}Vb3*GvO2k$]Om%">uStepDist</field>
</block>
</value>
<value name="Angle">
<block type="math_number" id="gg6/3gXMzTFK.+M{:Vml">
<field name="NUM">30</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="^.F#QR8l9Uio.bsF#EO;">
<field name="VAR" id="i*GbLP4K*{nZ^r(aot$0">parallelogramCenter</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.createParallelogramWire" id="$g0Xc.sor^6Xzu(QhS(5">
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="A}p/k8cjY6T_@!feDD}!">
<value name="X">
<block type="math_number" id="m/Nx#S#(T,%tU#4d!NAt">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="lR3g_Y##8UhYSvwaX1@Q">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="0fugz~!vx3@^oPU_pWK9">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="HT(,S4+culR|h(:nM`E^">
<value name="X">
<block type="math_number" id="W+A^`?;Vv-`5`3j$)9%9">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="mE66_LC2H5?]ql#k;x)H">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="4iCWMc{GUZH9ib,4bF:#">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="AroundCenter">
<block type="logic_boolean" id="-r-mQ-sTg,1W/h%Q(yd_">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Width">
<block type="math_number" id="IaHdt!7f2R,a`+uzzI;u">
<field name="NUM">0.00002</field>
</block>
</value>
<value name="Height">
<block type="math_number" id="6]7kV9:hI6Zmj!Yuy/Dn">
<field name="NUM">0.00002</field>
</block>
</value>
<value name="Angle">
<block type="math_number" id="-vMeTrcqbD)+g%l:Y5.;">
<field name="NUM">30</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="9)A`%`F.#=V%ndYCcqC+">
<field name="VAR" id="r+/!Yi8+#X!-eR|s|rGI">prallelogramInner</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.createParallelogramWire" id="vg+]|IAB|fm-%?(KgeP[">
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="Phi8*p4=|/_5Hv7mcYTy">
<value name="X">
<block type="math_number" id="V72P[4e9Izj7|%Mf{:}3">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="6}*4]wF)pMWC).pr$E{J">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id=";M)iuP9uvAU^:O@4=`3w">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="3W^z30`I4n%nh/xS,G,Z">
<value name="X">
<block type="math_number" id="q2mW,_r@o`~eZ[+PU.0H">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="j[5|cfUg]Y-)[+?24f_K">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="K$2j;)i44u8$GLWrrH_,">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="AroundCenter">
<block type="logic_boolean" id="Z~p}}X[wOw-x.T#RL1H@">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Width">
<block type="math_arithmetic" id="3p0Hg$wX*U]217x?Earm">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="#_yN=u#}JsvdwlU,t,[3">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<value name="B">
<block type="math_number" id="0QjV:_!TCH:jfYBGD0Se">
<field name="NUM">0.8</field>
</block>
</value>
</block>
</value>
<value name="Height">
<block type="math_arithmetic" id="y2{y^%]M7YRfwOnM4#qn">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="QM^Tmxy=I,^Tb)`7xUrO">
<field name="VAR" id="$p2$U}Vb3*GvO2k$]Om%">uStepDist</field>
</block>
</value>
<value name="B">
<block type="math_number" id="1q.MHX-SVEEKayHR)n;;">
<field name="NUM">0.8</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="math_number" id="s1;mV0MFE-mu+6E@Es0l">
<field name="NUM">30</field>
</block>
</value>
</block>
</value>
<next>
<block type="controls_forEach" id="|=_O_O8=DIE2fm|g%h+d">
<field name="VAR" id="{MJv/x02PeZvH9A#m?Jo">i</field>
<value name="LIST">
<block type="variables_get" id="C~-1JA@y6gwH4(MeFPy[">
<field name="VAR" id="SXdUZ]|Yz(6xfEDCx_wd">uvs</field>
</block>
</value>
<statement name="DO">
<block type="variables_set" id="+-a(/2}m}LwkuU@Y:2fX">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
<value name="VALUE">
<block type="bitbybit.point.pointXYZ" id="M,t/`7X2kWAc?k*waO@y">
<value name="X">
<block type="lists_getIndex" id="e5%k35~k4/(H:9L5c(fl">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">LAST</field>
<value name="VALUE">
<block type="variables_get" id="t}Q2:~.e.E*HuhTY9?B#">
<field name="VAR" id="{MJv/x02PeZvH9A#m?Jo">i</field>
</block>
</value>
</block>
</value>
<value name="Y">
<block type="math_number" id="*@!qD]!%-yR5=8n]*t3:">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="lists_getIndex" id="=e4:PHT5uQ[lG9O0.a[C">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FIRST</field>
<value name="VALUE">
<block type="variables_get" id="N0%-.a=.V|a,/4VKbQ=C">
<field name="VAR" id="{MJv/x02PeZvH9A#m?Jo">i</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id="#wtH85KfXo:9yw.H75m]">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="YIaFF^!0jNiL7MoN1yU=">
<field name="VAR" id="VuD}(DXs1m6QMh7.FUZw">prlOuterTranslatedPromise</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.transforms.translate" id="d~oGvOuxuV?7Li=ODE#i">
<value name="Shape">
<block type="variables_get" id="iG_zQ^x86CT2I4*5u7Iu">
<field name="VAR" id="z=G]bU^k~e{7NB?oW4^D">parallelogramOuter</field>
</block>
</value>
<value name="Translation">
<block type="variables_get" id="4RNf13zP;fZk@pccRVAr">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id=",Ds$A]U#*oKcsbA5q3SY">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="WkIQpIS9./wl2MpE58$n">
<field name="VAR" id="[KonGC98P9UI$KTOaZ0x">prlTranslatedInnerPromise</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.transforms.translate" id="WvsLZAoEGM|VF.kF|xHE">
<value name="Shape">
<block type="variables_get" id="[dsMtJ66*m45PGqyTWVW">
<field name="VAR" id="r+/!Yi8+#X!-eR|s|rGI">prallelogramInner</field>
</block>
</value>
<value name="Translation">
<block type="variables_get" id="(eBvl!(m=dNBf[5B4;I,">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id="tRd~82O4_%+^m|;l=9Gq">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="Q]QZ;uO~w4oy.,x(~m8*">
<field name="VAR" id="|$PN]{}GVX[u:7#KZ}]j">prlTranslatedCenterPromise</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.transforms.translate" id="%vokxyPh6b?#4we8Qa1(">
<value name="Shape">
<block type="variables_get" id="%;6zQ(6:Kkh%d:|y``j!">
<field name="VAR" id="i*GbLP4K*{nZ^r(aot$0">parallelogramCenter</field>
</block>
</value>
<value name="Translation">
<block type="variables_get" id="Yx5N%~Nlev|Im9DcJ[ov">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="variables_set" id="Rfuw+6XfU{,jfXXgz0Ur">
<field name="VAR" id="[aGwA%Xg!t{a)tJ5}eD:">prlOuterOnFace</field>
<value name="VALUE">
<block type="base_time_await_return" id="7wxRZ.~)6BcX~?|qmR`z">
<value name="Promise">
<block type="bitbybit.occt.shapes.wire.placeWiresOnFace" id="[A%2k@sC*yap^O#5V}z*">
<value name="Wires">
<block type="variables_get" id="93{n4}2}|*CfuM5}+m^H">
<field name="VAR" id="VuD}(DXs1m6QMh7.FUZw">prlOuterTranslatedPromise</field>
</block>
</value>
<value name="Face">
<block type="bitbybit.occt.shapes.face.getFace" id="FG08Q)blH%0$7uPUzlkc">
<value name="Shape">
<block type="variables_get" id="E_E6Wl2.V~R}TLMmNKIN">
<field name="VAR" id="ldD+4LNvts!5w[Pn%{pu">offsetResSurfaceMain</field>
</block>
</value>
<value name="Index">
<block type="math_number" id="QjL#._UobfPxEjBEau12">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="1X4:l=`AG:,].81J;k!R">
<field name="VAR" id="3={IRQ9.s+1YNZC(R|C[">prlInnerOnFace</field>
<value name="VALUE">
<block type="base_time_await_return" id="^Hy07fbP~E`V`h*-NeO|">
<value name="Promise">
<block type="bitbybit.occt.shapes.wire.placeWiresOnFace" id="vC](q=7D[3P*B+vS#NI4">
<value name="Wires">
<block type="variables_get" id="4=wzF32Mlj0/+7sJyQ6y">
<field name="VAR" id="[KonGC98P9UI$KTOaZ0x">prlTranslatedInnerPromise</field>
</block>
</value>
<value name="Face">
<block type="bitbybit.occt.shapes.face.getFace" id=";i~RVl.|BGu1(rAwy6Oi">
<value name="Shape">
<block type="variables_get" id="r+8StO]LfNBQV)_CQxR3">
<field name="VAR" id="ldD+4LNvts!5w[Pn%{pu">offsetResSurfaceMain</field>
</block>
</value>
<value name="Index">
<block type="math_number" id="Er}3Cr4P^5d._2k:X/yA">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="]P0H)Jzm$G3k)ulq|qn_">
<field name="VAR" id="-bZIDPD6jxuP!iFMX[((">prlCenterOnFace</field>
<value name="VALUE">
<block type="base_time_await_return" id="jPB4`7gdslwnTMJDZzJ^">
<value name="Promise">
<block type="bitbybit.occt.shapes.wire.placeWiresOnFace" id="cNZhURwpItB@?roOCw;d">
<value name="Wires">
<block type="variables_get" id="~maF4)7^c8/m[S4?YP|[">
<field name="VAR" id="|$PN]{}GVX[u:7#KZ}]j">prlTranslatedCenterPromise</field>
</block>
</value>
<value name="Face">
<block type="bitbybit.occt.shapes.face.getFace" id="p6;LYau52dxu@m~-MG+X">
<value name="Shape">
<block type="variables_get" id="O7sF2rScE%rLU2kq90bM">
<field name="VAR" id="ldD+4LNvts!5w[Pn%{pu">offsetResSurfaceMain</field>
</block>
</value>
<value name="Index">
<block type="math_number" id="Gbjwf,0j?RFuX:Vf.7%l">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="maO)e=c+F)st6x,THPJb">
<field name="VAR" id=",gKkM!R;f4g;gS^{t8fI">framesTopPromise</field>
<value name="VALUE">
<block type="lists_create_with" id="IY@q.7C^8*b(trJm6d70">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="E;=#Jtzr9]pqz1{UyY!F">
<field name="VAR" id="AB[dWnl[/fDKtNAp#;HU">framesBottomPromise</field>
<value name="VALUE">
<block type="lists_create_with" id="!H#XSMq1({S=B.NMgaw$">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="R#M^!xJTElt-ojmc8GR=">
<field name="VAR" id="jZX5)i68[Y)`yPY_noM^">windowsPromise</field>
<value name="VALUE">
<block type="lists_create_with" id="a~O`iQ(+61vT(i)MMm}W">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="controls_for" id=")mhw6F1N~g_5LuN@}*NW">
<field name="VAR" id="3-ph`bM~;B3iFbn2+4zw">k</field>
<value name="FROM">
<block type="math_number" id="pN;l6@n]5u^y]HJ|6kX~">
<field name="NUM">1</field>
</block>
</value>
<value name="TO">
<block type="lists_length" id="qj7!kV^zRl:hlE)?+we5">
<value name="VALUE">
<block type="variables_get" id="ydL[+*-143sz.kT,nM:k">
<field name="VAR" id="3={IRQ9.s+1YNZC(R|C[">prlInnerOnFace</field>
</block>
</value>
</block>
</value>
<value name="BY">
<block type="math_number" id="LmO@}SN+5tR.,H9K0l+3">
<field name="NUM">1</field>
</block>
</value>
<statement name="DO">
<block type="variables_set" id="g)P@[f6[ak@va2H:0PTr">
<field name="VAR" id="xG.4OQ~o,(4v5s+0r$4|">frameThickness</field>
<value name="VALUE">
<block type="math_number" id="xHNtoG9*VvOJxB.u#gUr">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="controls_if" id="bW35iP{+u]}KpDY;~DeH">
<mutation else="1">
</mutation>
<value name="IF0">
<block type="logic_compare" id="q`|QOy}pc_9!)m1;eE!!">
<field name="OP">EQ</field>
<value name="A">
<block type="bitbybit.math.modulus" id="yCE.$PO*`eh?pF;n*:i0">
<value name="Number">
<block type="variables_get" id="TXuh`9K}vVyVD`,_ieg+">
<field name="VAR" id="3-ph`bM~;B3iFbn2+4zw">k</field>
</block>
</value>
<value name="Modulus">
<block type="math_number" id="zZD06E4+t5.=X%%6nPxR">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="@PX]ty=UUtjQ+Puz+sq}">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="Eg@FNU^PR]E*BUyJZSIp">
<field name="VAR" id="xG.4OQ~o,(4v5s+0r$4|">frameThickness</field>
<value name="VALUE">
<block type="math_number" id="jDB*/FYaU4Wo@y?Hsi3m">
<field name="NUM">-0.1</field>
</block>
</value>
</block>
</statement>
<statement name="ELSE">
<block type="variables_set" id="ar:ZF=8ur){^T@,}F.+x">
<field name="VAR" id="xG.4OQ~o,(4v5s+0r$4|">frameThickness</field>
<value name="VALUE">
<block type="math_number" id="yxXDftNo|NJ1ZWfgol=U">
<field name="NUM">-0.2</field>
</block>
</value>
</block>
</statement>
<next>
<block type="lists_setIndex" id="YLwFx:PG_=*M`cq83Rg9">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="*N[,4S-hs;tHxI2qX!eH">
<field name="VAR" id=",gKkM!R;f4g;gS^{t8fI">framesTopPromise</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.operations.makeThickSolidSimple" id="Z!5?#6tN58UB#uY1d^)@">
<value name="Shape">
<block type="bitbybit.occt.operations.loft" id="D;(IfsS/Rk14?-l6Bxa_">
<value name="Shapes">
<block type="lists_create_with" id="BC`x1Cow$jcMN[UrguWc">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="lists_getIndex" id="KH4pDuzeOkL4djdQPTYp">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="G[{I=3Qw7/Jec90Km/*C">
<field name="VAR" id="[aGwA%Xg!t{a)tJ5}eD:">prlOuterOnFace</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id=";XEM5L|(Ril8o6%4L*T[">
<field name="VAR" id="3-ph`bM~;B3iFbn2+4zw">k</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="lists_getIndex" id="n6T|EOCW=]4lvVPnbN$r">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="=c6URBR[~Z$qA(bF.Bu^">
<field name="VAR" id="3={IRQ9.s+1YNZC(R|C[">prlInnerOnFace</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="[2|g;Kdhz`tpUaxwFK7G">
<field name="VAR" id="3-ph`bM~;B3iFbn2+4zw">k</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="E5uI|U4i#Ej-[1uHoDRr">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="Offset">
<block type="variables_get" id="m#1V0t]]`h3n};Dg1nx:">
<field name="VAR" id="xG.4OQ~o,(4v5s+0r$4|">frameThickness</field>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id="8qx{ZnFtXdC~rj0zclr(">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="*(~a^*zvK5bwj@RXsGcE">
<field name="VAR" id="AB[dWnl[/fDKtNAp#;HU">framesBottomPromise</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.operations.makeThickSolidSimple" id="_||o`DN{#Jty,N=d4M(y">
<value name="Shape">
<block type="bitbybit.occt.operations.loft" id="%yv=zKoElZFn`1Rm-#,@">
<value name="Shapes">
<block type="lists_create_with" id="spNyE@m(0_n9*OxBG|2}">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="lists_getIndex" id="aun[vH=YU)rhS7M/o%~*">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="CQ;yJoX|sAdX*.*_HM4E">
<field name="VAR" id="3={IRQ9.s+1YNZC(R|C[">prlInnerOnFace</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="3.evBP)Q@WK7um4U^P5r">
<field name="VAR" id="3-ph`bM~;B3iFbn2+4zw">k</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="lists_getIndex" id="DsgW@pw66jF_,BdygkUZ">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="$mq9/2T8cm}dsH7rdHY3">
<field name="VAR" id="[aGwA%Xg!t{a)tJ5}eD:">prlOuterOnFace</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="/.x(mi`b!@PgM%MD05IZ">
<field name="VAR" id="3-ph`bM~;B3iFbn2+4zw">k</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="KLsm`:(okFmO:0_Tg7;K">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<value name="Offset">
<block type="math_arithmetic" id="kZ;pEF6[Nh#0xY{U:qMs">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="~uhP4)bj;i_~NCa*iImV">
<field name="VAR" id="xG.4OQ~o,(4v5s+0r$4|">frameThickness</field>
</block>
</value>
<value name="B">
<block type="math_number" id="!b+H;_ep~(F/MY4evT*8">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id=".@O-h0rqe.)A#O#0%z^R">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="EGb[4}bG7j/43yhOVrSP">
<field name="VAR" id="jZX5)i68[Y)`yPY_noM^">windowsPromise</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.shapes.face.reversedFace" id="WX_K4!kENH3;#Y)![lZ|">
<value name="Shape">
<block type="bitbybit.occt.operations.loft" id="=rLB:oi-q^UItsM.*=I)">
<value name="Shapes">
<block type="lists_create_with" id="e`!]{nn,+y2{`vsqy/:-">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="lists_getIndex" id="[|auIqrU7`5a-kR|i8zm">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="]X6o:@Lk+lNzRhG893?k">
<field name="VAR" id="3={IRQ9.s+1YNZC(R|C[">prlInnerOnFace</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="7`tHRiTJJxCnSuP~PUt]">
<field name="VAR" id="3-ph`bM~;B3iFbn2+4zw">k</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="lists_getIndex" id="88(P|%kQ:puB+L+yKM[M">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="^]_HJwPSk4fKx,VA6Fo[">
<field name="VAR" id="-bZIDPD6jxuP!iFMX[((">prlCenterOnFace</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="]W{)LnY9da*Ahbd6WC,I">
<field name="VAR" id="3-ph`bM~;B3iFbn2+4zw">k</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="bBRquJMD(3DrH6TEKR;O">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="variables_set" id="BT?x^*{r(_K/#NCHF)!6">
<field name="VAR" id="(w_I)eNw(w^A2^!fDaoR">roofElements</field>
<value name="VALUE">
<block type="lists_create_with" id="AoW)Ux2vp+1n1~HuvImg">
<mutation items="3">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.shapes.compound.makeCompound" id="QM~opaA(DQI2`P:q!o]6">
<value name="Shapes">
<block type="variables_get" id="xL1I,vt/)HZr@-pR+B!g">
<field name="VAR" id=",gKkM!R;f4g;gS^{t8fI">framesTopPromise</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.occt.shapes.compound.makeCompound" id="|78tHs6JP$CSk)S6OE:P">
<value name="Shapes">
<block type="variables_get" id="|TFJWb?{qJ75(_4SVnop">
<field name="VAR" id="AB[dWnl[/fDKtNAp#;HU">framesBottomPromise</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block type="bitbybit.occt.shapes.compound.makeCompound" id="i1rh;eh8dI]|@gDxP#~T">
<value name="Shapes">
<block type="variables_get" id="z7CUmG|-?o%/t{n%-VEX">
<field name="VAR" id="jZX5)i68[Y)`yPY_noM^">windowsPromise</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="procedures_callnoreturn" id="%]qRLAU:_m:m^QQYE}Bf">
<mutation name="createColumns">
<arg name="roofElements">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="SF=2@C,@=+m#wlBdh6BY">
<field name="VAR" id="(w_I)eNw(w^A2^!fDaoR">roofElements</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" id=":W.^|z$(WGWsLeJlw(aV" x="3492" y="-538">
<mutation>
<arg name="roofElements" varid="(w_I)eNw(w^A2^!fDaoR">
</arg>
</mutation>
<field name="NAME">createColumns</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="base_time_async_context" id="Y`~l+CuW/+_T2{OE%_yZ">
<statement name="Then">
<block type="variables_set" id="-JFB0C?jqRB)As{;8?Y5">
<field name="VAR" id="$yivl^(Am[EkP_A06+[|">uDivColumns</field>
<value name="VALUE">
<block type="math_number" id="zIDb,g?@TU4AK{Ax=b+Q">
<field name="NUM">6</field>
</block>
</value>
<next>
<block type="variables_set" id="qDV=172Ay~?*yoJYDs}w">
<field name="VAR" id="^rvuq!wt/JF*90FsJOeQ">vDivColumns</field>
<value name="VALUE">
<block type="math_number" id="n-7oR%VQ./h^2m_pRBM(">
<field name="NUM">3</field>
</block>
</value>
<next>
<block type="variables_set" id=")5P={|[c$LRM9g=,cwsc">
<field name="VAR" id="/%(HsU-ilHZm{!Zif:#Y">groundFace</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.face.getFace" id="A{kgn$fN4d./FfS`$/.:">
<value name="Shape">
<block type="variables_get" id="r_u@X$H^QyD+8p%OV~/I">
<field name="VAR" id="_)rR8pCl7ac0%(xJKy_K">surfaceBottom</field>
</block>
</value>
<value name="Index">
<block type="math_number" id="O=%CLqw;1(VQyNTY_:)y">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="O+Ut{v0v/7?)IpbGV8k)">
<field name="VAR" id="*lx^8ZUn[Q^L|qSZuhHY">uvsGroundPromise</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.face.subdivideToUV" id="q$wR7z3kIOIJ%)|~LM^N">
<value name="Shape">
<block type="variables_get" id="LcH+3jhfUNutlxL-s[S0">
<field name="VAR" id="/%(HsU-ilHZm{!Zif:#Y">groundFace</field>
</block>
</value>
<value name="NrDivisionsU">
<block type="math_number" id="fWr(Yiw5!9o*/FBa#cAM">
<field name="NUM">3</field>
</block>
</value>
<value name="NrDivisionsV">
<block type="math_arithmetic" id="oYq:Yd;cT,UQiz;a296=">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id=",KDXKD!BS%2.!jgnOJ$D">
<field name="VAR" id="K|Koc`l+CDW}3!pNIo!l">vSubdivisions</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="f,BqYKm0r-1b!b@%$e;2">
<field name="VAR" id="^rvuq!wt/JF*90FsJOeQ">vDivColumns</field>
</block>
</value>
</block>
</value>
<value name="ShiftHalfStepU">
<block type="logic_boolean" id="IMnuG)}8%H99Waswpbup">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="RemoveStartEdgeU">
<block type="logic_boolean" id="Yu]DCGNCV1G/Zr{0;*1n">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="RemoveEndEdgeU">
<block type="logic_boolean" id="M2`WopN23;;#N:B*(jEP">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="ShiftHalfStepV">
<block type="logic_boolean" id="5zPSj`[U2*SjJ.U-{8I?">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="RemoveStartEdgeV">
<block type="logic_boolean" id="7RQjlGg:]NyDm|)4n66}">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="RemoveEndEdgeV">
<block type="logic_boolean" id="eMFxngzsdG_cG$:L#/BC">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="VA+APF:$uuih/Uy~uyrX">
<field name="VAR" id="TdcI-~EpnVX}!RhQtDWM">wireOnMiddleColumn</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.createParallelogramWire" id="chULa?@$cs(3|F%+RheF">
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="Y{?}|3(AzfmzYo{TZhb[">
<value name="X">
<block type="math_number" id="^[PqG`@Jihs*bW]j0;Pa">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=")(=fWBhn~g^C63ooMys5">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="$XuBJ02C?i#.7%g7:SPt">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="]o_JdqlZs5aHIG$UJhUV">
<value name="X">
<block type="math_number" id="SoWA`v3$22Qy(4!^qvfH">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="Mc9uTXp;yj6D3YgZ60a_">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="nC[Vm_=}JW)@2}0i@ec6">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="AroundCenter">
<block type="logic_boolean" id="o2,+qgX/whbt}6/AcnP1">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Width">
<block type="math_arithmetic" id="mq`fc++yKn((;kL7JgNK">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="-BZKb`TNMc}PIM)#.48]">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<value name="B">
<block type="math_number" id="L,.d7`Pb+R]F$,`l`GrE">
<field name="NUM">4</field>
</block>
</value>
</block>
</value>
<value name="Height">
<block type="math_arithmetic" id="g[0J07(q}x4zwMZb$Y9Z">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="wj|g$V[[dwmFkrL0Fk-+">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<value name="B">
<block type="math_number" id="H~qK71(wmFK0y9j#R@|}">
<field name="NUM">-7</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="math_number" id="/$Vb[R?vN4#RA?)F:(:y">
<field name="NUM">30</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="+U$vEXZZq%3x,;ACHmc$">
<field name="VAR" id="6Ev54^^AhgVN#L,t([Zf">wireOnGroundForColumn</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.createParallelogramWire" id="9vKmrB+L_*5^*N81Cj9`">
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="M8PZ{K:y{tv3R~LVk@2!">
<value name="X">
<block type="math_number" id=".QR*ZxXt7uWe*5i3{[zj">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="qdTYA)Y;+-uM%uIQr.Xs">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="TL7%m6a/sBg3SZuT8F%n">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id=".7@XbQMZ`5EDP4!$AuG5">
<value name="X">
<block type="math_number" id="[1v-pjIAK?V=A{{ocZH?">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="qvViHgI)IZ(4q,Q+Zfl{">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="{XW?fd5[`K1sKE^}frG#">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="AroundCenter">
<block type="logic_boolean" id="j)CwlJ^r2;^Sx?X,=B?]">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Width">
<block type="math_arithmetic" id="EeD)D3J}l=1`kR8,#^5B">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="U#md1@*}09C{,6Fo*a-^">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<value name="B">
<block type="math_number" id="JAEl@P8G#sO~WE#n+Fk-">
<field name="NUM">3</field>
</block>
</value>
</block>
</value>
<value name="Height">
<block type="math_arithmetic" id="ey,SmD{.yu`yn,X8|WcI">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="z[uqhVn)KAVv6g%t%@_q">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<value name="B">
<block type="math_number" id="9sxe%^B{xvCT[nvH?6xd">
<field name="NUM">-3</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="math_number" id="aFTw;2G3g!--ukodn]gu">
<field name="NUM">15</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="ns;XtZ;Is8ysDh$1G67z">
<field name="VAR" id="V/60%4QKJ38i9{K=U9N,">wireOnRoofForColumn</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.wire.createParallelogramWire" id="!fjkbpjtqP@}LM+cl.FE">
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="/uTQE?M8)LhOQ(T/791B">
<value name="X">
<block type="math_number" id="]KmO{FejHTlH]]3K%tcj">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="#E@4)y5ha[?LB[Usfh~X">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="E]::F3#*E{,=jU$ws(z8">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="JG2.ekbs+|,rKG20,(E(">
<value name="X">
<block type="math_number" id="*(3nw1:Q~5cG4%nj[~^V">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="I;=UQ.Rr-!{pdtw}pY=5">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="0?C;;U3$@%n,2xCR_QrJ">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="AroundCenter">
<block type="logic_boolean" id="MRkke!W#vi_SQYI*)@46">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="Width">
<block type="math_arithmetic" id="*zlFQt?dj.5VP@kX?p)?">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="ZPv#xB,YegD5jvYl9Zio">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<value name="B">
<block type="math_number" id="uXY*)G-I6Sn|B~Pp%RBm">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="Height">
<block type="math_arithmetic" id="{)qat%5a},@]{og|9Vn@">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id=";/g!R1q[J~6}*Pn%5_0t">
<field name="VAR" id="MhMGcmNTJe=DNNHgm5?q">vStepDistance</field>
</block>
</value>
<value name="B">
<block type="math_number" id="v!aqRd[YbSwiIgk7cqF,">
<field name="NUM">-8</field>
</block>
</value>
</block>
</value>
<value name="Angle">
<block type="math_number" id="D8`iJ}D_GO+(]!W$SrGf">
<field name="NUM">30</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="/zH=IV(eTk$9;552Bd@V">
<field name="VAR" id="!eaT~+j[NqITtgX2;rg[">faceToEvalColumns</field>
<value name="VALUE">
<block type="bitbybit.occt.shapes.face.getFace" id="og@z[pK)OEh73n6x|%A#">
<value name="Shape">
<block type="bitbybit.occt.operations.offset" id="LZZ`geA;VpWDn]2!`mX+">
<value name="Shape">
<block type="variables_get" id="~OZ+3m@d$(YLM922~3#(">
<field name="VAR" id="^FR)0Ddc/OYd-|yG}z1g">faceToEvaluate</field>
</block>
</value>
<value name="Distance">
<block type="math_number" id="n_#u|=O?~J`xLYn;%+$J">
<field name="NUM">-0.23</field>
</block>
</value>
<value name="Tolerance">
<block type="math_number" id="9jPfM=CRUfgJeNo9gCcz">
<field name="NUM">1e-7</field>
</block>
</value>
</block>
</value>
<value name="Index">
<block type="math_number" id="x`{hAPysj|nLk-vZyb:z">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id=",QgXQ~s/m)8-`Tb4rRnc">
<field name="VAR" id="cSfBm{4/in%#SI5u3ZMy">uvsGround</field>
<value name="VALUE">
<block type="base_time_await_return" id="XRxtrk)6s?h_iG~N+fMk">
<value name="Promise">
<block type="variables_get" id="|U?PRQRv|:,p_7js];i.">
<field name="VAR" id="*lx^8ZUn[Q^L|qSZuhHY">uvsGroundPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="u/HtNRL|vmV$h;wwEB_1">
<field name="VAR" id=":rhC^bPjxDTND+_A6FP8">columnBase</field>
<value name="VALUE">
<block type="lists_create_with" id="S$+.oR;YST8[BO`:oMQ3">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="fX#F5]D/S/tyoZ$?K4|M">
<field name="VAR" id="b@rIR_v#^_UW:xWos{C#">columnTop</field>
<value name="VALUE">
<block type="lists_create_with" id="ePnKUzkup49^FTeACaIY">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="controls_forEach" id=";DzU6|$-J9/BIw1H[RCd">
<field name="VAR" id="{en%a36.!YbF*V[[j7?|">m</field>
<value name="LIST">
<block type="variables_get" id="v)Z+:~G}~)?,?`dtz+6`">
<field name="VAR" id="cSfBm{4/in%#SI5u3ZMy">uvsGround</field>
</block>
</value>
<statement name="DO">
<block type="variables_set" id="L5G1rV[JQeLe1TYVMC)J">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
<value name="VALUE">
<block type="bitbybit.point.pointXYZ" id="f|vF43[]uoNefWJ;B].1">
<value name="X">
<block type="lists_getIndex" id="YLW4uiU?[6^c#_b;172l">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">LAST</field>
<value name="VALUE">
<block type="variables_get" id="F$#Bf/6.F^Y=!;Po(Q$]">
<field name="VAR" id="{en%a36.!YbF*V[[j7?|">m</field>
</block>
</value>
</block>
</value>
<value name="Y">
<block type="math_number" id="a8}.!3VJfb^qKS[*|7k:">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="lists_getIndex" id="BeYY?fyIz=xBH(*U(6N{">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FIRST</field>
<value name="VALUE">
<block type="variables_get" id="!}I*3F6.oCNjzuMA]*mZ">
<field name="VAR" id="{en%a36.!YbF*V[[j7?|">m</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id=")eJ{L|Jzv@g,fwkX$|go">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="9k:!4MCMQ@uQK$@@Xk|k">
<field name="VAR" id=":rhC^bPjxDTND+_A6FP8">columnBase</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.operations.loft" id="pSi*)}BQt^c2:Q!+XXBw">
<value name="Shapes">
<block type="lists_create_with" id=",`4hoHT6r_IzvYJ={6A#">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.transforms.translate" id="-h?zS1l}NWXAE9VsBBLr">
<value name="Shape">
<block type="bitbybit.occt.shapes.wire.placeWireOnFace" id="f.[x^Em/P=fq:%~F3=)U">
<value name="Wire">
<block type="bitbybit.occt.transforms.translate" id="WVav%fSX96.rsm1CA3I6">
<value name="Shape">
<block type="variables_get" id="/)qs(q1R6-1Tmm#SAc(E">
<field name="VAR" id="TdcI-~EpnVX}!RhQtDWM">wireOnMiddleColumn</field>
</block>
</value>
<value name="Translation">
<block type="variables_get" id="o^BykVriW4za}1Nk(8!;">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
</block>
</value>
</block>
</value>
<value name="Face">
<block type="variables_get" id="]hvs9s/ImVbOd[ARQ(p$">
<field name="VAR" id="!eaT~+j[NqITtgX2;rg[">faceToEvalColumns</field>
</block>
</value>
</block>
</value>
<value name="Translation">
<block type="bitbybit.point.pointXYZ" id="YlNFde]_l`ib@V^ps/|a">
<value name="X">
<block type="math_number" id="f;fo+Wv-Y=h61jUI{@cR">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=")e_:y:wi1gdsM5Z33bTU">
<field name="NUM">-1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="sx~qOBoKanZ.8m{QQ}Iy">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.occt.shapes.wire.placeWireOnFace" id="^BJu#ue^{db;`z+dl,kg">
<value name="Wire">
<block type="bitbybit.occt.transforms.translate" id="Lkn@ddIy`Q|cEfSmBP=l">
<value name="Shape">
<block type="variables_get" id=",#p,)~vhCvhK|!0`||CE">
<field name="VAR" id="6Ev54^^AhgVN#L,t([Zf">wireOnGroundForColumn</field>
</block>
</value>
<value name="Translation">
<block type="variables_get" id="HY/?zqx:g4tsZ4Jwq(tp">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
</block>
</value>
</block>
</value>
<value name="Face">
<block type="variables_get" id="#/Oow5RsAktzcmWJI57:">
<field name="VAR" id="/%(HsU-ilHZm{!Zif:#Y">groundFace</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="2G%l26`1XlA`fI:8@#X~">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id="0CIb]bE,!TB:W|n4fe2t">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="!0FRqbo3w(e2R3o-qJKK">
<field name="VAR" id="b@rIR_v#^_UW:xWos{C#">columnTop</field>
</block>
</value>
<value name="TO">
<block type="bitbybit.occt.operations.loft" id="WqrmowW]GPxpm*h!-Mz7">
<value name="Shapes">
<block type="lists_create_with" id="3Q:?m@ry@titP:$|PLOs">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.transforms.translate" id="Nx1yqoA?ERRzYEIWu,$Q">
<value name="Shape">
<block type="bitbybit.occt.shapes.wire.placeWireOnFace" id="GpM5C0F=H/hyR;^S!*C?">
<value name="Wire">
<block type="bitbybit.occt.transforms.translate" id="_G=;hK~o)p47qn=XBe^0">
<value name="Shape">
<block type="variables_get" id="v7{6n|1E~F+lK*6TL}O*">
<field name="VAR" id="TdcI-~EpnVX}!RhQtDWM">wireOnMiddleColumn</field>
</block>
</value>
<value name="Translation">
<block type="variables_get" id="1TfhK-RDI#Nh:ok7a|zk">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
</block>
</value>
</block>
</value>
<value name="Face">
<block type="variables_get" id="5x]Sz]?3fn(Z#H)=6|ba">
<field name="VAR" id="!eaT~+j[NqITtgX2;rg[">faceToEvalColumns</field>
</block>
</value>
</block>
</value>
<value name="Translation">
<block type="bitbybit.point.pointXYZ" id="Hw)Y5G36U;^cbKjW-|F0">
<value name="X">
<block type="math_number" id="~13l}PHGtN-p3SKi+uK:">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="/5qONZjwvcN03E:(Fx*=">
<field name="NUM">-1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="2E{,b@1xj=dq=mj#ycag">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.occt.shapes.wire.placeWireOnFace" id="/:g-),Q$#5deltG1UH^G">
<value name="Wire">
<block type="bitbybit.occt.transforms.translate" id="eV`elciuax/)zq,+?|5n">
<value name="Shape">
<block type="variables_get" id="X4t_,2wKaU7aAPS$h:xL">
<field name="VAR" id="V/60%4QKJ38i9{K=U9N,">wireOnRoofForColumn</field>
</block>
</value>
<value name="Translation">
<block type="variables_get" id="YZh80~2vgtm$Y]h-s@r*">
<field name="VAR" id="O_u*Wzv|Z#}3]p:S#s[R">uvPoint</field>
</block>
</value>
</block>
</value>
<value name="Face">
<block type="variables_get" id="c_%q)]|Rr?N8HiZ-bA-r">
<field name="VAR" id="!eaT~+j[NqITtgX2;rg[">faceToEvalColumns</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="MakeSolid">
<block type="logic_boolean" id="Q1kM*/tp/=NAS^J?04{J">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="variables_set" id="F!}fIaRtwlqbp`5}iW6A">
<field name="VAR" id="Obk[vz^n7Mv)Cg?T^FJ^">columnElements</field>
<value name="VALUE">
<block type="lists_create_with" id="zZ]j1kd;G]},!}8Esn6Q">
<mutation items="2">
</mutation>
<value name="ADD0">
<block type="bitbybit.occt.shapes.compound.makeCompound" id="?f58nX1N?$B!4erftLD|">
<value name="Shapes">
<block type="variables_get" id="L$TdvB:D=Wv-P}#5Pp[9">
<field name="VAR" id=":rhC^bPjxDTND+_A6FP8">columnBase</field>
</block>
</value>
</block>
</value>
<value name="ADD1">
<block type="bitbybit.occt.shapes.compound.makeCompound" id="[,5g;mH-Ta}e7Dp+iLr9">
<value name="Shapes">
<block type="variables_get" id="2oOF$_Izs#(ti8~k,Pxk">
<field name="VAR" id="b@rIR_v#^_UW:xWos{C#">columnTop</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="cgDhE11NfE#qPi,YOr0F">
<field name="VAR" id="No-.@!ajW`iZNhtYFs:|">walkway</field>
<value name="VALUE">
<block type="bitbybit.occt.operations.makeThickSolidSimple" id="j3A5!92q#w_^$tt~*@tl">
<value name="Shape">
<block type="bitbybit.occt.fillets.filletEdges" id="7f]M8|nS^O(eaaF#6EB3">
<value name="Shape">
<block type="bitbybit.occt.operations.extrude" id="FK59LnodoH(p5u~1/Kg`">
<value name="Shape">
<block type="bitbybit.occt.shapes.wire.getWire" id="qZkl{1DU:a,Lw+F4gw|Y">
<value name="Shape">
<block type="variables_get" id="y7=OHgQUvQ2w]i@Q(Ds@">
<field name="VAR" id="_)rR8pCl7ac0%(xJKy_K">surfaceBottom</field>
</block>
</value>
<value name="Index">
<block type="math_number" id="5jG!7RHl%OQ)6PL[U_?,">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="5VT#@,qwV||dP$}mDs[:">
<value name="X">
<block type="math_number" id="i=FS|Dt|zgU~E+y;mR~p">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="ugI?{B45#~M4uUs_2uO`">
<field name="NUM">0.2</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="i{-x*n-NU]n[TRWD8de;">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Radius">
<block type="math_number" id="nXwZ..j~tW.5HOT0OHi-">
<field name="NUM">5</field>
</block>
</value>
</block>
</value>
<value name="Offset">
<block type="math_number" id=":q1/lXs|C8,$p]STB1zw">
<field name="NUM">-4</field>
</block>
</value>
</block>
</value>
<next>
<block type="procedures_callnoreturn" id="FxP7qO(:)*S1hNAF?B@z">
<mutation name="drawEverything">
<arg name="roofElements">
</arg>
<arg name="columnElements">
</arg>
<arg name="walkway">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="a~J$`b_8B]h*W1TSflTk">
<field name="VAR" id="(w_I)eNw(w^A2^!fDaoR">roofElements</field>
</block>
</value>
<value name="ARG1">
<block type="variables_get" id="wzVY(AE|ROsu[HjLm{tl">
<field name="VAR" id="Obk[vz^n7Mv)Cg?T^FJ^">columnElements</field>
</block>
</value>
<value name="ARG2">
<block type="variables_get" id="V[uMYmo37/@Z$huEm*y;">
<field name="VAR" id="No-.@!ajW`iZNhtYFs:|">walkway</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" id=",I!i8qQNgzepZ=RV[-1;" x="5453" y="-601">
<mutation>
<arg name="roofElements" varid="(w_I)eNw(w^A2^!fDaoR">
</arg>
<arg name="columnElements" varid="Obk[vz^n7Mv)Cg?T^FJ^">
</arg>
<arg name="walkway" varid="No-.@!ajW`iZNhtYFs:|">
</arg>
</mutation>
<field name="NAME">drawEverything</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="base_time_async_context" id=";B#x_pc4x:LE={f4Ul0?">
<statement name="Then">
<block type="variables_set" id="!xZ;GVarH1oL6t:`q~-f">
<field name="VAR" id=":{:pInCv~v4mN}VULXJe">roofTopOptions</field>
<value name="VALUE">
<block type="bitbybit.draw.optionsOcctShapeMaterial" id="L+J4Ngjqlk,PMVR/`d}a">
<value name="Precision">
<block type="math_number" id="y7Ih2Is-r?:@,-c1hBH%">
<field name="NUM">0.005</field>
</block>
</value>
<value name="FaceMaterial">
<block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="/vN0HpK+dlOq)y2N*lb`">
<value name="Name">
<block type="text" id="gMA,(,FNTlP(]hSP]pEF">
<field name="TEXT">TopRoof</field>
</block>
</value>
<value name="BaseColor">
<block type="colour_picker" id="DtTjt+rM6@(N6gp`9B9$">
<field name="COLOUR">#333333</field>
</block>
</value>
<value name="Metallic">
<block type="math_number" id="bY6+e[$2|*l%r`Jx.y(f">
<field name="NUM">0.6</field>
</block>
</value>
<value name="Roughness">
<block type="math_number" id="Bg%F-*l7Lhqo1K#OWl~n">
<field name="NUM">0.5</field>
</block>
</value>
<value name="Alpha">
<block type="math_number" id="KTzPts?vD`zd=LT^YPc%">
<field name="NUM">1</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id="hE|ACps}aCI6BK3`~bmM">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ZOffset">
<block type="math_number" id="A#/2-+#*ugG#yT|vz`@;">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="6u`2~Pgas]6q,J~x.oR9">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="c/_}#+FhB/5cy_j%S/D*">
<field name="COLOUR">#000000</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id=":M~o{n53%C!Ik%J{j^]-">
<field name="NUM">0.05</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="zfM]{!gKdfr{5i$mu-Cg">
<field name="VAR" id="uTzH((#w}Ij;zzjur!5F">roofBottomOptions</field>
<value name="VALUE">
<block type="bitbybit.draw.optionsOcctShapeMaterial" id="^H@@r0W6o*o*)8`obj32">
<value name="Precision">
<block type="math_number" id="vorD8D;:EmA@iXnjwr9N">
<field name="NUM">0.005</field>
</block>
</value>
<value name="FaceMaterial">
<block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="ZuOBVU8tNXc8`b*0z$gF">
<value name="Name">
<block type="text" id="d3uBVHWHVaF0eci;E?vR">
<field name="TEXT">BottomRoof</field>
</block>
</value>
<value name="BaseColor">
<block type="colour_picker" id="6L-]/ySk[Yqa#6`6YSs[">
<field name="COLOUR">#6600cc</field>
</block>
</value>
<value name="Metallic">
<block type="math_number" id="/g0SeOUJ?!X-`CkXVXrL">
<field name="NUM">0.7</field>
</block>
</value>
<value name="Roughness">
<block type="math_number" id="owZ|SvtRXCzTGjq0S=nU">
<field name="NUM">0.4</field>
</block>
</value>
<value name="Alpha">
<block type="math_number" id="_=*v%VMr=i14hqrzGyT*">
<field name="NUM">1</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id=";s@VpMXW1p{(ZT~28!k6">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ZOffset">
<block type="math_number" id="]G*0/z*0~#O)Fva-$jf.">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="av~|vW=A(gSM0MW)z,+E">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="3=93*#-6r3oRn$U;Bbza">
<field name="COLOUR">#333399</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="{iB{y)ga{GYM@fm?qE7I">
<field name="NUM">0.05</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="-Wr,`Oe,a-%(/t?ukEio">
<field name="VAR" id="_sI/G~-@l^Q$uG9O*Iee">roofGlassOptions</field>
<value name="VALUE">
<block type="bitbybit.draw.optionsOcctShapeMaterial" id="VVZVq]N6hr}J+vS((E]~">
<value name="Precision">
<block type="math_number" id="BvVxbB;294j_pme(aa-A">
<field name="NUM">0.1</field>
</block>
</value>
<value name="FaceMaterial">
<block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="),.g)%to_j;rC32=X2,C">
<value name="Name">
<block type="text" id="Hi;N5($S|80IEi8BE1T5">
<field name="TEXT">Glass</field>
</block>
</value>
<value name="BaseColor">
<block type="colour_picker" id="WkOe!S^Nm~NZYu}Hc1bR">
<field name="COLOUR">#3366ff</field>
</block>
</value>
<value name="Metallic">
<block type="math_number" id="!h!2sY^BQoJz*/a!5Y5Q">
<field name="NUM">0.7</field>
</block>
</value>
<value name="Roughness">
<block type="math_number" id="rfCm.NjwTg]s.WW*.bqv">
<field name="NUM">0.1</field>
</block>
</value>
<value name="Alpha">
<block type="math_number" id="wtq#Y4Nq!=`*2rW?@kAg">
<field name="NUM">0.5</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id="e,X6)wOZRT=1[m@WN?,L">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ZOffset">
<block type="math_number" id="ugp=6!poL*`Szz[$`flJ">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id=":UCANEIAn0_Fbcal89Be">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id=".$Kcb)}/RbJkIs8;wcH%">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="W04:=z8UX}t~p0PSjFyK">
<field name="NUM">0.05</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="Drf`E@j`euHVGjW@6X47">
<field name="VAR" id="(c**hXH!56[y}eFm`:om">columnBaseOptions</field>
<value name="VALUE">
<block type="bitbybit.draw.optionsOcctShapeSimple" id="0nwCZ%s!AI4*4$w,!VvP">
<value name="Precision">
<block type="math_number" id="ULdDDv6N#wd;RD*XApjc">
<field name="NUM">0.05</field>
</block>
</value>
<value name="DrawFaces">
<block type="logic_boolean" id="?VPEa{JIlzcnhVy+Gv9T">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="FaceColour">
<block type="colour_picker" id="AOdg#d}0O.SrS-ApcBD|">
<field name="COLOUR">#0000ff</field>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="E|%0Yu.7ZjGsJB(`)~cC">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="qIaFl|B0h0bdO=9~/54o">
<field name="COLOUR">#000000</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="Koz!VX$6W%(+GoNDBSPa">
<field name="NUM">5</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="9IVO+T-E+Q^7CLY|I(ve">
<field name="VAR" id="Lb#;CZTb.U=]?/FE0R}d">columnTopOptions</field>
<value name="VALUE">
<block type="bitbybit.draw.optionsOcctShapeMaterial" id="y[zlH2zbq^}/?6IZ-;N.">
<value name="Precision">
<block type="math_number" id="bmcs~.X|XhPjKmjwcHjZ">
<field name="NUM">0.001</field>
</block>
</value>
<value name="FaceMaterial">
<block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="|reF8kzRjxZOf!|_7:|[">
<value name="Name">
<block type="text" id="C2wrm:(U$b6~gLMf?zJK">
<field name="TEXT">Custom Name1</field>
</block>
</value>
<value name="BaseColor">
<block type="colour_picker" id="KpoPy^b%9,J94oZMUMMH">
<field name="COLOUR">#6600cc</field>
</block>
</value>
<value name="Metallic">
<block type="math_number" id="M$UsYfI{2@daMygeZ?%k">
<field name="NUM">0.6</field>
</block>
</value>
<value name="Roughness">
<block type="math_number" id="OX8X(0T.uTrjbfXTr@4h">
<field name="NUM">0.5</field>
</block>
</value>
<value name="Alpha">
<block type="math_number" id="_32PRgU}9EaHizkw:qpC">
<field name="NUM">0.1</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id="Klx*fFtoI6eQt%Nm|Y_r">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ZOffset">
<block type="math_number" id="XK,|IU:A.)/MO6/1M7R8">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="dUd7cgzr~$!QdIR$tQd}">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="9~_($YjtX-$*GPFjRUo|">
<field name="COLOUR">#000000</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="x$?$Nnsb7BL71S;LWyve">
<field name="NUM">5</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="vbUDkFJI(d(8%/bv3tv_">
<field name="VAR" id="mvsRC!k3oyO4_t%xUm=B">walkwayOptions</field>
<value name="VALUE">
<block type="bitbybit.draw.optionsOcctShapeMaterial" id="EtI-vrEYcU?q4Iaz#o29">
<value name="Precision">
<block type="math_number" id="wqEvFIQ%^Ct*4Hi(Juh8">
<field name="NUM">0.001</field>
</block>
</value>
<value name="FaceMaterial">
<block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="8SQK)??UeP0+(s(VFry;">
<value name="Name">
<block type="text" id="~w%~nwq6coVE)+^7!Y9H">
<field name="TEXT">Custom Name2</field>
</block>
</value>
<value name="BaseColor">
<block type="colour_picker" id="^/[Wid?*r3)z%Hl-E@_y">
<field name="COLOUR">#000000</field>
</block>
</value>
<value name="Metallic">
<block type="math_number" id="Nb?fS4Li{s1oVRe0rf~p">
<field name="NUM">0.7</field>
</block>
</value>
<value name="Roughness">
<block type="math_number" id="caW)Kt(gWZ#_jjZ*8_hr">
<field name="NUM">0.4</field>
</block>
</value>
<value name="Alpha">
<block type="math_number" id="(v]xw.]^UJ!gp;Nq!QJi">
<field name="NUM">1</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id="B;%4}|-~V~@I,jl?C9;)">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ZOffset">
<block type="math_number" id="7J,7^FZS`ntQkt|_X7`G">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="YE(@pDHaidbS/!6m]~[Z">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="x[DX0r4`h|;$MS)nP*^S">
<field name="COLOUR">#6666cc</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="aC@KBj=Ub^7HxWUC3F[|">
<field name="NUM">0.05</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="td4hZ8Pu@k9=i#gXEuDs">
<field name="VAR" id="%JzY:cK3~3fxNUBozxc8">groundOptions</field>
<value name="VALUE">
<block type="bitbybit.draw.optionsOcctShapeMaterial" id="4t);#jaAzq$kYGd}.5=F">
<value name="Precision">
<block type="math_number" id="S?%v7H?e`-?0e|hBPDC1">
<field name="NUM">0.05</field>
</block>
</value>
<value name="FaceMaterial">
<block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="^1gt$?uG;x+PD:2Nw3i2">
<value name="Name">
<block type="text" id="h-ESyIQObIpo?}l+)tgn">
<field name="TEXT">Custom Name2</field>
</block>
</value>
<value name="BaseColor">
<block type="colour_picker" id="tLUfB]QsZG40mA-ozC[7">
<field name="COLOUR">#3366ff</field>
</block>
</value>
<value name="Metallic">
<block type="math_number" id="`+5PwCqO+:xeWoZ*h^Kc">
<field name="NUM">0.7</field>
</block>
</value>
<value name="Roughness">
<block type="math_number" id="fKLz{aSlA,4XENz8o/q5">
<field name="NUM">0.4</field>
</block>
</value>
<value name="Alpha">
<block type="math_number" id="JC%N7pF|nrscsb!.TZcH">
<field name="NUM">1</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id="AbXODPkg.aT!tR7WxoiW">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="ZOffset">
<block type="math_number" id="XVmaOxrmxEzx_bk3mDTD">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="DrawEdges">
<block type="logic_boolean" id="}sAx7Vm_mHr)~:rn=Y-{">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="EdgeColour">
<block type="colour_picker" id="j)(b^j;hCw+zm_J?/y=W">
<field name="COLOUR">#000000</field>
</block>
</value>
<value name="EdgeWidth">
<block type="math_number" id="0Gaa2}V0OFf7[Y9Fw1/K">
<field name="NUM">0.05</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="lBi@1vx_sR)H+G.B~zI;">
<field name="VAR" id=")jFwhfJ64YHbuNK27:RE">roofTopMeshPromise</field>
<value name="VALUE">
<block type="bitbybit.draw.drawAnyAsync" id="oo-zcEuxrah#r|@#i*Ne">
<value name="Entity">
<block type="lists_getIndex" id="+C+?#AIwG9)3fT0%,6Gf">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FIRST</field>
<value name="VALUE">
<block type="variables_get" id="!_t`FtWNC.b?gwO/F6p=">
<field name="VAR" id="(w_I)eNw(w^A2^!fDaoR">roofElements</field>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="variables_get" id="1B}IRa.Gv`0=P~x%+d0a">
<field name="VAR" id=":{:pInCv~v4mN}VULXJe">roofTopOptions</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="c1]bWeu6+rB3=VbS_Q]u">
<field name="VAR" id="0G}AZ%IK~JyC.!ows@Uc">roofBottomMeshPromise</field>
<value name="VALUE">
<block type="bitbybit.draw.drawAnyAsync" id="xymiMbn`;y75b!1rD2_+">
<value name="Entity">
<block type="lists_getIndex" id="S!,f7bvb]Axx,^GW/zd|">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="Q?4aJdtkd86STUM5zo@H">
<field name="VAR" id="(w_I)eNw(w^A2^!fDaoR">roofElements</field>
</block>
</value>
<value name="AT">
<block type="math_number" id="1Jp$P*H7gY;*tsPEyF/2">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="variables_get" id="7*EQFk5r~curYQOxaT7E">
<field name="VAR" id="uTzH((#w}Ij;zzjur!5F">roofBottomOptions</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="W^$X8#MMteI*mTvgN@(l">
<field name="VAR" id="f$6G-eXhk_lJ,Cn=?1iA">roofGlassMeshPromise</field>
<value name="VALUE">
<block type="bitbybit.draw.drawAnyAsync" id="(i45ib`7k6s:I$_1$eND">
<value name="Entity">
<block type="lists_getIndex" id="rW7T/X}uZnCrVpxx0efR">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">LAST</field>
<value name="VALUE">
<block type="variables_get" id="3mhD;i%Ak[AVn})pP7b@">
<field name="VAR" id="(w_I)eNw(w^A2^!fDaoR">roofElements</field>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="variables_get" id="OvMt;4v[*DC]~lI~!D%f">
<field name="VAR" id="_sI/G~-@l^Q$uG9O*Iee">roofGlassOptions</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="J3@F}a:U48YNPh73eMk4">
<field name="VAR" id="V8rL(y|lr.Q.8[Zsf/mE">columnBaseMeshPromise</field>
<value name="VALUE">
<block type="bitbybit.draw.drawAnyAsync" id="r;:uCr3m8XuPd5F{PzsP">
<value name="Entity">
<block type="lists_getIndex" id="7y:uJONm{w%-)Hk%kgWr">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FIRST</field>
<value name="VALUE">
<block type="variables_get" id="@EmbPK7JD(arO*9_|!4a">
<field name="VAR" id="Obk[vz^n7Mv)Cg?T^FJ^">columnElements</field>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="variables_get" id="zZ6q_0$||w*T!|K%|XCS">
<field name="VAR" id="(c**hXH!56[y}eFm`:om">columnBaseOptions</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="ggob9Z,Cj0793WdObVgw">
<field name="VAR" id="Xmx4o3$9iSkLnYrnJW3,">columnTopMeshPromise</field>
<value name="VALUE">
<block type="bitbybit.draw.drawAnyAsync" id="ph8w8Fof5`~c@D7NNz/=">
<value name="Entity">
<block type="lists_getIndex" id="#OSBH7y`ARB~qX2^9!3@">
<mutation statement="false" at="false">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">LAST</field>
<value name="VALUE">
<block type="variables_get" id="vj1_p~p-.]-A8q,k#gI7">
<field name="VAR" id="Obk[vz^n7Mv)Cg?T^FJ^">columnElements</field>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="variables_get" id="u1SB;YOUEA]/0U1k2F8+">
<field name="VAR" id="Lb#;CZTb.U=]?/FE0R}d">columnTopOptions</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="`I2=MT)m0~57h;KCOg$z">
<field name="VAR" id="NP)@GjOv4@SCk.GDOX39">groundMeshPromise</field>
<value name="VALUE">
<block type="bitbybit.draw.drawAnyAsync" id="Nc4Q?1g0hRf8kvG.w(I_">
<value name="Entity">
<block type="bitbybit.occt.shapes.face.createCircleFace" id="O3}s]r]GR+AhAeX83fa,">
<value name="Radius">
<block type="math_number" id="@9aLSZ05{uQLsI=rhCe]">
<field name="NUM">40</field>
</block>
</value>
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="Wg`%Pw~MRgCsGnq}oX$K">
<value name="X">
<block type="math_number" id="m##=,hSnUz+r.mY~F8k6">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=".hiwMKqlskF$UX0;#xMV">
<field name="NUM">-0.2</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="6+6?7_17~4?VO_tgj6!M">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="XK0bg|x;@24z[=qWIkpx">
<value name="X">
<block type="math_number" id="(tz@?]TuSa]g{bpp1O.u">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="ns;H#=ij+1^W_4g$g6y,">
<field name="NUM">1</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="VO|S]248.F[*BZOqHArS">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="variables_get" id="Z-PuQPk~)n!.%Z@D[P%,">
<field name="VAR" id="%JzY:cK3~3fxNUBozxc8">groundOptions</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="22uY-5O+rASSRK!HWJp`">
<field name="VAR" id="A,Y.pPFWC(TWX%*j5qX=">walkwayMeshPromise</field>
<value name="VALUE">
<block type="bitbybit.draw.drawAnyAsync" id="DdTne$(W$cj$;tZntFA/">
<value name="Entity">
<block type="variables_get" id="Y%Vt.GuS1a~*)i3EF;,3">
<field name="VAR" id="No-.@!ajW`iZNhtYFs:|">walkway</field>
</block>
</value>
<value name="Options">
<block type="variables_get" id="4O9P};dPki$k[ig%()8b">
<field name="VAR" id="mvsRC!k3oyO4_t%xUm=B">walkwayOptions</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="6q-C8O8Q1f-QHix:C4*O">
<field name="VAR" id="R8)c{9+bvT]-=}NW|$n-">roofTopMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id="xGC2gy{4kF:H)Qq%8K-2">
<value name="Promise">
<block type="variables_get" id="7{Dlf-06W5y3[AVl4~sd">
<field name="VAR" id=")jFwhfJ64YHbuNK27:RE">roofTopMeshPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="_.@56CZp3e/k5#zfC9Ne">
<field name="VAR" id="+ZT@[lpq#c?%#)3xGEE*">roofBottomMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id="h|=1R,f*/+v6tFw1n9uM">
<value name="Promise">
<block type="variables_get" id="*j/7RXf|v9E*o]f03All">
<field name="VAR" id="0G}AZ%IK~JyC.!ows@Uc">roofBottomMeshPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="blN_].OYXi{rpbx!#e%w">
<field name="VAR" id="v=$m@*Rp!Ni=tnXa!HGQ">roofGlassMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id="vc5wz9D`eH#NKRu|V30b">
<value name="Promise">
<block type="variables_get" id="da1x:UCuZ#f.Sg)#|^({">
<field name="VAR" id="f$6G-eXhk_lJ,Cn=?1iA">roofGlassMeshPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="C@}x_g3n-b4[yl(Vx5ml">
<field name="VAR" id="WksPa84K#Qwk9@IeZaM}">columnBaseMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id="dj^]9PB[v?yEO1.9NZqv">
<value name="Promise">
<block type="variables_get" id="~h[{?m*g#9Lk=W2rZoiS">
<field name="VAR" id="V8rL(y|lr.Q.8[Zsf/mE">columnBaseMeshPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="k{Z;OJ*!_}]k:S8}5Gj/">
<field name="VAR" id="#-ty|wDMJZV7nS6Z{dp,">columnTopMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id=";SRT/54c[,2D2fm,gdY`">
<value name="Promise">
<block type="variables_get" id="fWx2?seRRf+-^,2%U@,1">
<field name="VAR" id="Xmx4o3$9iSkLnYrnJW3,">columnTopMeshPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="vE;`;W.|*,JF/qdMwbYs">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id="1|k!q;x|[,ZZ!ov4Ng;?">
<value name="Promise">
<block type="variables_get" id="3d$2G+DJ91:7dLHZ+bBM">
<field name="VAR" id="NP)@GjOv4@SCk.GDOX39">groundMeshPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="/$S,VTsU?X]*#9ur1L)r">
<field name="VAR" id="3S[CRP*red-@zg#qee,e">walkwayMesh</field>
<value name="VALUE">
<block type="base_time_await_return" id="!4LB~t9W`@R4,Z/jCj[h">
<value name="Promise">
<block type="variables_get" id="g6_Z%h)rOWP5B[pNT=``">
<field name="VAR" id="A,Y.pPFWC(TWX%*j5qX=">walkwayMeshPromise</field>
</block>
</value>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.setParent" id="dN+KM/p=X57~c@fQH_;|">
<value name="BabylonMesh">
<block type="variables_get" id="kv3-1%S1-4u4hT$RLfh(">
<field name="VAR" id="R8)c{9+bvT]-=}NW|$n-">roofTopMesh</field>
</block>
</value>
<value name="ParentMesh">
<block type="variables_get" id="f@HW+5ZgcjB3:.q|Kds6">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.setParent" id="14(!Jiv52FSG?h%_Vb!e">
<value name="BabylonMesh">
<block type="variables_get" id="nHym:LtP+wt77+,[i8Xw">
<field name="VAR" id="+ZT@[lpq#c?%#)3xGEE*">roofBottomMesh</field>
</block>
</value>
<value name="ParentMesh">
<block type="variables_get" id="Jnix1n;ft~swvY|nvpCm">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.setParent" id="DIHM3+R/:j|8GF8svdK[">
<value name="BabylonMesh">
<block type="variables_get" id="PE%np`Dw_2X9h;:EC8Uh">
<field name="VAR" id="v=$m@*Rp!Ni=tnXa!HGQ">roofGlassMesh</field>
</block>
</value>
<value name="ParentMesh">
<block type="variables_get" id="g}8Y[(0|Z(fF~MeF-]@)">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.setParent" id="lS8SVzSpt:9xSSz!nXw?">
<value name="BabylonMesh">
<block type="variables_get" id=";vJ6N~^_HhOE1Xr^ohqP">
<field name="VAR" id="WksPa84K#Qwk9@IeZaM}">columnBaseMesh</field>
</block>
</value>
<value name="ParentMesh">
<block type="variables_get" id="|0o)XYD6.-*!sOd*@VMI">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.setParent" id=",//qN)@ttmI5^b4c{Y)1">
<value name="BabylonMesh">
<block type="variables_get" id="Nx5e`f@e|sS;T@KI,uC4">
<field name="VAR" id="#-ty|wDMJZV7nS6Z{dp,">columnTopMesh</field>
</block>
</value>
<value name="ParentMesh">
<block type="variables_get" id="a_-5k^SvR_e9(4)H3s/N">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.setParent" id="]3ANkGk_?c[K#N~Jt|r+">
<value name="BabylonMesh">
<block type="variables_get" id="=}V^?RaSJWH/N%4iZVQb">
<field name="VAR" id="3S[CRP*red-@zg#qee,e">walkwayMesh</field>
</block>
</value>
<value name="ParentMesh">
<block type="variables_get" id="f0U*~WcmP~M-czl|mrb(">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.setParent" id="%m]-Bj#?-u2=`p{bTk}e">
<value name="BabylonMesh">
<block type="variables_get" id="aR/`#`xk~?hE9kr]*r.r">
<field name="VAR" id="z1)P]:Q8Nc^e2e?^rZg7">grid</field>
</block>
</value>
<value name="ParentMesh">
<block type="variables_get" id="b@c]OqF.aWHS?CnqCTre">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
</block>
</value>
<next>
<block type="base_time_update" id="EnJ=vw@]:B)-mghuAiVV">
<field name="TimePassedMs" id="[_r.QsyJ}zx:~r#7dOWs">timeElapsedFromPreviousFrame</field>
<statement name="Update">
<block type="bitbybit.babylon.mesh.yaw" id="]1!4K6rO:A$~v^+K_j_J">
<value name="BabylonMesh">
<block type="variables_get" id="2t(Bz_#,q7Rn~dZ-a_0q">
<field name="VAR" id="xMD+Sj|[%O1!3wLk6-Yt">groundMesh</field>
</block>
</value>
<value name="Rotate">
<block type="math_number" id="evI?bz`%L$Z0tNZw0)$e">
<field name="NUM">0.03</field>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
</xml>