\n",
+ " "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.plotly.v1+json": {
+ "config": {
+ "plotlyServerURL": "https://plot.ly"
+ },
+ "data": [
+ {
+ "marker": {
+ "color": "rgba(0, 0, 0, 1)",
+ "size": 8
+ },
+ "mode": "markers",
+ "name": "origins",
+ "type": "scatter3d",
+ "x": [
+ -0.017753446474671364,
+ -0.461557537317276,
+ -1.1172128915786743,
+ -0.4113234281539917,
+ 0.9525526165962219,
+ -0.9539213180541992,
+ 0.736824631690979,
+ -0.042831964790821075,
+ -1.2373647689819336,
+ -1.1517964601516724,
+ -1.1072026491165161,
+ 0.17459441721439362,
+ -0.1608891785144806,
+ 0.7045111060142517,
+ -0.6463082432746887,
+ 0.8757596015930176,
+ -1.0526835918426514,
+ 1.2290067672729492,
+ 0.317096471786499,
+ 1.0454431772232056,
+ 0.6309448480606079,
+ -0.2635781466960907,
+ 0.9407426714897156,
+ -0.9425367712974548,
+ -0.6932761073112488,
+ 1.2003450393676758,
+ 0.28942573070526123,
+ -0.13884274661540985,
+ 0.6968863606452942,
+ -0.5318554043769836,
+ 0.5716549158096313,
+ -0.4280746281147003,
+ -1.3001563549041748,
+ 0.5465291142463684,
+ -0.741692841053009,
+ -1.1166189908981323,
+ 0.5797033905982971,
+ 0.2898496091365814,
+ -0.6932476758956909,
+ -0.04606892541050911,
+ -1.1031025648117065,
+ -0.1376451849937439,
+ 0.15653952956199646,
+ 0.6433682441711426,
+ -0.6069813966751099,
+ -0.8544602990150452,
+ 0.002482247306033969,
+ 0.13910362124443054,
+ 0.004919813014566898,
+ 0.4733195900917053,
+ 0.3751462996006012,
+ -0.6816565990447998,
+ -0.9907537698745728,
+ -1.2825024127960205,
+ -1.0979151725769043,
+ 0.46652865409851074,
+ -0.20556224882602692,
+ 0.11219306290149689,
+ -0.7640276551246643,
+ 1.045454502105713,
+ -0.9021673798561096,
+ -0.006886602379381657,
+ -0.38691648840904236,
+ 0.765042781829834,
+ -0.27314746379852295,
+ 0.2593368887901306,
+ -0.5555495023727417,
+ -0.006540575996041298,
+ 0.9691927433013916,
+ -1.2778180837631226,
+ 0.34396231174468994,
+ -0.3012135624885559,
+ 1.1797419786453247,
+ 0.8545752167701721,
+ 0.8402068018913269,
+ -0.2616408169269562,
+ -0.08118551969528198,
+ 0.5441807508468628,
+ -0.958591639995575,
+ 0.024070948362350464,
+ 0.8344727158546448,
+ -0.565413773059845,
+ -0.1359177827835083,
+ -1.1649662256240845,
+ 0.2283933460712433,
+ -1.2982066869735718,
+ 0.3842688202857971,
+ -0.6734256744384766,
+ -0.0015010128263384104,
+ -0.11868855357170105,
+ -1.1340864896774292,
+ 0.06941197067499161,
+ -0.46056047081947327,
+ -0.6132989525794983,
+ -0.9773804545402527,
+ 1.1761187314987183,
+ -0.9926518201828003,
+ -1.1539958715438843,
+ -0.10245295614004135,
+ 0.6940234303474426
+ ],
+ "y": [
+ 1.269005298614502,
+ 1.1729024648666382,
+ -0.5519941449165344,
+ -0.5402319431304932,
+ 0.829361617565155,
+ 0.11699900776147842,
+ -0.6422533988952637,
+ -0.09084510058164597,
+ -0.20054879784584045,
+ 0.2764371335506439,
+ -0.6773669123649597,
+ 0.7781118154525757,
+ 0.6570843458175659,
+ -1.1036717891693115,
+ 0.04111392796039581,
+ 0.8269356489181519,
+ -0.13840600848197937,
+ -0.36768707633018494,
+ 0.031064970418810844,
+ -0.7168547511100769,
+ -0.9858580827713013,
+ -0.5600692629814148,
+ 0.4877101480960846,
+ 0.4984826147556305,
+ -0.8473235964775085,
+ 0.19624169170856476,
+ 1.276799201965332,
+ 0.9893653392791748,
+ -0.8837524056434631,
+ -1.0563637018203735,
+ 0.1711004078388214,
+ 0.06716802716255188,
+ -8.142695878632367e-05,
+ -0.6070778369903564,
+ 0.8582422733306885,
+ 0.48413166403770447,
+ -0.6900477409362793,
+ 0.15160048007965088,
+ 1.0168125629425049,
+ 0.5591708421707153,
+ 0.5374273061752319,
+ 1.296814203262329,
+ 1.3035029172897339,
+ -0.4852425158023834,
+ -0.346587598323822,
+ 0.5767271518707275,
+ -0.934134840965271,
+ 0.31938326358795166,
+ -0.37865912914276123,
+ -0.19084833562374115,
+ 0.9698328375816345,
+ 1.086916208267212,
+ -0.6908829212188721,
+ -0.27260324358940125,
+ 0.3461550772190094,
+ -1.2114720344543457,
+ 0.14274124801158905,
+ 0.5868886113166809,
+ 0.269846111536026,
+ 0.30689725279808044,
+ 0.9358038902282715,
+ 0.8980303406715393,
+ 0.104832224547863,
+ -0.9970489740371704,
+ 1.2821284532546997,
+ -1.2783775329589844,
+ 0.5613208413124084,
+ 1.1566872596740723,
+ -0.5924491882324219,
+ -0.30551114678382874,
+ -1.2192257642745972,
+ -0.9305626153945923,
+ -0.40881261229515076,
+ -0.7244551181793213,
+ 0.8798558712005615,
+ 1.2844479084014893,
+ -1.2216378450393677,
+ 0.17347753047943115,
+ 0.8635507225990295,
+ 0.6448045372962952,
+ -0.3556821346282959,
+ 1.12930166721344,
+ 0.39667394757270813,
+ 0.05653548240661621,
+ -0.8539258241653442,
+ 0.18604952096939087,
+ -0.505307674407959,
+ -0.33428800106048584,
+ 0.02291898988187313,
+ -1.2959492206573486,
+ -0.09604597091674805,
+ -0.3757587969303131,
+ -0.7356126308441162,
+ -0.3327936828136444,
+ 0.5304489135742188,
+ -0.5983996987342834,
+ 0.5958649516105652,
+ 0.09875142574310303,
+ -1.231301188468933,
+ -0.34066376090049744
+ ],
+ "z": [
+ 0.39866718649864197,
+ 0.4253110885620117,
+ 0.4655781090259552,
+ 1.143935203552246,
+ 0.41764575242996216,
+ 0.9197666049003601,
+ 0.9023441672325134,
+ 1.326475739479065,
+ 0.4453468918800354,
+ 0.605452299118042,
+ 0.2913784980773926,
+ 1.0647460222244263,
+ 1.1454168558120728,
+ 0.23494240641593933,
+ 1.1619898080825806,
+ 0.5646660327911377,
+ 0.8014526963233948,
+ 0.35209921002388,
+ 1.291553258895874,
+ 0.4034760296344757,
+ 0.6321530938148499,
+ 1.1774864196777344,
+ 0.8042184114456177,
+ 0.7954650521278381,
+ 0.7556692361831665,
+ 0.5387818813323975,
+ 0.23588460683822632,
+ 0.8783529996871948,
+ 0.7091940641403198,
+ 0.6089751720428467,
+ 1.1889325380325317,
+ 1.2577224969863892,
+ 0.2814576327800751,
+ 1.0499464273452759,
+ 0.6949368119239807,
+ 0.5370323657989502,
+ 0.9784699082374573,
+ 1.289430022239685,
+ 0.5050990581512451,
+ 1.2061636447906494,
+ 0.5137722492218018,
+ 0.2625868320465088,
+ 0.21447773277759552,
+ 1.0584150552749634,
+ 1.1318461894989014,
+ 0.8407784700393677,
+ 0.947106659412384,
+ 1.2838495969772339,
+ 1.2752325534820557,
+ 1.2284830808639526,
+ 0.8296472430229187,
+ 0.3515430688858032,
+ 0.5574163198471069,
+ 0.22472217679023743,
+ 0.6666214466094971,
+ 0.2903648912906647,
+ 1.306519865989685,
+ 1.188528299331665,
+ 1.0550212860107422,
+ 0.7631933093070984,
+ 0.2828254699707031,
+ 0.9813863635063171,
+ 1.2684364318847656,
+ 0.43615129590034485,
+ 0.2261904627084732,
+ 0.2609984278678894,
+ 1.0704712867736816,
+ 0.6570062041282654,
+ 0.6923109292984009,
+ 0.20849241316318512,
+ 0.4059600532054901,
+ 0.9016367197036743,
+ 0.45902758836746216,
+ 0.7172803282737732,
+ 0.5380811095237732,
+ 0.22663378715515137,
+ 0.5202258825302124,
+ 1.201414942741394,
+ 0.32404854893684387,
+ 1.1633025407791138,
+ 0.973021388053894,
+ 0.41786351799964905,
+ 1.2624584436416626,
+ 0.6397519707679749,
+ 0.9941189289093018,
+ 0.22286784648895264,
+ 1.1690281629562378,
+ 1.0974400043487549,
+ 1.3300743103027344,
+ 0.2757786214351654,
+ 0.6886568069458008,
+ 1.2742105722427368,
+ 1.0081584453582764,
+ 1.1325801610946655,
+ 0.7300524115562439,
+ 0.1681891679763794,
+ 0.6551430821418762,
+ 0.6543444991111755,
+ 0.4929768145084381,
+ 1.082545518875122
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.05264836549758911,
+ 0.26077237725257874
+ ],
+ "y": [
+ -0.036877453327178955,
+ 0.4999983310699463
+ ],
+ "z": [
+ 0.4999990463256836,
+ 0.10955291986465454
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.34672731161117554,
+ 0.49999839067459106
+ ],
+ "y": [
+ 0.24193447828292847,
+ -0.14542990922927856
+ ],
+ "z": [
+ 0.4999992549419403,
+ 0.1911259889602661
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.18909454345703125,
+ 0.2158125936985016
+ ],
+ "y": [
+ 0.4999992847442627,
+ -0.5000017881393433
+ ],
+ "z": [
+ 0.42153891921043396,
+ 0.41593313217163086
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.13745778799057007,
+ 0.3441866338253021
+ ],
+ "y": [
+ 0.4999992251396179,
+ -0.5000019073486328
+ ],
+ "z": [
+ 0.22049713134765625,
+ -0.08387678861618042
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.025992512702941895,
+ -0.5000016093254089
+ ],
+ "y": [
+ -0.2811346650123596,
+ -0.234262615442276
+ ],
+ "z": [
+ 0.49999910593032837,
+ 0.041313767433166504
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.015160590410232544,
+ 0.4999981224536896
+ ],
+ "y": [
+ 0.49999910593032837,
+ -0.2765563726425171
+ ],
+ "z": [
+ 0.17264783382415771,
+ -0.1189349889755249
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.24298617243766785,
+ -0.0322800874710083
+ ],
+ "y": [
+ -0.17840805649757385,
+ -0.5000016093254089
+ ],
+ "z": [
+ 0.49999916553497314,
+ -0.1410353183746338
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.4999992847442627,
+ -0.5000016689300537
+ ],
+ "y": [
+ -0.02146877348423004,
+ -0.33233046531677246
+ ],
+ "z": [
+ 0.4041433334350586,
+ 0.2118973433971405
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.5000007152557373,
+ 0.24923354387283325
+ ],
+ "y": [
+ 0.1294129490852356,
+ -0.5000017881393433
+ ],
+ "z": [
+ 0.38804352283477783,
+ -0.1487298607826233
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.30486932396888733,
+ -0.07201507687568665
+ ],
+ "y": [
+ 0.4999992251396179,
+ -0.5000017881393433
+ ],
+ "z": [
+ 0.18813657760620117,
+ -0.16432833671569824
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.42000240087509155,
+ -0.009042084217071533
+ ],
+ "y": [
+ -0.06268095970153809,
+ -0.5000015497207642
+ ],
+ "z": [
+ 0.49999916553497314,
+ 0.33037862181663513
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.49999916553497314,
+ -0.5000020265579224
+ ],
+ "y": [
+ 0.2336413562297821,
+ 0.28704312443733215
+ ],
+ "z": [
+ 0.2371262013912201,
+ -0.19359815120697021
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.15093782544136047,
+ 0.49999842047691345
+ ],
+ "y": [
+ -0.1538296937942505,
+ 0.17826855182647705
+ ],
+ "z": [
+ 0.4999989867210388,
+ 0.20992714166641235
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.49999916553497314,
+ 0.2984248697757721
+ ],
+ "y": [
+ -0.10256673395633698,
+ 0.14479532837867737
+ ],
+ "z": [
+ 0.3063734173774719,
+ -0.5000017881393433
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.4345247745513916,
+ 0.4707837700843811
+ ],
+ "y": [
+ 0.4999992847442627,
+ 0.44921910762786865
+ ],
+ "z": [
+ 0.26895689964294434,
+ -0.5000019669532776
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.19645482301712036,
+ -0.29415738582611084
+ ],
+ "y": [
+ -0.5000008940696716,
+ 0.49999797344207764
+ ],
+ "z": [
+ -0.027990907430648804,
+ -0.4096352756023407
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.4999992847442627,
+ -0.5000017881393433
+ ],
+ "y": [
+ 0.21157221496105194,
+ 0.2334621548652649
+ ],
+ "z": [
+ 0.3995058834552765,
+ 0.20063817501068115
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.08451336622238159,
+ 0.33980846405029297
+ ],
+ "y": [
+ -0.5000008344650269,
+ 0.4999980926513672
+ ],
+ "z": [
+ 0.2504886984825134,
+ 0.21871542930603027
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.14483597874641418,
+ 0.4999984800815582
+ ],
+ "y": [
+ -0.2463342249393463,
+ 0.0407063364982605
+ ],
+ "z": [
+ 0.4999990463256836,
+ 0.2018817663192749
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.17589455842971802,
+ 0.10439452528953552
+ ],
+ "y": [
+ -0.5000008344650269,
+ -0.2680117189884186
+ ],
+ "z": [
+ 0.2482362985610962,
+ -0.5000016689300537
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.38204729557037354,
+ -0.15349215269088745
+ ],
+ "y": [
+ -0.12330913543701172,
+ 0.24980267882347107
+ ],
+ "z": [
+ 0.4999992847442627,
+ -0.5000019073486328
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.13288408517837524,
+ -0.5000017881393433
+ ],
+ "y": [
+ 0.4999990463256836,
+ -0.17528033256530762
+ ],
+ "z": [
+ -0.06529992818832397,
+ -0.3271223306655884
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.0020979344844818115,
+ 0.4999980032444
+ ],
+ "y": [
+ 0.4999990463256836,
+ -0.23534762859344482
+ ],
+ "z": [
+ 0.02464580535888672,
+ -0.4131999611854553
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.4999990463256836,
+ -0.02643120288848877
+ ],
+ "y": [
+ -0.008359506726264954,
+ -0.1621524542570114
+ ],
+ "z": [
+ -0.05424219369888306,
+ -0.5000016689300537
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.18256323039531708,
+ -0.26281291246414185
+ ],
+ "y": [
+ -0.5000008940696716,
+ 0.4999980926513672
+ ],
+ "z": [
+ -0.05563583970069885,
+ -0.4720122516155243
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.4999990463256836,
+ -0.3450103998184204
+ ],
+ "y": [
+ -0.11508409678936005,
+ -0.490717351436615
+ ],
+ "z": [
+ 0.06801113486289978,
+ -0.5000020265579224
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.09535124897956848,
+ -0.5000019073486328
+ ],
+ "y": [
+ 0.10259876400232315,
+ 0.008581116795539856
+ ],
+ "z": [
+ 0.49999916553497314,
+ -0.4303990602493286
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.27335721254348755,
+ -0.46767693758010864
+ ],
+ "y": [
+ -0.5000008344650269,
+ 0.49999797344207764
+ ],
+ "z": [
+ 0.2521856129169464,
+ 0.22254428267478943
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.44185250997543335,
+ 0.2664499878883362
+ ],
+ "y": [
+ 0.08679106831550598,
+ -0.5000016689300537
+ ],
+ "z": [
+ 0.4999992549419403,
+ 0.19572526216506958
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.0036000609397888184,
+ -0.5000017881393433
+ ],
+ "y": [
+ 0.07896914333105087,
+ -0.006674826145172119
+ ],
+ "z": [
+ 0.49999910593032837,
+ -0.1356273889541626
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.05699089169502258,
+ 0.44657203555107117
+ ],
+ "y": [
+ -0.1859080195426941,
+ 0.4999980926513672
+ ],
+ "z": [
+ 0.49999916553497314,
+ -0.13406789302825928
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.5000007748603821,
+ 0.15982645750045776
+ ],
+ "y": [
+ 0.2618754506111145,
+ -0.10934287309646606
+ ],
+ "z": [
+ 0.21369701623916626,
+ -0.5000019669532776
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.45034605264663696,
+ -0.4302452504634857
+ ],
+ "y": [
+ -0.34108519554138184,
+ 0.43530142307281494
+ ],
+ "z": [
+ 0.49999934434890747,
+ -0.5000019073486328
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.34487903118133545,
+ 0.10186207294464111
+ ],
+ "y": [
+ 0.3206025958061218,
+ 0.4999983310699463
+ ],
+ "z": [
+ 0.4999992847442627,
+ -0.3552662134170532
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.4999992251396179,
+ -0.5000019073486328
+ ],
+ "y": [
+ 0.08069121092557907,
+ -0.08429957926273346
+ ],
+ "z": [
+ 0.24139371514320374,
+ -0.1832371950149536
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.38969647884368896,
+ 0.49999821186065674
+ ],
+ "y": [
+ 0.49999916553497314,
+ -0.3545114994049072
+ ],
+ "z": [
+ -0.08621317148208618,
+ -0.4405333995819092
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.4999987781047821,
+ 0.4809384346008301
+ ],
+ "y": [
+ -0.14180132746696472,
+ -0.2778143584728241
+ ],
+ "z": [
+ 0.012781381607055664,
+ -0.5000016689300537
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.4999992847442627,
+ -0.5000019073486328
+ ],
+ "y": [
+ 0.24085044860839844,
+ 0.30454587936401367
+ ],
+ "z": [
+ 0.28420156240463257,
+ -0.07930546998977661
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.49999916553497314,
+ -0.5000020265579224
+ ],
+ "y": [
+ 0.24320244789123535,
+ 0.3102561831474304
+ ],
+ "z": [
+ 0.11730220913887024,
+ -0.4845149517059326
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.42816993594169617,
+ -0.028195202350616455
+ ],
+ "y": [
+ -0.10453648865222931,
+ 0.30080053210258484
+ ],
+ "z": [
+ 0.4999992847442627,
+ -0.5000019073486328
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.3165437579154968,
+ -0.5000016689300537
+ ],
+ "y": [
+ -0.5000008344650269,
+ 0.238028883934021
+ ],
+ "z": [
+ 0.0722603052854538,
+ -0.11644861102104187
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.5000007748603821,
+ 0.17140036821365356
+ ],
+ "y": [
+ 0.1925312876701355,
+ -0.2827262282371521
+ ],
+ "z": [
+ 0.21889925003051758,
+ -0.5000019669532776
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.0417633131146431,
+ 0.05488260090351105
+ ],
+ "y": [
+ -0.5000007748603821,
+ 0.49999821186065674
+ ],
+ "z": [
+ 0.13950498402118683,
+ -0.03170397877693176
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.5000008344650269,
+ -0.12323272228240967
+ ],
+ "y": [
+ -0.04546558856964111,
+ -0.5000015497207642
+ ],
+ "z": [
+ 0.376401424407959,
+ 0.0972852110862732
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.4129667282104492,
+ -0.319307416677475
+ ],
+ "y": [
+ -0.4080814719200134,
+ 0.23646390438079834
+ ],
+ "z": [
+ 0.49999940395355225,
+ -0.5000017881393433
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.3197113275527954,
+ -0.16137871146202087
+ ],
+ "y": [
+ 0.49999916553497314,
+ -0.25111377239227295
+ ],
+ "z": [
+ -0.011935412883758545,
+ -0.5000017881393433
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.057544440031051636,
+ 0.4999982416629791
+ ],
+ "y": [
+ 0.49999910593032837,
+ -0.07354652881622314
+ ],
+ "z": [
+ 0.13466134667396545,
+ -0.11307239532470703
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.013297170400619507,
+ -0.33008480072021484
+ ],
+ "y": [
+ 0.49999910593032837,
+ -0.46599698066711426
+ ],
+ "z": [
+ -0.09211519360542297,
+ -0.5000020265579224
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.09684360027313232,
+ -0.5000019073486328
+ ],
+ "y": [
+ 0.26091867685317993,
+ 0.3775842487812042
+ ],
+ "z": [
+ 0.4999992251396179,
+ -0.4358426332473755
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.4999992251396179,
+ -0.46499598026275635
+ ],
+ "y": [
+ 0.3239840865135193,
+ 0.49999821186065674
+ ],
+ "z": [
+ 0.2871379256248474,
+ -0.05959826707839966
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.4999992549419403,
+ 0.2616989016532898
+ ],
+ "y": [
+ -0.22015425562858582,
+ -0.07214456796646118
+ ],
+ "z": [
+ 0.3723095655441284,
+ -0.5000016689300537
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.1104590892791748,
+ -0.5000021457672119
+ ],
+ "y": [
+ -0.07430827617645264,
+ -0.4230656623840332
+ ],
+ "z": [
+ 0.49999916553497314,
+ -0.4872403144836426
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.06942975521087646,
+ -0.5000016093254089
+ ],
+ "y": [
+ -0.06564155220985413,
+ 0.08946529030799866
+ ],
+ "z": [
+ 0.4999989867210388,
+ 0.1714547872543335
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.19455158710479736,
+ -0.5000014901161194
+ ],
+ "y": [
+ 0.4999990463256836,
+ 0.009741544723510742
+ ],
+ "z": [
+ 0.24063150584697723,
+ 0.2436273843050003
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.21801653504371643,
+ 0.12608903646469116
+ ],
+ "y": [
+ 0.49999916553497314,
+ -0.5000019073486328
+ ],
+ "z": [
+ 0.22053000330924988,
+ 0.2007634937763214
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.04867744445800781,
+ 0.3756217062473297
+ ],
+ "y": [
+ 0.4999990463256836,
+ -0.19151484966278076
+ ],
+ "z": [
+ -0.031034797430038452,
+ -0.500001847743988
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.3880770802497864,
+ 0.16552168130874634
+ ],
+ "y": [
+ 0.172794371843338,
+ 0.17182038724422455
+ ],
+ "z": [
+ 0.4999992847442627,
+ -0.5000016689300537
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.3336675763130188,
+ -0.1326543390750885
+ ],
+ "y": [
+ -0.5000006556510925,
+ -0.12676364183425903
+ ],
+ "z": [
+ 0.42453163862228394,
+ -0.5000017881393433
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.29968327283859253,
+ 0.04850780963897705
+ ],
+ "y": [
+ -0.15872535109519958,
+ -0.5000016689300537
+ ],
+ "z": [
+ 0.49999916553497314,
+ -0.2205744981765747
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.39467868208885193,
+ 0.2483786642551422
+ ],
+ "y": [
+ 0.3385053277015686,
+ 0.499998539686203
+ ],
+ "z": [
+ 0.4999992251396179,
+ -0.18639349937438965
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.2974853217601776,
+ 0.30786070227622986
+ ],
+ "y": [
+ 0.49999916553497314,
+ -0.5000017881393433
+ ],
+ "z": [
+ -0.06164702773094177,
+ -0.44466960430145264
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.003503262996673584,
+ -0.4428378939628601
+ ],
+ "y": [
+ -0.1954466998577118,
+ -0.5000017881393433
+ ],
+ "z": [
+ 0.4999989867210388,
+ -0.07903528213500977
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.5000007152557373,
+ 0.2929062247276306
+ ],
+ "y": [
+ 0.1432006061077118,
+ -0.5000019073486328
+ ],
+ "z": [
+ 0.4008985757827759,
+ -0.14581149816513062
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.048802152276039124,
+ 0.2592310607433319
+ ],
+ "y": [
+ -0.5000008940696716,
+ 0.4999980926513672
+ ],
+ "z": [
+ 0.1283619999885559,
+ -0.05684658885002136
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.09676709771156311,
+ 0.44534775614738464
+ ],
+ "y": [
+ 0.4999992251396179,
+ -0.5000019073486328
+ ],
+ "z": [
+ 0.43908774852752686,
+ 0.45956122875213623
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.4999992847442627,
+ -0.5000017881393433
+ ],
+ "y": [
+ 0.03859242796897888,
+ -0.18650983273983002
+ ],
+ "z": [
+ 0.3451882302761078,
+ 0.06876212358474731
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.11738172173500061,
+ 0.49999842047691345
+ ],
+ "y": [
+ 0.4999990463256836,
+ 0.05528223514556885
+ ],
+ "z": [
+ 0.2393832504749298,
+ 0.11650490760803223
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.3232855200767517,
+ 0.02577751874923706
+ ],
+ "y": [
+ 0.12572947144508362,
+ 0.4999984800815582
+ ],
+ "z": [
+ 0.49999916553497314,
+ 0.032520174980163574
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.4999992251396179,
+ -0.5000019073486328
+ ],
+ "y": [
+ 0.16862976551055908,
+ 0.12920357286930084
+ ],
+ "z": [
+ 0.24954256415367126,
+ -0.16345292329788208
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.4999993145465851,
+ 0.2116691768169403
+ ],
+ "y": [
+ -0.2353842556476593,
+ -0.07893332839012146
+ ],
+ "z": [
+ 0.44597530364990234,
+ -0.5000017881393433
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.021481424570083618,
+ 0.47077009081840515
+ ],
+ "y": [
+ -0.15307962894439697,
+ 0.4999980926513672
+ ],
+ "z": [
+ 0.49999910593032837,
+ -0.06969833374023438
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.25786933302879333,
+ 0.21724572777748108
+ ],
+ "y": [
+ 0.4999992251396179,
+ -0.5000019073486328
+ ],
+ "z": [
+ 0.32290562987327576,
+ 0.4349307417869568
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.27723634243011475,
+ -0.0033167004585266113
+ ],
+ "y": [
+ 0.4999992251396179,
+ -0.5000020265579224
+ ],
+ "z": [
+ 0.08234784007072449,
+ -0.4273297190666199
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.4999992847442627,
+ -0.5000017881393433
+ ],
+ "y": [
+ 0.260856032371521,
+ 0.3531167209148407
+ ],
+ "z": [
+ 0.44550809264183044,
+ 0.31232547760009766
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.3982287645339966,
+ -0.3232674300670624
+ ],
+ "y": [
+ -0.17463922500610352,
+ 0.49999821186065674
+ ],
+ "z": [
+ 0.4999992251396179,
+ -0.11112284660339355
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.15922902524471283,
+ -0.20748236775398254
+ ],
+ "y": [
+ -0.5000008344650269,
+ 0.4473778009414673
+ ],
+ "z": [
+ -0.07841843366622925,
+ -0.5000019073486328
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.23532934486865997,
+ 0.038409918546676636
+ ],
+ "y": [
+ 0.49999910593032837,
+ -0.3142232894897461
+ ],
+ "z": [
+ 0.006620079278945923,
+ -0.500001847743988
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.2665086090564728,
+ 0.023353487253189087
+ ],
+ "y": [
+ 0.4999992847442627,
+ -0.5000017881393433
+ ],
+ "z": [
+ 0.4137369990348816,
+ 0.3965367376804352
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.5000008940696716,
+ -0.1527332067489624
+ ],
+ "y": [
+ -0.06606799364089966,
+ -0.5000016689300537
+ ],
+ "z": [
+ 0.28440314531326294,
+ -0.03978246450424194
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.011824637651443481,
+ 0.4999981224536896
+ ],
+ "y": [
+ 0.49999910593032837,
+ -0.19392991065979004
+ ],
+ "z": [
+ 0.10197126865386963,
+ -0.23147165775299072
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.4317004084587097,
+ 0.2713383734226227
+ ],
+ "y": [
+ 0.16430434584617615,
+ 0.1512262374162674
+ ],
+ "z": [
+ 0.4999992251396179,
+ -0.5000019073486328
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.4999992251396179,
+ -0.5000017881393433
+ ],
+ "y": [
+ 0.30971208214759827,
+ 0.4717327356338501
+ ],
+ "z": [
+ 0.35509970784187317,
+ 0.09282588958740234
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.12478408217430115,
+ -0.0015382170677185059
+ ],
+ "y": [
+ 0.4999990463256836,
+ -0.09600555896759033
+ ],
+ "z": [
+ -0.1805158257484436,
+ -0.5000015497207642
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.1634010374546051,
+ 0.279689222574234
+ ],
+ "y": [
+ 0.4999992847442627,
+ -0.5000017881393433
+ ],
+ "z": [
+ 0.2337050437927246,
+ -0.051040589809417725
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.3640483319759369,
+ -0.2023882269859314
+ ],
+ "y": [
+ -0.36508244276046753,
+ -0.4069996476173401
+ ],
+ "z": [
+ 0.4999992847442627,
+ -0.5000019073486328
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.08265611529350281,
+ -0.07982456684112549
+ ],
+ "y": [
+ 0.4999990463256836,
+ -0.11041474342346191
+ ],
+ "z": [
+ -0.17619064450263977,
+ -0.5000016093254089
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.38816654682159424,
+ 0.49999839067459106
+ ],
+ "y": [
+ 0.3865017890930176,
+ 0.16951984167099
+ ],
+ "z": [
+ 0.49999934434890747,
+ 0.15322363376617432
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.5000009536743164,
+ -0.2006588578224182
+ ],
+ "y": [
+ 0.17811104655265808,
+ -0.0428234338760376
+ ],
+ "z": [
+ -0.02594888210296631,
+ -0.5000016093254089
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.4999992251396179,
+ 0.21893760561943054
+ ],
+ "y": [
+ -0.0203876793384552,
+ 0.44356128573417664
+ ],
+ "z": [
+ 0.43623602390289307,
+ -0.5000019073486328
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.3132752478122711,
+ -0.01592433452606201
+ ],
+ "y": [
+ -0.05951377749443054,
+ -0.3916870355606079
+ ],
+ "z": [
+ 0.49999916553497314,
+ -0.5000019073486328
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.2226443588733673,
+ -0.500001847743988
+ ],
+ "y": [
+ -0.12212198972702026,
+ 0.21291276812553406
+ ],
+ "z": [
+ 0.49999916553497314,
+ -0.3930717706680298
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.44899293780326843,
+ 0.2501869201660156
+ ],
+ "y": [
+ -0.4286297559738159,
+ -0.5000011920928955
+ ],
+ "z": [
+ 0.49999934434890747,
+ 0.027349233627319336
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.08545398712158203,
+ -0.5000020265579224
+ ],
+ "y": [
+ -0.09034505486488342,
+ -0.4270520806312561
+ ],
+ "z": [
+ 0.49999910593032837,
+ -0.39519202709198
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.1732795536518097,
+ 0.02376064658164978
+ ],
+ "y": [
+ 0.49999916553497314,
+ -0.5000017881393433
+ ],
+ "z": [
+ -0.02440798282623291,
+ -0.3594914674758911
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.44851231575012207,
+ 0.3121188282966614
+ ],
+ "y": [
+ 0.06217000633478165,
+ -0.09651997685432434
+ ],
+ "z": [
+ 0.4999992847442627,
+ -0.5000016689300537
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.257961630821228,
+ 0.499998539686203
+ ],
+ "y": [
+ -0.5000008940696716,
+ 0.011478662490844727
+ ],
+ "z": [
+ 0.07903002202510834,
+ -0.04740142822265625
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ 0.49999934434890747,
+ -0.5000015497207642
+ ],
+ "y": [
+ 0.16013716161251068,
+ 0.10858466476202011
+ ],
+ "z": [
+ 0.4858272969722748,
+ 0.4102151691913605
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.18246352672576904,
+ 0.2268798053264618
+ ],
+ "y": [
+ -0.5000007152557373,
+ -0.15319305658340454
+ ],
+ "z": [
+ 0.39804762601852417,
+ -0.5000017881393433
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.27353551983833313,
+ 0.09450903534889221
+ ],
+ "y": [
+ -0.454853892326355,
+ 0.09764844179153442
+ ],
+ "z": [
+ 0.49999940395355225,
+ -0.5000019073486328
+ ]
+ },
+ {
+ "line": {
+ "color": "rgb(255, 0, 0)",
+ "width": 10
+ },
+ "marker": {
+ "color": "rgb(255, 0, 0)",
+ "colorscale": [
+ [
+ 0,
+ "#440154"
+ ],
+ [
+ 0.1111111111111111,
+ "#482878"
+ ],
+ [
+ 0.2222222222222222,
+ "#3e4989"
+ ],
+ [
+ 0.3333333333333333,
+ "#31688e"
+ ],
+ [
+ 0.4444444444444444,
+ "#26828e"
+ ],
+ [
+ 0.5555555555555556,
+ "#1f9e89"
+ ],
+ [
+ 0.6666666666666666,
+ "#35b779"
+ ],
+ [
+ 0.7777777777777778,
+ "#6ece58"
+ ],
+ [
+ 0.8888888888888888,
+ "#b5de2b"
+ ],
+ [
+ 1,
+ "#fde725"
+ ]
+ ],
+ "size": 4
+ },
+ "showlegend": false,
+ "type": "scatter3d",
+ "x": [
+ -0.15971916913986206,
+ 0.28884264826774597
+ ],
+ "y": [
+ 0.4999992251396179,
+ -0.5000019073486328
+ ],
+ "z": [
+ 0.13885435461997986,
+ -0.28684884309768677
+ ]
+ }
+ ],
+ "layout": {
+ "autosize": false,
+ "height": 1000,
+ "margin": {
+ "b": 100,
+ "l": 50,
+ "pad": 4,
+ "r": 50,
+ "t": 100
+ },
+ "scene": {
+ "aspectmode": "data",
+ "aspectratio": {
+ "x": 1.1037419525768377,
+ "y": 1.134416500545043,
+ "z": 0.7986562874095974
+ },
+ "camera": {
+ "center": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "eye": {
+ "x": 1.25,
+ "y": 1.25,
+ "z": 1.25
+ },
+ "up": {
+ "x": 0,
+ "y": 0,
+ "z": 1
+ }
+ }
+ },
+ "template": {
+ "data": {
+ "bar": [
+ {
+ "error_x": {
+ "color": "#2a3f5f"
+ },
+ "error_y": {
+ "color": "#2a3f5f"
+ },
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "bar"
+ }
+ ],
+ "barpolar": [
+ {
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "barpolar"
+ }
+ ],
+ "carpet": [
+ {
+ "aaxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "baxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "type": "carpet"
+ }
+ ],
+ "choropleth": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "choropleth"
+ }
+ ],
+ "contour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "contour"
+ }
+ ],
+ "contourcarpet": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "contourcarpet"
+ }
+ ],
+ "heatmap": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmap"
+ }
+ ],
+ "heatmapgl": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmapgl"
+ }
+ ],
+ "histogram": [
+ {
+ "marker": {
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "histogram"
+ }
+ ],
+ "histogram2d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2d"
+ }
+ ],
+ "histogram2dcontour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2dcontour"
+ }
+ ],
+ "mesh3d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "mesh3d"
+ }
+ ],
+ "parcoords": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "parcoords"
+ }
+ ],
+ "pie": [
+ {
+ "automargin": true,
+ "type": "pie"
+ }
+ ],
+ "scatter": [
+ {
+ "fillpattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ },
+ "type": "scatter"
+ }
+ ],
+ "scatter3d": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatter3d"
+ }
+ ],
+ "scattercarpet": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattercarpet"
+ }
+ ],
+ "scattergeo": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergeo"
+ }
+ ],
+ "scattergl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergl"
+ }
+ ],
+ "scattermapbox": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattermapbox"
+ }
+ ],
+ "scatterpolar": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolar"
+ }
+ ],
+ "scatterpolargl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolargl"
+ }
+ ],
+ "scatterternary": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterternary"
+ }
+ ],
+ "surface": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "surface"
+ }
+ ],
+ "table": [
+ {
+ "cells": {
+ "fill": {
+ "color": "#EBF0F8"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "header": {
+ "fill": {
+ "color": "#C8D4E3"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "type": "table"
+ }
+ ]
+ },
+ "layout": {
+ "annotationdefaults": {
+ "arrowcolor": "#2a3f5f",
+ "arrowhead": 0,
+ "arrowwidth": 1
+ },
+ "autotypenumbers": "strict",
+ "coloraxis": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "colorscale": {
+ "diverging": [
+ [
+ 0,
+ "#8e0152"
+ ],
+ [
+ 0.1,
+ "#c51b7d"
+ ],
+ [
+ 0.2,
+ "#de77ae"
+ ],
+ [
+ 0.3,
+ "#f1b6da"
+ ],
+ [
+ 0.4,
+ "#fde0ef"
+ ],
+ [
+ 0.5,
+ "#f7f7f7"
+ ],
+ [
+ 0.6,
+ "#e6f5d0"
+ ],
+ [
+ 0.7,
+ "#b8e186"
+ ],
+ [
+ 0.8,
+ "#7fbc41"
+ ],
+ [
+ 0.9,
+ "#4d9221"
+ ],
+ [
+ 1,
+ "#276419"
+ ]
+ ],
+ "sequential": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "sequentialminus": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ]
+ },
+ "colorway": [
+ "#636efa",
+ "#EF553B",
+ "#00cc96",
+ "#ab63fa",
+ "#FFA15A",
+ "#19d3f3",
+ "#FF6692",
+ "#B6E880",
+ "#FF97FF",
+ "#FECB52"
+ ],
+ "font": {
+ "color": "#2a3f5f"
+ },
+ "geo": {
+ "bgcolor": "white",
+ "lakecolor": "white",
+ "landcolor": "#E5ECF6",
+ "showlakes": true,
+ "showland": true,
+ "subunitcolor": "white"
+ },
+ "hoverlabel": {
+ "align": "left"
+ },
+ "hovermode": "closest",
+ "mapbox": {
+ "style": "light"
+ },
+ "paper_bgcolor": "white",
+ "plot_bgcolor": "#E5ECF6",
+ "polar": {
+ "angularaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "radialaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "scene": {
+ "xaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "yaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "zaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ }
+ },
+ "shapedefaults": {
+ "line": {
+ "color": "#2a3f5f"
+ }
+ },
+ "ternary": {
+ "aaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "baxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "caxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "title": {
+ "x": 0.05
+ },
+ "xaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ },
+ "yaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ }
+ }
+ },
+ "width": 1000
+ }
+ },
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABY0AAAPoCAYAAACS2NGTAAAAAXNSR0IArs4c6QAAIABJREFUeF7s3QuULHd9H/j/vGfua64kEI/o4Q1eL+IhG7JrBArEju1Yxou1YQOGRLAbwMAGsYuMIYllG7PHnCSQgBNEYh72JoZjkODEVmAJ2GtjmyMecdbEsgwsJI6RdAQIxH3MvXdePTN7fj2qUd95dVd3VXV116fPucdGU12Pz//ffe9861e//8TW1tZW8iJAgAABAgQIECBAgAABAgQIECBAgAABAimlCaGxeUCAAAECBAgQIECAAAECBAgQIECAAAECmYDQ2FwgQIAAAQIECBAgQIAAAQIECBAgQIAAgR0BobHJQIAAAQIECBAgQIAAAQIECBAgQIAAAQJCY3OAAAECBAgQIECAAAECBAgQIECAAAECBPYKqDQ2KwgQIECAAAECBAgQIECAAAECBAgQIEBgR0BobDIQIECAAAECBAgQIECAAAECBAgQIECAgNDYHCBAgAABAgQIECBAgAABAgQIECBAgACBvQIqjc0KAgQIECBAgAABAgQIECBAgAABAgQIENgREBqbDAQIECBAgAABAgQIECBAgAABAgQIECAgNDYHCBAgQIAAAQIECBAgQIAAAQIECBAgQGCvgEpjs4IAAQIECBAgQIAAAQIECBAgQIAAAQIEdgSExiYDAQIECBAgQIAAAQIECBAgQIAAAQIECAiNzQECBAgQIECAAAECBAgQIECAAAECBAgQ2Cug0tisIECAAAECBAgQIECAAAECBAgQIECAAIEdAaGxyUCAAAECBAgQIECAAAECBAgQIECAAAECQmNzgAABAgQIECBAgAABAgQIECBAgAABAgT2Cqg0NisIECBAgAABAgQIECBAgAABAgQIECBAYEdAaGwyECBAgAABAgQIECBAgAABAgQIECBAgIDQ2BwgQIAAAQIECBAgQIAAAQIECBAgQIAAgb0CKo3NCgIECBAgQIAAAQIECBAgQIAAAQIECBDYERAamwwECBAgQIAAAQIECBAgQIAAAQIECBAgIDQ2BwgQIECAAAECBAgQIECAAAECBAgQIEBgr4BKY7OCAAECBAgQIECAAAECBAgQIECAAAECBHYEhMYmAwECBAgQIECAAAECBAgQIECAAAECBAgIjc0BAgQIECBAgAABAgQIECBAgAABAgQIENgroNLYrCBAgAABAgQIECBAgAABAgQIECBAgACBHQGhsclAgAABAgQIECBAgAABAgQIECBAgAABAkJjc4AAAQIECBAgQIAAAQIECBAgQIAAAQIE9gqoNDYrCBAgQIAAAQIECBAgQIAAAQIECBAgQGBHQGhsMhAgQIAAAQIECBAgQIAAAQIECBAgQICA0NgcIECAAAECBAgQIECAAAECBAgQIECAAIG9AiqNzQoCBAgQIECAAAECBAgQIECAAAECBAgQ2BEQGpsMBAgQIECAAAECBAgQIECAAAECBAgQICA0NgcIECBAgAABAgQIECBAgAABAgQIECBAYK+ASmOzggABAgQIECBAgAABAgQIECBAgAABAgR2BITGJgMBAgQIECBAgAABAgQIECBAgAABAgQICI3NAQIECBAgQIAAAQIECBAgQIAAAQIECBDYK6DS2KwgQIAAAQIECBAgQIAAAQIECBAgQIAAgR0BobHJQIAAAQIECBAgQIAAAQIECBAgQIAAAQJCY3OAAAECBAgQIECAAAECBAgQIECAAAECBPYKqDQ2KwgQIECAAAECBAgQIECAAAECBAgQIEBgR0BobDIQIECAAAECBAgQIECAAAECBAgQIECAgNDYHCBAgAABAgQIECBAgAABAgQIECBAgACBvQIqjc0KAgQIECBAgAABAgQIECBAgAABAgQIENgREBqbDAQIECBAgAABAgQIECBAgAABAgQIECAgNDYHCBAgQIAAAQIECBAgQIAAAQIECBAgQGCvgEpjs4IAAQIECBAgQIAAAQIECBAgQIAAAQIEdgSExiYDAQIECBAgQIAAAQIECBAgQIAAAQIECAiNzQECBAgQIECAAAECBAgQIECAAAECBAgQ2Cug0tisIECAAAECBAgQIECAAAECBAgQIECAAIEdAaGxyUCAAAECBAgQIECAAAECBAgQIECAAAECQmNzgAABAgQIECBAgAABAgQIECBAgAABAgT2Cqg0NisIECBAgAABAgQIECBAgAABAgQIECBAYEdAaGwyECBAgAABAgQIECBAgAABAgQIECBAgIDQ2BwgQIAAAQIECBAgQIAAAQIECBAgQIAAgb0CKo3NCgIECBAgQIAAAQIECBAgQIAAAQIECBDYERAamwwECBAgQIAAAQIECBAgQIAAAQIECBAgIDQ2BwgQIECAAAECBAgQIECAAAECBAgQIEBgr4BKY7OCAAECBAgQIECAAAECBAgQIECAAAECBHYEhMYmAwECBAgQIECAAAECBAgQIECAAAECBAgIjc0BAgQIECBAgAABAgQIECBAgAABAgQIENgroNLYrCBAgAABAgQIECBAgAABAgQIECBAgACBHQGhsclAgAABAgQIECBAgAABAgQIECBAgAABAkJjc4AAAQIECBAgQIAAAQIECBAgQIAAAQIE9gqoNDYrCBAgQIAAAQIECBAgQIAAAQIECBAgQGBHQGhsMhAgQIAAAQIECBAgQIAAAQIECBAgQICA0NgcIECAAAECBAgQIECAAAECBAgQIECAAIG9AiqNzQoCBAgQIECAAAECBAgQIECAAAECBAgQ2BEQGpsMBAgQIECAAAECBAgQIECAAAECBAgQICA0NgcIECBAgAABAgQIECBAgAABAgQIECBAYK+ASmOzggABAgQIECBAgAABAgQIECBAgAABAgR2BITGJgMBAgQIECBAgAABAgQIECBAgAABAgQICI3NAQIECBAgQIAAAQIECBAgQIAAAQIECBDYK6DS2KwgQIAAAQIECBAgQIAAAQIECBAgQIAAgR0BobHJQIAAAQIECBAgQIAAAQIECBAgQIAAAQJCY3OAAAECBAgQIECAAAECBAgQIECAAAECBPYKqDQ2KwgQIECAAAECBAgQIECAAAECBAgQIEBgR0BobDIQIECAAAECBAgQIECAAAECBAgQIECAgNDYHCBAgAABAgQIECBAgAABAgQIECBAgACBvQIqjc0KAgQIECBAgAABAgQIECBAgAABAgQIENgREBqbDAQIECBAgAABAgQIECBAgAABAgQIECAgNDYHCBAgQIAAAQIECBAgQIAAAQIECBAgQGCvgEpjs4IAAQIECBAgQIAAAQIECBAgQIAAAQIEdgSExiYDAQIECBAgQIAAAQIECBAgQIAAAQIECAiNzQECBAgQIECAAAECBAgQIECAAAECBAgQ2Cug0tisIECAAAECBAgQIECAAAECBAgQIECAAIEdAaGxyUCAAAECBAgQIECAAAECBAgQIECAAAECQmNzgAABAgQIECBAgAABAgQIECBAgAABAgT2Cqg0NisIECBAgAABAgQIECBAgAABAgQIECBAYEdAaGwyECBAgAABAgQIECBAgAABAgQIECBAgIDQ2BwgQIAAAQIECBAgQIAAAQIECBAgQIAAgb0CKo3NCgIECBAgQIAAAQIECBAgQIAAAQIECBDYERAamwwECBAgQIAAAQIECBAgQIAAAQIECBAgIDQ2BwgQIECAAAECBAgQIECAAAECBAgQIEBgr4BKY7OCAAECBAgQIECAAAECBAgQIECAAAECBHYEhMYmAwECBAgQIECAAAECBAgQIECAAAECBAgIjc0BAgQIECBAgAABAgQIECBAgAABAgQIENgroNLYrCBAgAABAgQIECBAgAABAgQIECBAgACBHQGhsclAgAABAgQIECBAgAABAgQIECBAgAABAkJjc4AAAQIECBAgQIAAAQIECBAgQIAAAQIE9gqoNDYrCBAgQIAAAQIECBAgQIAAAQIECBAgQGBHQGhsMhAgQIAAAQIECBAgQIAAAQIECBAgQICA0NgcIECAAAECBAgQIECAAAECBAgQIECAAIG9AiqNzQoCBAgQIECAAAECBAgQIECAAAECBAgQ2BEQGpsMBAgQIECAAAECBAgQIECAAAECBAgQICA0NgcIECBAgAABAgQIECBAgAABAgQIECBAYK+ASmOzggABAgQIECBAgAABAgQIECBAgAABAgR2BITGJgMBAgQIECBAgAABAgQIECBAgAABAgQICI3NAQIECBAgQIAAAQIECBAgQIAAAQIECJQtsLq6lianJtPM9HTXQ+XZtuvOBthApfEAeN5KgAABAgQIECBAgAABAgQIECBAgED9BG6//fb01a9+NU1MTKRrrrkmPf/5zx/aSd5081vStU96Qnrj33tR13PIs23XnQ2wgdB4ADxvJUCAAAECBAgQIECAAAECBAgQIECgPgJf/vKX04033pi+8pWvXHRST3/609PHPvax9LjHPa7yk/2L+76RFuZn02MefWnXY+fZtuvOBthAaDwAnrcSIECAAAECBAgQIECAAAECBAgQIFAfgago/s3f/M19T+gVr3hFeu973zvwyf751x5Iv/TP358+/8dfSk/4rsen177s+elHnvPft/f7T277jXTVX3pMOrN0Pn3mP96TXvQ//VC658v/NX33dz0+Pf+5z2lv8+nP353e9q8+lP7LXzyQ/sq135NW19bTP7n1Vem7rnxseuu//NDOth/9nc+kP/zsn6QTJ46mj/72Z9ITv/uqdPPf/Zvp+592TXs/H/zN300f+Le/k7710Ol09RWPaf/srz3z+wa+vtiB0LgQRjshQIAAAQIECBAgQIAAAQIECBAgQGDYAvPz82l1dXXf07jiiivSfffdN9ApRsD7Y3/n76cnf8/V6X954Q3pP3zhS+ld//q30kfe++Z0zX97dfp7/+Ad6Q8+9yfphh/8/vS9T3pCeuo1fzm97zf+73TtNU9Ir3rJ89J/vffr6X986T9ML7rxr6cbb/ir6f6vfyu94f/8Vzvvf83P/vLOtv/69k+0w+WXvejH0l/9/mvTx3/vc+mLX/mL9OH3vDn9p3v+c/o7N/9Sevsvvib95asf1/7frdZGevHf/KGBri97s9C4EEY7IUCAAAECBAgQIECAAAECBAgQIEBgmAJLS0vpxIkTB57CkSNH0vnz5wc6xc/80T3pp97wT9Pv3vH29NjLt9tN/MT/+rPp2c+4Nr3hf3tROzT+nidcmV73U39r5zidQfC/+jd3pt/4rd9Nn/7Nf9H++Xqrlb7vh19xYGh81x/9aXrvP31De9toXfHjL/kH6TP/7l3pi1/9i/SK178tvfutr0/P/CtPTlNTkwNd1+43C40L5bQzAgQIECBAgAABAgQIECBAgAABAgSGJVB2pfG//fgfpne89yM7oW9c55v+6f+Vls5daFf9Rmj89Gu/J73ib//4vqHxz7/119L6eiv941tfmTs0fvDbp9MP/q3Xpd/78NvTpZecSP/4nb+RPnTn77X3E5XNt7zyBemKxz26EHqhcSGMdkKAAAECBAgQIECAAAECBAgQIECAwLAFyu5p/Puf+U8pKoej2nfxxNH25d5081varSlu/T9u6hoaf/ijv5/u+Oin2i0m4pWn0rgzNM4W1Ttz9ny6+0v/Jb39PR9OT3zClekf/ex2GD3oS2g8qKD3EyBAgAABAgQIECBAgAABAgQIECBQC4Evf/nL6cYbb0xf+cpXLjqfpz/96eljH/tYetzjHjfQeZ46s5R+9MVvaC9w91N/+8fTH/3Jl9Nrb/0X6V/+41vSX7vue7uGxvc98GC64W+/Mf2d5/9w+v7vuyb9+099Pn3iU/+hp/YUnaHxV/78/nZ181//q09Pk5OT6ef+ya+m40cX0s/f8tKBri97s9C4EEY7IUCAAAECBAgQIECAAAECBAgQIECgLgK33357+upXv5omJibSNddck6ICuahXLHQXi9edv7DS3uWrX/oT6bUv295/tKf4K9d+T3p5R3uK1976z9sL4r3ypue1t8mqjSPs/cFnPS2989f+bfrYr/+j9N9c9bjUue2/ueMT6a4/uie9520/037ftx46nX7gf35d+r2PvKO9oN7//nP/Yuccrv8fnpJ+8Wf+bnr8Yy4r5DKFxoUw2gkBAgQIECBAgAABAgQIECBAgAABAk0R2NzcTF9/8DvpsktOpPm52VyXvbGxubNw3Rfu+Wq7vcX/+8n35N7P1tZW+s7ppXRkYS4tzM/lOoduGwuNuwn5OQECBAgQIECAAAECBAgQIECAAAECBAoS+P7nvjp935O/O83NzqTfu+sL6bUvf3569Ut+oqC9F7MboXExjvZCgAABAgQIECBAgAABAgQIECBAgACBrgKf+aN70n1f/1aanp5KT/zuq9KTv+e7ur6n6g2ExlWLOx4BAgQIECBAgAABAgQIECBAgAABAgRqLCA0rvHgODUCBAgQIECAAAECBAgQIECAAAECBAhULSA0rlrc8QgQIECAAAECBAgQIECAAAECBAgQIFBjAaFxjQfHqREgQIAAAQIECBAgQIAAAQIECBAgQKBqAaFx1eKOR4AAAQIECBAgQIAAAQIECBAgQIAAgRoLCI1rPDhOjQABAgQIECBAgAABAgQIECBAgAABAlULCI2rFnc8AgQIECBAgAABAgQIECBAgAABAgQI1FhAaFzjwXFqBAgQIECAAAECBAgQIECAAAECBAgQqFpAaFy1uOMRIECAAAECBAgQIECAAAECBAgQIECgxgJC4xoPjlMjQIAAAQIECBAgQIAAAQIECBAgQIBA1QJC46rFHY8AAQIECBAgQIAAAQIECBAgQIAAAQI1FhAa13hwnBoBAgQIECBAgAABAgQIECBAgAABAgSqFhAaVy3ueAQIECBAgAABAgQIECBAgAABAgQIEKixgNC4xoPj1AgQIECAAAECBAgQIECAAAECBAgQIFC1gNC4anHHI0CAAAECBAgQIECAAAECBAgQIECAQI0FhMY1HhynRoAAAQIECBAgQIAAAQIECBAgQIAAgaoFhMZVizseAQIECBAgQIAAAQIECBAgQIAAAQIEaiwgNK7x4Dg1AgQIECBAgAABAgQIECBAgAABAgQIVC0gNK5a3PEIECBAgAABAgQIECBAgAABAgQIECBQYwGhcY0Hx6kRIECAAAECBAgQIECAAAECBAgQIECgagGhcdXijkeAAAECBAgQIECAAAECBAgQIECAAIEaCwiNazw4To0AAQIECBAgQIAAAQIECBAgQIAAAQJVCwiNqxZ3PAIECBAgQIAAAQIECBAgQIAAAQIECNRYQGhc48FxagQIECBAgAABAgQIECBAgAABAgQIEKhaQGhctbjjESBAgAABAgQIECBAgAABAgQIECBAoMYCQuMaD45TI0CAAAECBAgQIECAAAECBAgQIECAQNUCQuOqxR2PAAECBAgQIECAAAECBAgQIECAAAECNRYQGtd4cJwaAQIECBAgQIAAAQIECBAgQIAAAQIEqhYQGlct7ngECBAgQIAAAQIECBAgQIAAAQIECBCosYDQuMaD49QIECBAgAABAgQIECBAgAABAgQIECBQtYDQuGpxxyNAgAABAgQIECBAgAABAgQIECBAgECNBYTGNR4cp0aAAAECBAgQIECAAAECBAgQIECAAIGqBYTGVYs7HgECBAgQIECAAAECBAgQIECAAAECBGosIDSu8eA4NQIECBAgQIAAAQIECBAgQIAAAQIECFQtIDSuWtzxCBAgQIAAAQIECBAgQIAAAQIECBAgUGMBoXGNB8epESBAgAABAgQIECBAgAABAgQIECBAoGoBoXHV4o5HgAABAgQIECBAgAABAgQIECBAgACBGgsIjWs8OE6NAAECBAgQIECAAAECBAgQIECAAAECVQsIjasWdzwCBAgQIECAAAECBAgQIECAAAECBAjUWEBoXOPBcWoECBAgQIAAAQIECBAgQIAAAQIECBCoWkBoXLW44xEgQIAAAQIECBAgQIAAAQIECBAgQKDGAkLjGg+OUyNAgAABAgQIECBAgAABAgQIECBAgEDVAkLjqsUdjwABAgQIECBAgAABAgQIECBAgAABAjUWEBrXeHCcGgECBAgQIECAAAECBAgQIECAAAECBKoWEBpXLe54BAgQIECAAAECBAgQIECAAAECBAgQqLGA0LjGg+PUCBAgQIAAAQIECBAgQIAAAQIECBAgULWA0LhqcccjQIAAAQIECBAgQIAAAQIECBAgQIBAjQWExjUeHKdGgAABAgQIECBAgAABAgQIECBAgACBqgWExlWLOx4BAgQIECBAgAABAgQIECBAgAABAgRqLCA0rvHgODUCBAgQIECAAAECBAgQIECAAAECBAhULSA0rlrc8QgQIECAAAECBAgQIECAAAECBAgQIFBjAaFxjQfHqREgQIAAAQIECBAgQIAAAQIECBAgQKBqAaFx1eKOR4AAAQIECBAgQIAAAQIECBAgQIAAgRoLCI1rPDhOjQABAgQIECBAgAABAgQIECBAgAABAlULCI2rFnc8AgQIECBAgAABAgQIECBAgAABAgQI1FhAaFzjwXFqBAgQIECAAAECBAgQIECAAAECBAgQqFpAaFy1uOMRIECAAAECBAgQIECAAAECBAgQIECgxgJC4xoPjlMjQIAAAQIECBAgQIAAAQIECBAgQIBA1QJC46rFHY8AAQIECBAgQIAAAQIECBAgQIAAAQI1FhAa13hwnBoBAgQIECBAgAABAgQIECBAgAABAgSqFhAaVy3ueAQIECBAgAABAgQIECBAgAABAgQIEKixgNC4xoPj1AgQIECAAAECBAgQIECAAAECBAgQIFC1gNC4anHHI0CAAAECBAgQIECAAAECBAgQIECAQI0FhMY1HhynRoAAAQIECBAgQIAAAQIECBAgQIAAgaoFhMZVizseAQIECBAgQIAAAQIECBAgQIAAAQIEaiwgNK7x4Dg1AgQIECBAgAABAgQIECBAgAABAgQIVC0gNK5a3PEIECBAgAABAgQIECBAgAABAgQIECBQYwGhcY0Hx6kRIECAAAECBAgQIECAAAECBAgQIECgagGhcdXijkeAAAECBAgQIECAAAECBAgQIECAAIEaCwiNazw4To0AAQIECBAgQIAAAQIECBAgQIAAAQJVCwiNqxZ3PAIECBAgQIAAAQIECBAgQIAAAQIECNRYQGhc48FxagQIECBAgAABAgQIECBAgAABAgQIEKhaQGhctbjjESBAgAABAgQIECBAgAABAgQIECBAoMYCQuMaD45TI0CAAAECBAgQIECAAAECBAgQIECAQNUCQuOqxR2PAAECBAgQIECAAAECBAgQIECAAAECNRYQGtd4cJwaAQIECBAgQIAAAQIECBAgQIAAAQIEqhYQGlct7ngECBAgQIAAAQIECBAgQIAAAQIECBCosYDQuMaD49QIECBAgAABAgQIECBAgAABAgQIECBQtYDQuGpxxyNAgAABAgQIECBAgAABAgQIECBAgECNBYTGNR4cp0aAAAECBAgQIECAAAECBAgQIECAAIGqBYTGVYs7HgECBAgQIECAAAECBAgQIECAAAECBGosIDSu8eA4NQIECBAgQIAAAQIECBAgQIAAAQIECFQtIDSuWtzxCBAgQIAAAQIECBAgQIAAAQIECBAgUGMBoXGNB8epESBAgAABAgQIECBAgAABAgQIECBAoGoBoXHV4o5HgAABAgQIECBAgAABAgQIECBAgACBGgsIjWs8OE6NAAECBAgQIDDqAmutzbS6vplWVltpYnIiLcxOpbmZqTQ9NTHql+b8CRAgQIAAAQIECIytgNB4bIfWhREgQIAAAQIEhiMQQfHy6kZaWdtIG5tb+57E7MxkOzyOEFmAPJxxclQCBAgQIECAAAECBwkIjc0NAgQIECBAgACBgQV6CYoPOogAeWB+OyBAgAABAgQIECBQqIDQuFBOOyNAgAABAgQINEdgdT2qiTcPrSjOqyFAzitmewIECBAgQIAAAQLFCwiNize1RwIECBAgQIDA2ApEUBytJ6JP8UGtJ4q6eAFyUZL2Q4AAAQIECBAgQCCfgNA4n5etCRAgQIAAAQKNE6gyKD4IV4DcuGnnggkQIECAAAECBIYoIDQeIr5DEyBAgAABAgTqKlCHoPggm6nJiXRkfjrNzUym2enJuhI6LwIECBAgQIAAAQIjKyA0Htmhc+IECBAgQIAAgWIF6hwUC5CLHWt7I0CAAAECBAgQIHCYgNDY/CBAgAABAgQINFhgFINiAXKDJ6xLJ0CAAAECBAgQqERAaFwJs4MQIECAAAECBOojsLK2keLP8tpG2tqqz3kVeSZaWBSpaV8ECBAgQIAAAQJNExAaN23EXS8BAgQIECDQSIEmBMUHDawAuZFT3kUTIECAAAECBAgMICA0HgDPWwkQIECAAAECdRXY3NxKa63Nsa8ozusfAfL87FRamJuyiF5ePNsTIECAAAECBAg0RkBo3JihdqEECBAgQIDAuAtEULyyvh0Uxx+vwwUmJlI6MjctQDZRCBAgQIAAAQIECOwSEBqbEgQIECBAgACBERYQFBczeALkYhzthQABAgQIECBAYDwEhMbjMY6uggABAgQIEGiQQGtjM621shXsttLpc+sNuvpyL3V2ZjItHplJF1Y3VCCXS23vBAgQIECAAAECNRYQGtd4cJwaAQIECBAgQCATyILiC6uttLa+2f7PR6Iv78yk0LjAaRKexxdm0kNnV9t7VYFcIK5dESBAgAABAgQIjIyA0HhkhsqJEiBAgAABAk0T2C8o7jSIBd3mZ4XGRc6LCI0jjN+veluAXKS0fREgQIAAAQIECNRZQGhc59FxbgQIECBAgEDjBLoFxZ0ghwWcjYMr6IJ7NRUgFwRuNwQIECBAgAABArUUEBrXclicFAECBAgQINAkgTxB8e5HtbL2AAAgAElEQVTQuLOVQpPMyrrWflp+CJDLGg37JUCAAAECBAgQGJaA0HhY8o5LgAABAgQINFqg36BYaFzutOknNO48IwFyueNj7wQIECBAgAABAtUICI2rcXYUAgQIECBAgECKoHh1fTMtr23sLGY3CMvuRdsG2Zf3bgsMGhoLkM0kAgQIECBAgACBcRAQGo/DKLoGAgQIECBAoLYCWVB8YaWV1je2Cj3PqcmJdPLYbHro7Gqh+23yziI0np6aTGcvrBfKoAK5UE47I0CAAAECBAgQKFlAaFwysN0TIECAAAECzRMoMyju1IzQ+NLjs+lbZ4TGRc2yCI3DdWm5VdQu9+wnAuSF2el0ZH4qTU9OpMnJidKOZccECBAgQIAAAQIE+hEQGvej5j0ECBAgQIAAgV0Ca63NtLwabSc2Cq8oPgg7ws1HnZhL3zy9YjwKEjg6P50iwy0zNO48VQFyQQNnNwQIECBAgAABAoUKCI0L5bQzAgQIECBAoEkCWVC8sraRNjaLbT3Ri6PQuBelfNscX5huv6Gq0FiAnG98bE2AAAECBAgQIFCNgNC4GmdHIUCAAAECBMZEYNhB8W7Gx5ycV2lc4NwaZmgsQC5wIO2KAAECBAgQIEBgIAGh8UB83kyAAAECBAg0QWB1faPdemJ1fXMoFcWHGQuNi52BdQmNBcjFjqu9ESBAgAABAgQI5BMQGufzsjUBAgQIECDQEIE6B8WdQ/D4yxbSAw8tN2RUyr/MCI2j1ciF1Y3yD9bHEbIeyHMzkyn+WESvD0RvIUCAAAECBAgQ6CogNO5KZAMCBAgQIECgKQKjEhQLjcubkXUPjTuvPALkmenJdHRuWoBc3pSwZwIECBAgQIBAIwWExo0cdhdNgAABAgQIZAKjGBR3jt5jL5lP3zi1YkALEjh5bCatrW/WttL4oMsUIBc0AeyGAAECBAgQIECgLSA0NhEIECBAgACBxgmMelDcOWB6Ghc7fUc1NO5UECAXOyfsjQABAgQIECDQRAGhcRNH3TUTIECAAIEGCoxTULw7NH7wzEra2mrgoJZwyeMQGguQS5gYdkmAAAECBAgQaJiA0LhhA+5yCRAgQIBAkwRW1jZS/Fle2xjbUDUqjb99drW9eJvX4AIRGq+sbbbnzbi9VCCP24i6HgIECBAgQIBAeQJC4/Js7ZkAAQIECBAYgkATguJOVqFxsZMsQuMLqxvtvsbj/pqdmUwLs1PtP5OTE+N+ua6PAAECBAgQIEAgh4DQOAeWTQkQIECAAIH6CWxubqW11maamZ5MD51dTa2NZlXcXnZiLp0+t6bSuKCpecnx2XR+pdWI0Dgji/D45NHZFC1cBMgFTSS7IUCAAAECBAiMuIDQeMQH0OkTIECAAIEmCkRQvLK+3UIgayMQ4enS8nqjwr4Y+7juM+fXGheWlzXvmziPIjQ+Oj+dTi2ttVlVIJc1u+yXAAECBAgQIDA6AkLj0RkrZ0qAAAECBBotsF9Q3AnSxLAvC42bGJaX9WFo4jw6MjfVDopPn1vfwypALmum2S8BAgQIECBAoN4CQuN6j4+zI0CAAAECjRZobWymtdbWRRXFB4GM8wJmh02CJoacZX4omli5HaHx9NRkOnthb2jcaS1ALnPm2TcBAgQIECBAoF4CQuN6jYezIUCAAAECjRfIguILq/n6yp44MpPivbGIWZNeTezBW+b4NrFH9PGF6Tbp0nKrZ1oBcs9UNiRAgAABAgQIjKSA0Hgkh81JEyBAgACB8RLoNyjuVOgn+BoHxaiwjqB8bX1zHC5n6Nfw6MW59J2lZi0sGJ+dza3UXgCwn5cAuR817yFAgAABAgQI1FtAaFzv8XF2BAgQIEBgbAWKCIo7cWIhr8mJfNWS44Db1LYcZY3dY07Op2+fXU0bkaI25BVzKG46FFGlL0BuyKRxmQQIECBAgMDYCwiNx36IXSABAgQIEKiPQNFBceeVHbaYV30Eij+TIgO/4s9u9PYoNC5uzATIxVnaEwECBAgQIECgagGhcdXijkeAAAECBBomUGZQ3EkZAVVUG59aWmuUcFN7OZc1yE0Mjavoiy1ALmvG2i8BAgQIECBAoBwBoXE5rvZKgAABAgQaLRBB8Wo87r7SSusb1TzmH6HU8YWZ9NDZ1UbZRz/aaKVQRGuBRsEdcLERGn/z9EqjKGLxvzPn11Krws/qwuxUmpuZStNTE42ydrEECBAgQIAAgVEREBqPykg5TwIECBAgUHOBYQTFnSQRPi0enW1kaDzIImY1n1aVn14TQ+NhVlfHzZ4IjyNEFiBXPt0dkAABAgQIECBwoIDQ2OQgQIAAAQIE+hYYdlDceeJTkxPpUSfmGlclGpXG8VpabvU9jt74iMDjL1tIDzy03CiSCI0fPLOStqp5KOBAWwFyo6adiyVAgAABAgRqLiA0rvkAOT0CBAgQIFA3gbXWZlpe3Ugraxvttgh1ej32kvn0jVPNai0gNC52BjYxNK7j50aAXOy8tjcCBAgQIECAQF4BoXFeMdsTIECAAIEGCtQ5KO4cjiYGfkfmplJUWas0LuaD2cQ5VMfQuHM0BcjFzG17IUCAAAECBAjkERAa59GyLQECBAgQaJDAqATFnUNSl8fsq5wmQuNiteseoBZ7tal9w2GU2roIkIueAfZHgAABAgQIENhfQGhsZhAgQIAAAQI7AqvrG+3WE6vrm7VrPdHLMD16cS59Z2ltJM+9l+vbb5sIjSNIO31uvd9deF+HQNMWwhu10Lhzss5MTaT5uek0NzOZZqcnzWMCBAgQIECAAIECBYTGBWLaFQECBAgQGEWBUQ+KO80vOzGXlpbX09r65igORV/nLDTui23fN01MpHT54nyjFlOcnppIi0dn00NnV4uDHMKeIvw+Mi9AHgK9QxIgQIAAAQJjKiA0HtOBdVkECBAgQOAwgXEKipseGs/PTqX5WZXGRXziR7nqtt/rjyr1o/PT6dTSWr+7qN37BMi1GxInRIAAAQIECIyggNB4BAfNKRMgQIAAgX4ExjUo7rQ4eWwmraxtppW1jX6IRvI9EfpFtbH2FIMPXxND43GvVBcgD/65sAcCBAgQIECgmQJC42aOu6smQIAAgYYINCEo7hzKE0dmUmtjM11YbVZofHxhZuTbC9ThIyk0rsMolHcOAuTybO2ZAAECBAgQGD8BofH4jakrIkCAAIGGC0SVbfwZ1cXsBhm+4wvT7bcvLbcG2c1IvTcqjYXGxQxZhIonj41+f988GtGaYnKiWZ+Z8BEg55kltiVAgAABAgSaKCA0buKou2YCBAgQGDuBLCheXttIW1tjd3k9X1ATAzChcc/To+uGTQyNm3ijZfdEiAUQj8xNp4W5qTQ7Pdl1ntiAAAECBAgQINAEAaFxE0bZNRIgQIDAWApsbm2l8ysb6dzyeqOD4s7BHff+rPtN5FEJOiPcTlsprbU2a/t5bGIA38SWLodNwAiQLz85nza3UpqZmqjtXHViBAgQIECAAIGyBYTGZQvbPwECBAgQKEhgc3MrraxvL/IWvYrjMfrzK620tl7fEK6gS+95NxH6RbXxqaW1nt8z6hvWOTRutwCYm0oLc9NpI1K4tJVmpibbPadjHtctQG5iaByLR8Z3SJP6gHf7zD/m5Hz69tnVFDfmVCB30/JzAgQIECBAYFwFhMbjOrKuiwABAgTGQqAzKI6QrfMVFYIRxEVw7LUt0MTQr26Lt0Wl5vzsVDtsi3NbXm21A8nt0DilrBXA/Ox2G4CVtQgsW7Wolm/i/LnkuJtPu78/H3/ZQnrgoeWL/rMWFv6WIUCAAAECBJomIDRu2oi7XgIECBCovcBhQXHnyetFuncop6cm0uLRZi1kVpfQOALXqCqem55Kq62NdlDcrQo++sdGwLwwO5XWNjbT+eXWUKuPs2s4fW699t8TRZ3gZSfm0tLyetexKup4dd9PL58nAXLdR9H5ESBAgAABAkUICI2LULQPAgQIECAwoEBrYzOttbbaFZfdgrbsUBG2RbVmkwKubsy9BD7d9jGKP4/H6b95eqXyUw/vmIfREiQqiWP+RkV83sUYI4Sbm4n9TLXbV0T1fGd1clUX1sTQ+NGLc+k7S2s7leBVWdf1OHHj6ZJjs+lbZ1Z7OkUBck9MNiJAgAABAgRGUEBoPIKD5pQJECBAYDwE+gmKO6+8iY/S9zLyj71kPn3jVPUBai/nVtY2VYfGC3OPtJ+IkDhC3qz9xKDXGCHcsfnpdnuL1mb08K6ufUUTF1LM+vcWNX6Djv+w39+ufJ+b6qsvugB52KPn+AQIECBAgECRAkLjIjXtiwABAgQIdBEYNCju3H3eirimDM5+/UjH/dqruOasCnd+ZiqtrPfWfmJQ9872Fctr5S+e18TQuIk3WQ6bl0XNAQHyoJ9+7ydAgAABAgSGLSA0HvYIOD4BAgQIjL1AkUHxbiyBz97pE5WTD55Zyd0iYZQnYlmhcVHtJwa17Vw8L2tfcW6l+MXzigoMB73eKt9f1typ8hqKPFYZveIFyEWOkH0RIECAAAECVQkIjauSdhwCBAgQaJRAmUFxJ2SExtHLNm8P2XEejCb2aC365kFn+4m11kZaulBc+4lB517WviL6KK9vbKbl1Y0UVchFfAYiNJ6emkxnLzRjIbywvHxxOP2wB50HZb3/5LGZdl/56KldxkuAXIaqfRIgQIAAAQJlCAiNy1C1TwIECBBopEBVQXEnbgSkp86tpdbGViPN97voy07MpaXl9Z4XFBwHuCJ6GmftJ2anp1IExRGa9boo47AMo33FkfmpNDc91Q6Oo7/yWmuz79OJ0Diqq5eWW33vY5Te2NSFIw8bo0uOz7ZvRMRcKvsVAfLC7HR7Dk9PTqTJyYmyD2n/BAgQIECAAIGeBYTGPVPZkAABAgQI7BWIoHg1qtJWWml9CMFtEwPSbvOwiSb9tuSI0DBbUDEWQruw2moHxaO2KFpn+4rJiYl24NdP+4omhsaXHp9N3zqz2u1j1ZifD+tJBQFyY6aYCyVAgAABAiMjIDQemaFyogQIECBQF4FhB8WdDieOzKQ4n7Iepa6LeZ7ziMfLV9Y2K6kUzHNeZW4bofG3z672HPbWuf3EoE6xQOTC7FTK2ldEa41oY9FL+4oy+tkOej1lvj+7YfDQWaFx5tzvDZgix0mAXKSmfREgQIAAAQL9CgiN+5XzPgIECBBolEA88r7eGl5F8UHYTQu5epl0TQzSewmNI0w9tjCdsvYTTQjWo33F8SPTKRbPixsr3dpXNO3zND87leZnJ9Ppc83o4dzL90fR/cF7OeZh2wiQBxX0fgIECBAgQKBfAaFxv3LeR4AAAQJjLxBBcdbbsq6P68fj9FEtKPR5ZDo2LfiLK4+WHKfPre2pNO5sP7G1tdVu2TCK7ScG/bLpbF8R+4rAPFpx7K4+jrmzuZXS+ZVm9DT2/XHxzKp7j2cB8qDfBN5PgAABAgQI5BEQGufRsi0BAgQIjL3AKATFnYPg8fK9UzLaEsR6Uk1ZzCwLjc+cf2RBxGg/EVWkUWEbi9pFi4a63vio+kslqo/DJlpYtDY32zbZ4nkRGm/3di5/EbSqr3u/4zWth3M386jGXzw6m0ahXUcWIEeleMxpi+h1G10/J0CAAAECBPIKCI3zitmeAAECBMZOYHU9Hlvf7oE7asFahByXHLOQVeekbGL1ZFQaR+Xs3EwESFPtHr5ZlfzYfWALuqAI3SJUz9pXRHXx1NREuxK7KaFxE6vyD5s+o/rd0Z7L05Pp6Nx0+ztAgFzQl4TdECBAgACBhgsIjRs+AVw+AQIEmioQQXGEaqvrmyMXFO8es7r14Bz2nIrq66g2PrW0NuxTKf34WfuJxSMz7bYKS8vrjWw/MSh0hG7H5qfTwtx0ijYeERrv175i0OPU7f1Nq6zu5h/fG/GZOnthdHs8C5C7jbKfEyBAgAABAr0KCI17lbIdAQIECIy8wDgFxZ2DEaHxN0+v7OnPOvID1ucFNKFlR7u9wtwj7Sci6Ip2HFEl69W/wMljM2lrM6WtlNrtK1ZbG+nCysZO+4r+91zPd8b1NqmyutsoxCKa8bTJuPS0FiB3G3E/J0CAAAECBA4TEBqbHwQIECAw1gLjGhR3DtqjF+fSqXOP9LMd6wHt4eJGqS9pD5ezs0lc17GF6X3bT0T4F9WxQuM8onu37QxROxfPizYWESTGQoK7F88b7IjDfXdcb9aaZ7hnUo+jj3OILkCuxxxzFgQIECBAYJQEhMajNFrOlQABAgR6EmhCUNwJEf1ss7YEPQGN+UZRdfuoE3Pt6utRf2XtJ6J1wsREVBPv335C+FfMSB8UvmftK6J9QdYvenltY+QDZN8dF8+b8OhcULKYWVW/vQiQ6zcmzogAAQIECNRRQGhcx1FxTgQIECCQW6BpQXEn0DhXx+WeCA+/YdT7PEf7ifnZ7UXt1lob6dxyK7U2omnC/i9zoN+ZcvH7eqnYnp2eTEfmp9Lc9FSK4DgW0FxrjWZbkAhJT59bG/m+7sWMfkqPOTmfvn12tVEeWYAc7Vjij0X0ippN9kOAAAECBEZfQGg8+mPoCggQINBYgQhr4s84LGY3yCDGYlbxip62XtsCj79sIT3w0PJIcURV8fEjj7SfiLkdizX28operK2NzXaLCq/+BXoJjbO9d7avmJyYaH8XjVr7iiaGpIfNjlG/2dT/zH/kndETXoBchKR9ECBAgACB0RcQGo/+GLoCAgQINEogC4rH4dHwogbuyNxUil/0T59bL2qXI7+fCMMePFP/xQF7bT/RbUDixkEs4CU07iZ1+M/7bdcQ/aYjaMvaVyxdaLXbWNS9//GofE4GG9Xe3h03AS5f3F5U1GtbQIBsJhAgQIAAgWYLCI2bPf6ungABAiMhICg+fJjiF/vjCzPpobOrIzGeVZxkLA74naX6Pna/u/3EoIvYRWi8uZXai7V59S/Qb2jcecRoXxEV49OTk7VvXzGKFfn9j+7h74wbOJcen03fOuN7dD8pAXJZM89+CRAgQIBAfQWExvUdG2dGgACBxgpsbm6llfXN9uPe8cfrcIGocrzkmLCjU6mI8K/oedfZfmK7KrjVc/uJbueiRUk3od5+XmSP3872FXH0lbVoH9KqVfWxdgyPzIu4kbMwN5VOLa31NlkavJUAucGD79IJECBAoFECQuNGDbeLJUCAQH0FIihubW6lCFq+dVqlV56RCrN4zPwbpzxWnbnVJTTO2k8cmZtO8f8vLa+ntfXNwhfaEhrn+cQcvG2RoXHnUaL6OELJaCUTbSuifcWwF8+L+fioE3PaMTw8UNr89PcZeswl8+11BeZnJi2i1x+hdxEgQIAAgdoKCI1rOzROjAABAuMvsLuiWPjZ/5hHxWD04qx7D9X+rzDfO2NBs6jsHFalelTiRQg1PzOVVtY32r2GIywu6xXH2g6ltacYxLis0Dg7p/iOm5nabl8R/zfaiUTgNowAWTuGi2eKGy/5Pzm7/85WgZzf0DsIECBAgECdBYTGdR4d50aAAIExFGhtRECy/Wj+fiGa8LO/QY8evqfOraXWxlZ/Oxizd504MpNirlW5MFyZ7Se6DY/QuJtQbz+Piv1vn10tvBJ8v6NH4HZsfrpdgby5tVV5+4poa7N4dFYv9IcHZxjfGb3NyvpudVhrJAFyfcfNmREgQIAAgV4FhMa9StmOAAECBPoW6BYUd+64Lm0F+r7YIb2R28XwVVUNRvC33XZgu/1EVI5GdXP0LK7y5dH6YrSrDI07zzhrX7EwO5XWNjbT+eXy21dEqHd0floP34cH4pLjs+0e48N6OqGYGVztXnr93hEgVzsujkaAAAECBIoSEBoXJWk/BAgQIHCRQJ6guPON0VYgKpCrrBAdh6HjdvEoRhg2OZFKa9dQdfuJbnO01/Cm236a/vNhhcaZe9yEiOA4FmTL2lecWyln8Txz5uLZ7mmN/J/+fm7OCZDzO3sHAQIECBAYloDQeFjyjkuAAIExFOg3KO6kiLAvKjbPXlgfQ6HyLqmfX97LO5vh77mMQCzmZczPqCyOSuJosRJViXXoI52F2KfP+dwMMvsiNI7e4HV4Ze0rYs7F4nnRozvmXFHzLT4j01OTvmsfHuxh3zCow5zLew6D3qzMAuS5mZiLE3kPb3sCBAgQIECgZAGhccnAdk+AAIFxFygiKO40il8ijy/M6LOZc+IIgC4GK+rR+93tJ5ZXW+0q+KrbT3SbDkLjbkK9/bxOofFF34vTk+nI/FSam55Ky2vbLRQGXTyv7Gr83sTrs9XjL1tIDzy0XJ8TGoEzKbI6O77DIjyOSnsB8ggMvlMkQIAAgUYICI0bMcwukgABAsUKRFC8ur7ZDi/2W8xukKMdtrDOIPsd9/cK2/eGxoPcfMhC2AjpVlsb7aC46Lle5JwsKiQv8pxGcV+xEOc3TtWj0ng/v7iJEf2z52cn0/TkZLvyuN/2FfF0QrTejj7cTX/FUwSPOjFXmyrzURmPshauFSCPygxwngQIECAw7gJC43EfYddHgACBggSyoPjCSiutb5S7yJeKr/yDJmy/2Cw8Fo/O5qpYj+AoKrYX5qZr136i24xw06CbUG8/H6XvnpjjUZWZta84v7KRVtd7b5cyaGuB3kRHYyvfn/nHqaqgXYCcf2y8gwABAgQIFCUgNC5K0n4IECAwhgJVBsWdfEU+8jqGw7LvJUUFYjxaX+cqySrHotdAY3f7iXjsPyov69Z+opud0LibUG8/H6XQuPOKZqcn0/Ej0+3q417bVwiNHxGMPuVRva0neG+fk9gqzGLBxlNLa72/acAtBcgDAno7AQIECBDIKSA0zglmcwIECIy7QPTJXG4/ir9RekXxQZaXHJ9tn0MEeF69C9T90frer6SYLQ/zyNpPzM9MpZX1+ref6CYSIfnJY/kqq7vts4k/r2tP417HorN9RbwnWqoc1L4ivmfjBkmd2670et2DbqcnfH7BYS9aK0DOP2beQYAAAQIE8goIjfOK2Z4AAQJjKJAFxRHS1qHCMnptxmtpWa/NPNNNhfbFWrurRiNYjeq4CDtinkc/2JjzW+V2W8kzhH1vKzTum+6iN456aNx5MVF9HPM9AtH1jc20dKF10eJ5l52YS2fOr6VWye2GihmZcveiv3N+3xNHZtrfo3XoiT0zNZHm56bT3MxkinnvRYAAAQIECBQjIDQuxtFeCBAgMHICdQuKOwGH8djryA3gPiccIdDS8rrKwYdtIgB88MzKw8HZdIpgda210Q7P6nBzpMg512s7jiKPOW77iirdyxfnx24xtLiumant9hXxfyPki4VMLzk2m759dnXsPgv9zEutOvKr1fWJoHZv+nkBcv4R9Q4CBAgQILBXQGhsVhAgQKBBArFIUrR9iMCgzqGZRYn6m5SCj0fc4tHlS4/Ntv/DOLSf6DYjhMbdhLr/vAmGESAfm59u30iZmZ5MSxfWD2xf0V1sfLbQqiP/WMZNubrfdBAg5x9X7yBAgAABAp0CQmPzgQABAmMuMCpB8e5hGNUFqYY5nZre1iMCgmxBuLgpEv/77IX1xvTGHqfWCsP4HDUhNO50jZ7fF1Y30sLsVFrb2Eznly9uXzGMMRjWMUchAB2WzX7HHcWFVwXIdZpBzoUAAQIERkVAaDwqI+U8CRAgkENgVIPizkvUnzfHgD+8aVMXc1qYi76te9tPNK1dh9A4/2em8x0RKl16fDZ968zqYDsakXdnC0VGABjBcXyOsvYVESbX+WmUoonD4punV8aiv3nRNvvtb9SfBhIgVzFLHIMAAQIExkFAaDwOo+gaCBAgkFIah6C4cyCbFvgVMYmjyjYWeTu1tFbE7mq9j7jWCMlnp6fafYpX1jb3VBRHu479/nutL2yAk1OdPwBeSu3K9JPHZtNDZ8c/ND6of3PWviK+R2LxvPj8xIKR47BY5EGzYxSrZgeb6YO/u/3dOzOZTp9bH3xnQ96DAHnIA+DwBAgQIFBrAaFxrYfHyREgQOBwgXELijuvtk4rs4/KPIzqr8Wj4xt6dbaf2NraavdiXTukP3fModZGhF4bozKEA52n0HggvkaFxr204pidnkxH5qfS3PRUWl6LGzMbKRZQHbdXLxbjds2DXs+4tkKKGwjx1EpU3cf89yJAgAABAk0XEBo3fQa4fgIERk5gnIPizsGIhZrmZ8ejkqmqSTauFXMHtZ/o5jquwcZB1521G+jm4uf7C4z7TZfOq85zrVmQFt/HWfuKuGEzLtXHTXpCo6jPfhMWXRUgFzVb7IcAAQIERllAaDzKo+fcCRBojEBUeMWfqPYal1/Uuw1etqBZEx4V72aR5+fjEhxGqHVsYbrdfiIek19e3f4M5HnFI/aTEyktLbfyvG1kt9XTeLCha9J3Tr9BaXwuo/9x1r7i/MpGuzXSKP+9NE6tFgb7BPT+7qatOSBA7n1u2JIAAQIExktAaDxe4+lqCBAYI4EmBsWdwzeuVbNlT9H4Zf47S2sjuYhV3vYT3SybFgYJjbvNiMN/3m+QOthRh/PuIp7kiMf3jx+ZTtOTkyPdvqJpN5eKmHFNXjhQgFzEDLIPAgQIEBgVAaHxqIyU8yRAYOwFNje32v0im1ZRfNjANvkX034n/CguIBjtJyLEikffY1G7c8ut1NrY6pdg531NCgHjoiM0/vbZ1ZG8YTDwYBewg2xxxXFY3KsbR5E3VDrbV8Rxo8/4KLWvaFrv825zo9vP9YB+REiA3G22+DkBAgQIjLqA0HjUR9D5EyAw0gIRFK+sbwfFeR+9H+kL7/HkRzEA7fHSStssek2urG3PqTq/drefaN8sKXjBuia1G4ixHuUq8zrM1SaFxmVV10b1cdwAilA62sosXWjVfvG8UfnOrMNnJM4hxjdu9J1aWqvLKdXiPATItRgGJ0GAAAECBQsIjQsGtTsCBAh0ExAUdxN65OdRAbaxuZXOrzSjJ23vMgdvWefF330L8PkAACAASURBVLL2E8fmp9PExERaWl5vVyXGGJfxyrPYVxnHr3qfcZPl9LnRbE1StdV+xyuiZUMdrqOXc6jieyJrXxFPEFx4uCd5PE1Tt1d8bs6cXyvk6Ya6XVsZ5xM3HOK7/OyF9TJ2Pxb7FCCPxTC6CAIECBBIKQmNTQMCBAhUINDa2ExrrS0VxTmt/XKaEyyl9gJVdfuFPqtMK7r9RDedpj1GLTTuNiMO/3mRLRsGO5Py311lS4YI0OJGUXwPbG7F34Ob6cJqqzaL52nrkm++uZmbz0uAnM/L1gQIECBQLwGhcb3Gw9kQIDBGAllQHL8cRzWlV36BprUXyC+09x116ePb2X4iKonjc1B0+4levKIv9jdOrfSy6chvo53LYEPYpNA4WjLE30tRAVzlK2tfsTA7lVqb9Whf8fjLFtIDDy1XyTDSx7rk+Gz7u7zuLZDqiCxAruOoOCcCBAgQOExAaGx+ECBAoEABQXGBmPE4zMT24l5NCf2K0BtmS4aq20/04tWkQEho3MuMOHibCI1jDi8tj387nAiNIzAe1g3N+G6P4Dh648YTCNGCaHlto/IWEXEely/Op2+ebsaNpcE+IdvvVpldhOL2v2+OzE23PwNxM8WLAAECBAjUUUBoXMdRcU4ECIyUgKC43OGKStH4hX6rnLa35Z78EPY+jBAk6wU7Oz2V1lobQw2jdpNHwPHgmWbMn6gAjPBtWEHgEKZ7oYdsUmhcpxsMWfuKaK0Ti+dV2b4ibhJcenw2fevMaqFzaVx35kZuOSMrQC7H1V4JECBAYHABofHghvZAgEADBbKgeHIipdX1TQu1lTgH6hRulHiZhe66iuraCFuOH5lOERQPs/1EN7hHL86l7yw1Y3G4YVePdhuLuv+8SaFxXT8Xne0rovI4WiCUuXhe1m/91NJa3adnLc5PyF7uMGSLRy6vbqYj81NpenIiTcY/NL0IECBAgMCQBITGQ4J3WAIERk9gv4piv3CWP476J+Y3LisQ2t1+IqpaI9SJ0LiurybddIjQOKo09RrtbzYeX5huv7EJ7Snq3mIgq7ycn53caV9xbqX4xfOa1Me6v0/Fxe/iVYTiwfvYvZDtdhuXaQFyuez2ToAAAQKHCAiNTQ8CBAgcIhBBcVQSR8XTfo98R4gWodSD+iGWNo/il6gotGlCkFMUYtFBaSyuF2HB/MxUWlmvV/uJbmZFW3Q73jB/PqzFzYZ5zUUeu2mh8aj08Y0+7dH/OGtfEYuwxd/JRbQsatKYF/FZ8fdxEYoH7+Ow73ABcrn29k6AAAEC+wsIjc0MAgQI7BLIguILK620vtG9gvLyk/PpobOrta62HOVBVs2df/SKqDgdlfYT3XSKsOh2jLr8/MSRmRTfX7HAWVGvT3z8o+nP7rk73X/v19q7fNJTrk1Pfuq16VnXP6eoQ9RmPxEgRtF8VNCP+6uKFjZlGMbj+0cXptPs1GQ7OB60fYUbLflGiVc+r7xb9/oEgAA5r6ztCRAgQKBfAaFxv3LeR4DAWAnkDYo7L177hHKnQlSZXXLMQkV5lPsNv7L2E7Gie/z/o9B+optLGUFqt2MO6+cbq+fS3Xf/SXrUY65IV1519UCncd+9X0t/68YfTfffd++++3nm9c9Ov/rrt6fFxZMDHadOb47PzXZ/7uJC9zpdX+e5RDg1KpXG+xl2tq+YnJhoh8f9tK/w93e+GRqtj06dW0utHm6o59uzrftdZFCAbO4QIECAQJkCQuMyde2bAIFaC8TiOvGY69r6Rk8VxQddzO4edLW+6BE9uVGtihsWd945OcrtJ7oZN+Hx8zs++P70z976lj0BbwS7P/3GW3NXBXcLjDPzJz/l2vThOz9R++D4M3f9YfrkwxXTZ86cSU95yrXpiquuTidOLLbD9XCK8LspoXHcEHrUibmRDo07P/fZ4nnRQmd9YzMtXYinhDZ7al9RVv/3bt9Lo/rzx16yfbOhiNYgo2pQ1nnHU1VH56fSQ2f7X5QxAuSZqMafm05zM5MW0StrsOyXAAECDRIQGjdosF0qAQKpvQp7BMVFLt4VgdvxhZl2iwqvcgRUN+VzjTkZwfGppYN/+YzgKLaJX1S3qyu3F7UbtzBg3HtwRlj89re+5dAJ8o53vie98MU39TyJfuQHrktfvOfunrZ/wYtuSr9823t62nYYG73p1jek9737XYceOsLjCNdf/9O3FN7eYxjX3O2Y8dm/9Ph4Pr0RAfLxI9PtxfOiYrxb+4qouH7wjBC025yJn4/bzYZerrnKbfLe7O12bgLkbkJ+ToAAAQK9CAiNe1GyDQECIy1QRlDcCRL/MH/cpQvpgYeWR9qpzifvEeJ8oxMtPRaPzu65kRFzNULirP3E8mqrHaxEaDyur6g+jBD99Ln1sbvEXgLj7KKjlcQNz31eV4Ooyn3BjTd03a5zg8/98ZcGboeR64A9bHzmzOl0y82vSp/89x/tYevtTX7hF96UbnnDz6b/76t/nk4sLta+grrnC9u1YRNudMZ33bH56fZnP14ra9Hru7XnplhUzn7j1Eq/lI16X9ZP+rCbkY0CKfhiy/x3jgC54MGyOwIECDRIQGjcoMF2qQSaJLC6vtGuKF5d36wkEItK2DMX1tPa+maTmCu71ia0GCgSM35BvHzxkZ6lWfuJCIsjOImguClztZeq6yLtq9pXhKJPesLjez7cFVdelT7/hS933f5lL/nJXEFr7PAVr3pNevNb3tZ131VukCdQ7zyvkydPptOnT7f/0xVXbreu+KlX3dxe/G9cXnHjaH52PG+k7DdGWfuKhdmp1Nrcbl8RN5NVzuab0XEDbnpqMp29MH434PJJlLN1Va0/BMjljJ+9EiBAYFwFhMbjOrKui0ADBaoOii8KGo7NpPXWVnvhMK/iBSLkWJibOrTdQvFHHe09Rh/oc8utsW8/0W2UxrWqsp9Q9B3vfHd64YtfcihZLH732bs+3Y31op+/8EU3pXfUqEVFBOrXPe2adPbsmVzXcdDG0b7iI3d+cmyC43Guvj9swCMsm5vZ7hsb7StW1jfS1OSk1lI9fkpiUdF4KsW/c3oEy7HZsG5gCJBzDJJNCRAg0FABoXFDB95lExgXgWEGxZ2GEWhGsOmxzXJmVrRbuOTYePbgLFKss/1ELIITVcVRVTfO7Se6+R3UqqPb++r+87LC3bL2W6XnHR/8QLrlta8s9JDjFBxHaBwh1dJyc29yxnfl4pGZdGR+OsW/Iw5qX1HoJBrxnZXZPmHEaQY+/fhMzg3535BZgBwV+fFncnJi4OuyAwIECBAYfQGh8eiPoSsg0DiBugTFnfBCzfKnYVTO6hu9v3PWfmJ+ZqpdPRftJ2JxxqVlLVOGVcFV9ieirHC3n/3WrT1FGaFxjGevLT7KHvtB96/dz7ZgtvBYLJbXfppldiqttjbShZWNdvsKr4sFYtHAb59dbfRNyLLmRB2ruOPfFQLkskbcfgkQIDA6AkLj0RkrZ0qg0QJ1DIp3D0hV/eiaOhGib/Spc2uptTG+i7blGdsIQ6M6aWFuuv1LfFQVR5/irKpYVdgjmuO42FU/4W5Uy77i1Te3exAvLp7cd7rd8cH3p1te+6o8UzF9+M5PpGdd/5xc7ylz47JC4zjnul1rP44RGm9/Z2z08/axec/uoC4qLaPve/R7jvYV0Ybh3MrexfPGBiDnhYzj92hOgtI2v+zE7E6v7dIOMsCOBcgD4HkrAQIERlxAaDziA+j0CYyzQFT/xJ+qFrMb1PKyE3MqOwdFPOT9fFPqbD8RofFaa+PA9hMRDG1uJf0nU0rjWKX+uptfmT78oQ/09YmLitno0XvlVVfv+/5nPO2J6f777u1p37FQXOyrTq9PfPyj6eUv/clSTqluVdX9XOTJYzPtG0xND40Pc8huykU18vrGZuPbV4zrExv9fH7KeM8oFR0IkMuYAfZJgACB+goIjes7Ns6MQCMFsqB4eW0jbY1YQalHfsudsnV8fLPcK35k7/u1n4jQ57BX9ui1le5TiseqHzyzUuvvlPvu/VqKxe3+7J670xfvubs9tFdceXV68lOuTa949Wv2VPLG9tc9/Zq+p+BhwfGf/endKSqZuy0k1y187vvkCnhjnuA7z+HqtuhfnnPPto2wNHr4xt+3TX7Fjcgz57s/vTI7PZmOLkyn2anJFP82Cbemta+I9h1RgX363HqTp0wp1x7tzS47Ppe+eXqllP2XuVMBcpm69k2AAIF6CAiN6zEOzoJAowVGOSjuHLj4x3P0kX3o7Gqjx7Osi29aCBqVXfGLelz31tZW+zHpzvYT3ZzbPTrnLM4YTtHa5DtLa7XtxRkBcIS0h1X3/vQbb02vf+OtFw37m259Q3rfu9/VbSoc+PMnPeXa9Du//7l9fx7B8cte+sIDz6mfwDjm9HaFfPn9YiOAf/tb39K3zUFvHIfQOFrXROuFbjeeCser2Q7z9ujtbF8xOTHRDo+b0r6iaX//VjlVo81U/Ptx1AN5AXKVs8axCBAgUJ2A0Lg6a0ciQOBhgc3NrbSyvpnW1jfaVTujVlF80EDGL5TxS+g3To1etcgoTM6mhPIR9EZfzW7tJ7qNWVO8ujnEz+vc2qSXwDi7xv2C40HD0cN69J45czpFf+DP3vXpdgX0icXFduXzs65/dnrhi1/SC317m6xSfnZ6Km1sblbWL3aQFh4HXdwv/tJb00+9+uaer72OG8bn4fS5+t5EqcpskB69UX08NzPZvqkX7SuWLrTa/3dc/j2zewy0NClvVo7jU1QC5PLmiz0TIECgagGhcdXijkegoQJZUJxVFY8rg8XayhvZcQ7ld7efKOLR8fC6fHF+JB95LXoW1bmyMu+Cdp/74y/t6UX83l+5rV1V262dxH6uZfbojRsg8fRFtlDj8sMLr8XcPDY/3b45EjcOo+o1W8Cx6LEvMjiOhQQ/94UvHbiIYJ5zj5sFEcIftCBhnn3l3TZvhW3e/Y/C9kV+P0aAfPzIdPtmSPSJHsf2Ff5tU96sHndbAXJ5c8eeCRAgUIWA0LgKZccg0GCB7BeopvROjHAqrjULRxo89KVc+igtFtMNICqJs2rgftpPdNt//HwcF4Dr5bp3b1OHHq6fuesP0yc//tHtit0TJ9OVV13VPs287SVe8KKb0i/f9p59GfIG0LGTotstxLyO6stoj3LYQo1x7Oxx/9g+KpCjWrOM1hVh366W/tO709mzp9N9996b7r/va23DaNGR9ZDuNrcGrTK+44PvT+9997suOl4E0c+8/jnt1iNPfuq13U6hkJ+PQo/vQi70kJ3EPL30+Gz61pni2kllN0Piez1ecfPvwmprLKqPx+nv3rLnVp79ZzfDo5/xuFapd3oIkPPMDtsSIECgHgJC43qMg7MgMJYCUV3ctFYN+v6VO5Xr3Gag1yvf3X7i3HIrtTbKWfVRReH2qMTjv62NCHCGs/DXoL2HO+fWYX2IhxUaR9VshOFf/uKfpif9d09IT3zSU9Nll1+Rjh4/0evHImXVmsMI23qpRt6vNUjPF5dSe5HDw3osR3j8kTs/WUhw3K2K2c2k7ZYp8ff1qaW1PMPY87Yxn+PGSfSrzdpXlHFDpOcTGmDDIquyBziNsXxrzJPFozOF3rwYFSgB8qiMlPMkQKDpAkLjps8A10+gZIFvn11t1GI78Y/gxSPN/AWg5Km0E/7FY+zxOPsovTp7ukaAEJXoVVTfj0PIXsQ4H1+Ybu9mabnaeRM9gV9w4w3tQLWo1xVXXp0+/4Uv7bu7XsLP3W8cpD1FXN+bbn1j+vCHPrDnfCIEjaA1b//fLGxbmJ1qV2lWtdDYQcF+LPgXVcB5ejjvxugWGGfbDxIcRxXzHR/6wMPV1Gfau4y58szrn90+/yuvunrntAbp5VvUPB72fqpafCwC17mZWNB0aqeX92qs6VDBYpBFGU9PTbSDzYfOlhOwF3Weo7gfhQbboyZAHsXZ65wJEGiKgNC4KSPtOgkMSeDM+fWRC/gGpYoqrq9/Z7kRjxoOapX3/aP0C1YV7Se6+UW7lKoC6m7nMsyfx7yZnKg+NC6ywjjzOyw0jjYMEVLneR22EN5B+4m5feH82fQTz/2RdM+fHh6I91uhmz3qH2O32tpM55fLaV3ReY1zaSV96q7/kO6/9952v+Err7x64MrfqPq97unX9Dwkh1WSH7STbqF0ZxgdY/eoE3ON73U+jO+Ezl7erc3NkWlfUVXA3vOHZIw2tMDg3sGMADlutMSNw7hh4UWAAAECwxUQGg/X39EJjL3A6vpG46pTVHeWN62zHsAPnS2uD2XRZxvtJ+Kx5FgUKXq6ltl+otu5R4Xt5lZq3I2b3S7DCD2iCve6p13T1+J0h41rVI5GG4ODXn/v5S9Od955Z7ep0f553irjCBxjwa/Z6an0wz/0g+kP/uAPejrOoL2At1u6TLWPVVbf49h3GRW4/dw4yBPkdwuMswHKguNrv/d7C+/l29MkqNlGw25Z01lRv7ZRzU2RfocgrEbxCZ9+r7fK92khdbi2ALnK2ehYBAgQ2F9AaGxmECBQqkAT+xr7Bau8KRWVWlElV+TiRUWcbVTDHFvYDtOi/URdFkMcRjVdEZ5F76Ps/qX7ne97f+W29Is/98aiLyW9453vPrRVwvzkSnrOc36ga0uMJz/l2hTh5OLiya7nGDdBsir/peX19Lu/96lcFc3R4uHzX/hy1+N02yDrexw3ZKJFTdGtK8ro9fuMp12zs+het+vLft5rdXbcmHjSEx7f627brSp+62O/nRaPzqY633jr+YIG2LAOi2PG6WeLQc7PTu60r4je6xHS1uXliZVyRiJbBK9pa3/0q5m1sIi/i7wIECBAoDoBoXF11o5EoLECTetrHAFLVMaVtcBOYyfSwxdel1XcO9tPxKlFmLa2vlmrX/bNxe1JM4wK9V4rQPN8nrtVGce+Ivj80p9/Pb38pT+ZPnvXp/fdfS8VxhFoxPw5vjDTvhESIW3M73j1s+Bet7A7j0PnY/7Laxvt3sdFLCZZRqVxmaFxP3Ps3338d9IP/fUfSKfPrechH7ttH704l06dWytk3hSFE3+nREV9hGLbNx9j8c7W0FtdqYYtaoQv3k92E0yv6N5947MR/bW9CBAgQKA6AaFxddaORKCxArH41NKF5vyCGr/4RYuKB0+vNHbMy7zwYbf/qFP7iW7OwwhLu53TMH4en8mTx6qtruwn0DvMJqp1oy1F54Jm+23fGXz+2Z/enaLP8Rfvubvdo/eZ1z8nRYXxYfvIWlBENW8EV9EOYnfVY5lBaJ75kVVpRtC2ubU1cOuKCMe+WfD3dplW/ez7537+F9I/vPXnGx8a1z0IjUDxaDy9MjWZ4sZIPL0yrMXzyqjAz/M5H9dtR2mNhrqMwSXHZttFGV4ECBAgUJ2A0Lg6a0ci0FiBJvY1vvzkfPvx3zo9YjouE3AYj8p2tp+IMY3qr1hgru4vi15tj1AZDtEa4M/uuTstnjiZrrjqqj1tHu744PvTLa99VSFT5AUvuim9/o23dg2M42D9Bp9xg6Hd+3l6qmvVfD9hZa8tF/oFy6r2JicmUjze30+FZr92h53zy17yk+mT//6juS6rl4ry2GE/4xCh8d//hz+fzjboRu5++KMShHa2r5ienGzP66Lbshw2Ocv47sz1YRjjjYfxb5lR54ybopOxqq0XAQIECFQmIDSujNqBCDRb4IGHlhsF4JeB8oY7FneLV1Swl/nK2k8cm59OExMTXYO0Ms9lkH2PSjgyyDX28t6iWg9EGBxVxPffd+9Fh42gL4LRZ13/nPZ/v+/er6Xrnn5NL6e2s020jfjR5z4vRYXw2bNn2lXB3SqDdx8gb/AZVVvRgiLPzZAf+YHr2tXLeV5lh8bZuXQuMJY3YDvMLrtJEMe58sqrewrwY9tbbn5luuNDH8hD1e49fNhih9nO+gmNf+EX3pR+5u/fWvr3Z64LrnjjUQ1CY27PzUzutK84v7KR4qb8Vontj7U4Km9yxt9JsT6D4oLejGemJtKjT873trGtCBAgQKAwAaFxYZR2RIDAYQJN62vsscPyPg9l/xKb7T8ez19rRcXixk4v1/Kuqrw9RxD24JmVUoOF8s6+uD0XEZ730nLiHe98T3rhi29qn/jrbn5l+nCPgWGv7Se6ifTy2H3WgiKqimOO79eC4rDj5LmubD+x6F5noN4OX6+6utvl9P3zrO9xfBevtjbT+eXWoY/3HxQkRvgf4757HE+cWGwH/N0qwMsMjfsZh3/29nekl7/yNe0e1U19xZMj8Zh73RZUzTMenYtCxt9RZbWv8G+ZPKPS+7bxfRN9tS2C17uZfsa9W9mSAAECRQoIjYvUtC8CBA4UiF9Qz5xvTl9jvWTL+zCU8Qt/Z4iWp+KyvKssbs/D7gFd3JUMtqdBw/NeAuPsDLNF36I69QU33tBuY9Ht1Rmqdtv2sJ9HEPGdpbV9q9c6W1DEd3IETf1UueWtoo5q6V/99dvb4esnP/7RdhV1vCJ4ffJTr72oQnuQaz/ovXEj6Oj8dh/MqM6M69792i80juuMRf92V5V3vrdb2N9Pm5Jeq7KjX3XMr15f4f2lr/zndOToifbNsKa+Yj7Mz06ORV/n7OZIfLbjFYtVFtm+4uSxmfY+mzxfyviclH3zu4xzHvY+Lz0+216c1YsAAQIEqhUQGlfr7WgEGivQtL7G8YtchFSqSMqZ8kVUje5uPzFIiFbOVRazV61Sth0PC1O7SUf4+6QnPL7bZjs/jyDx81/4cvt/x3tf/tKfTJ+969P7vj+2/bVfv6MdnhbxipsEp89dHBpHC4pos7K5lQrrx91riB5B5StefXN636/cthMW73edvQalgxhli4vNTU+2K207w7X4PohQIqs+7SUwzs7lsOA49vM3fuC6Q6999zX99qc+1/N8iFD7oLm1e7+/+EtvTW/4mVvSytrmvsH5ILaj9N7o3T09NTl2fZ2z1ixxfdkiloMunhffm6fOraXWRok9MEZp8hR0rieObLcEanLFf15K/YzzitmeAAECxQgIjYtxtBcCBHoQ+Pp3lhv1iLxftnqYFH1uMohtVmU2PzOVVtZHv/1EN0K/nG4LDVJx3WtA2jkWWbVx9t+iKjSqbO+799509uzpdMWVV6dnXf/s9Mzrn1Nom4YsNI7jblfYTpfWZqWbS4SpNzz3J9L73n1bt2na/nkVwXEcJ6vOPDI3nZbXtiuPI8A5eWy2vYBpvN506xvS+979rp7OOzbaPd6db+zm1LltBLs/9eqbez5ur9XsmW3cRIqgKqpHm/qKvvhxA2VcA7uY33Mz29X10WYprnN1ffPQ9iwHzYUI6r55Wnujoj8rl52YbbcFGjTUL/q86rq/qKR/1Im5up6e8yJAgMBYCwiNx3p4XRyBegk0ra9xPNa53lJJUsYszFs9O87tJ7r5RmgYi42XvXBgt/MY9s8HCcvyVHNm1/nCF92U3nHbeyq/7AiN4xVzvp9+xZ0nHEF3VLHGwnyLi4vpxOJ2H9+sN3FsG9u871felT571x/uVNM+6eEF/KLfb7f2DruBPvfHXyo0RD9sACJci+A4KjPjFUFihMYRxF73tGtyVQd3Vpfvd8xeguN+Q/M43zfd+sZ9+2fHecU4vPDFL2mfVsyPM+ebXTnapJYLnTdIWptRYR6tJlo93cD3xFR5X9/C+Hy2+hnn87I1AQIEihQQGhepaV8ECBwq0LS+xvFIeKx0fvpcc3o5V/URiEqxeB0WhO5uP7G82mr3Zeynh2tV11XGcfRO3FaNoKjfx/JHITSO75sIQOM7Z+nC+kA3CbpVrx7UjiFaMXQubpe3526MU7/B6aCfnfCLxdHWW5vpd373U+nHb/jh3LvsFni/91duS29/61v2hNG7g93cB374DTFu0T/7/nvvbQf8V1559Z42F4O0aen3vOr2vkFuINXtWvKcT9a+YmF2Kq1tdF8csoz1A/Kc77hue9Cim+N6vUVc16MW51LMXy8CBAgQqF5AaFy9uSMSaKxAPIb37TPbj/424eUXrvJG+bAgNFvsqyntJ7opW5RxWyjadLQ2+lvQqa6hcXZj5PjCzE4LiqjIGqT9QK+9fLstABfmt9z8ynTHhz7QbYpe9PNnXv/s9JE7P5nrPUVsnH1Oogr3P37+rlJC4+w8w/i++77W/p8R7HYG7UVcy2H7GHRByLLPr4r9Nz04zyrsYzHArH3FfjdUowI/PhdufBc7K7nm88wq3ifjkSkvAgQIEKhcQGhcObkDEmi2QNP6GnsEsZz5HoH84tFH+o/u134i+pRuWbun3aagc4Gvckak/nvtpTr9oKt43c2v3PfR/8OuOm9v2jyC2XyPwCdb8CqroI+K6giA+u1Zmycg79aSYdRC4wjcTy2ttVtuvODGG/IMSXvbbpXGuXdYwhvi76SmL9Dq7+VHJlZ8l0SIGXM/vks621foh1/CB/DhG5gWwevdVj/j3q1sSYAAgTIEhMZlqNonAQIHCnxnaa1Rq7YPsviWaXSwQFZ5cubCevuR/PjFN0LiqLBsWvuJXubJ4y9bSA88tNzLpkPf5o4Pvr/9iH0sGBd9dKM/bvTQffJTrx3o3Abp7RyVodc9/Zqej3/ixGL63Be+lBYXT/b8nl42zKphY74vLa+35/zuGyODhMb9hKUfvvMTF/U47ryOUQuNIzyLqspeq607rzXG/Et//vVehnGo2wiNU2Kw/xSMx/+PLkyn2anJ9gKR7VY3y61G/Zutig/nIAv5VnF+dTvG8SMzKbvpW7dzcz4ECBBogoDQuAmj7BoJ1EigaX2NB6lurNGw1epUsvYTERbHgj6DVFXW6sJKPJlReCQ9Flt72UtfmO6/7959JQbtdTvoI8G9LGSWnfg73vme9MIX31TYiEa/3WhBkVWnRVh80GuQRb7edOsb0vve/a5c5/2jP/a89Gvvv33f98QNgFte+6pc+xvWuGOOSQAAIABJREFUAoLZ90r2KH7e6vJB52cupD43jpttly/Op2+eXulzD6P/Nv1ku49h1r4i+/dL/Lvt3Epvi+d133uzt8hueMdn0JNQvc0F/Yx7c7IVAQIEyhIQGpcla78ECOwr0LS+xtF7NyocHzrbnF7OZUz9+EU/HMMzgrMIiyM0jmrLfh/DL+M867rPqHiPXq2tjXr264jAONoinD175lDCF7zopvTLt72nL+YIBbP2A33tIKXUS3BcVHjY2XJlrbWRli70VkU/SO/mMiqDn/G0Jx54I2C/cTiscrnfcevlffHdEj1es9A4T7XxU556bbrjtz5ReGV5L+edZxuBaWr36B30eyCP+ShvG0+oxDoUUXGcta9YXt1oVyELPPsbWWtd5HOLkP1xly7ke5OtCRAgQKBQAaFxoZx2RoBALwLfPLXSmBYCWVVJ03tI9jIvdm8TdhHkHNR+Qr/F3lUvOT470OJovR8p/5ZnzpxO1z3tmq6BcbbnfnsFF7Ug4Ht/5bZ2Ne79Dy9klp1XtNF4/RtvTTc893n5ETrekVW8zk5P7dwUydNyJaoDt2+sHFyNfNAJlhEa9xK0Z+fzile9Jr35LW8byK/fN+9Xid5LcBx9nf+f3/1U+q7vurod7MeN0bq+IjQ+eeyRXvB1Pc8yz2vQJw7KPLc67Xu/GwzRvuL4ken24nnx/RJPPNR5vtfJMzuXCN/D9uyF9TqeXu3OST/j2g2JEyJAoIECQuMGDrpLJjBsgab1Nda/Lt+M67X9hF++enetc8CeJ1SMK+62+NpBKkUHZhEo3vdwcPzkp1w7cJVpZwuKqKSPir5+XoOExkW3p8jOv5cxjjYX77jt3QM79mMW7zkoTIxxjvP/5Mc/etGNjehh/KPPfV5681ve2j7nLFCbmpxMy6v1fJxflW1qV8xOTqR2r16vgwXihm18J8XCkLtfWfuKqMyfnNheT0D7it5m0yDtg3o7wnhttXh0pv2Z9SJAgACB4QkIjYdn78gEGisQFSqnz+39RWRcQaLKMwKgw/qQjuu193pd2QruC3NZlWSr3XbisArLoipHez3HUd6uzkHJNX/5cT1XGWdj8Ku/fnvuit46Pprf2XYlWlCcW24N3EJkkD7q0Sbkb/zgdbmmeq+V31Gh/fa3vmXPWMdNgBe++CXtKu1hviI03l5g8OAwMXzOnD2drrzy6nTlVVfve7rZmC7MTu30XM9TKV6mwe4WHGUeq677HqR9S12vqYzz6vWmbNws2X4iaCqtb2zWvtq+DKs8+4z1Bb59drUxT9vlsdlvW/2MBxX0fgIECAwuIDQe3NAeCBDIKdC0vsa9/vKVk3HkN9/dfiJP39a4eK0/ep8CdQ6L/tKjjvR+IQ9v2e9Cc4+9ZD7VoVVM9LU8tjCdogVF3EyKhaaKChYHCY2DN3pLf/auT/c0JhH4/vbvfy5XdXBU7sb+TywutsPXJz/12p6OVfZGvYTGec4hvp+OzU/v9IKtQ+sKrRlSikrPlbVNN3G7TOa8FbEx3+dmYg2HKe0rDrD1b5Y836Db/8bTzzifma0JECBQhoDQuAxV+yRAoKtAk/oaq4i9eDpk7SfmZ6bSyvpGuzdiv4vZRQhoFfKuH7f24k/HF2ZquSBjlaFxLOz0wEPL3cFK2iIe9856dMcijv22oDjs9AYNP3vp4xvHj/YMERgfVHFbEmFpux3U7bATy1pXxDZZL9hhLCRW5jWWNjAF77jui4IWfLl9726QtlrZDZP4rmttRkC/2a66H8ac7xughDdm3wMPnW3Ok3aDMMb8iZsXXgQIECAwXAGh8XD9HZ1AYwWiPUU/CzWNKtiww6phu3W2n9ja2mr3P+zWfqKXc44AIMK3fkPnXo4xDtuE/6XHZ9O3zqzW7nKe8bQnpvvvuzfXefVbaRyPBj94ZqXS8CLss9A+qukHuUnSC1IRwWC34DgqjD9y5yfHJjAO1ypauERodGR+KsUNs6gur7oPbJ4q9Ds++P70Z/fc3f4TFeFXXHV1eub1z07Puv45vUzDXNvEYphxnPvvvbddgR49wsu6GaE9QG9DU9QN2ax9RbRriQC5DhX3vQkUv5WnzvKZ6mecz8vWBAgQKEtAaFyWrP0SIHCoQNP6Gjc13OysrMzbfqKXj1CdF3jr5fyr3KauNy5ed/Mr04c/9IFcFF/8Lw/kaomQ7Tyq52IhzqJaQRx20hEWHz+y3YKijLl/0LEjNJ6emkxnL6znMt29cQR5d3zwA+mL99yd7rnn7rS4uJiuuPLq9Kzrn93uQTxurzyB6qDX3lmJuRo3ElY2UrRtKvvVyyKJ0bf5ZS994YE3cl7wopvSL9/2nkJONVtkcL/PfwTUb/6ltxXevqQuLWoKASxpJ2W0UehcPG9marJ902R5bWPgHu4lEZSy21jfYnVt+8ahV3eBy0/Op2jl5EWAAAECwxUQGg/X39EJNFagtbGZHjxdv6rHsgakSeHm7vYTZfaPVLnT+4wtsso2qww8e+bMwFWBERxd9/Rrer6QV7zqNenNb3lbz9t3bljFzZsqWlAcdvH61vY1NVIvgWp/ez74XZ1BWmxVdhVmtz61ERhHT+uzZ88ceqlFBMfdqtnjBKIFyq++//bCqpvD+/LF7ZZGXgcLRFB3ybHynkzZ3e+7Ke0rVLn3/qmLm66PuWS+9zfYkgABAgRKExAal0ZrxwQIdBNoUl/jWIgswqRTS+PZyy7+gR/XGCFuke0nus2hOvfq7XbuVf+8iF6en/j4R9Obbn3DnirECHde8eqb0+vfeGtflxUVrbe89pVd3xuPrUcf3X5fUekVFW5FtzPpbEGxvrFZyjF6vebsps3pc4NVGvd6vHHZbhihcadd1u80q8Iso3VFhMYHtUeJG0HXPe2aroFxds4//cZb+/68/7O3viW9/a1v6Xnq/PanPldIxXGd2/T0jFHBhlXeeIp5fzQWBZ2aTFVW3VfAeNEhyqjervoaqjyefsZVajsWAQIEDhcQGpshBAgMTaBJfY2jcufS43PpwTGrcNrdfuLccqvSx03Lroga2oejhAMPGpj2Euz2UoHY2b80QuArrrqq3Woi9h+B9EFVjj/6Y89L77jt3X21pcg4IzQrsvI9a0ERQV+ExVEpWkXri8Omh9C4vw/PsEPj7Kyz/u8RmsTiYRHyFjWnDrtxlDfIjb7Wn//Cl3Nj5z1OHCA++7/2/ttzH2v3G8b95u3AQA/vYBhPRu3XvqKMGydFGeXdj7mXTywq3ePfl14ECBAgMHwBofHwx8AZEGiswMraRru/aFNe0UsxFiIrKgAYlltn+4nV1mZaXt1IMZbDeulR2Zt8BAHRFqaffopRYfzyl/5kTwc6qH1Et/6lsbhdvOJYn73r09sLcF11Vbv9xTOvf0664bnP6+n4h200iEHnfuMzEFX1ERZnCzHW5XOdndu4PtUw8CQ4YAdFzY2izm/3I/xFtK44rKf3M552Tbr/vq/lOv1f/fXbc30uP3PXH6YX3HhDrmNkG3/uj7808OJ4VVbQ9nWRNXlT3GAc5t/rUX089/B3bNyMi3OJ/sdbWzUB6uM0hhHE93GatXlL/LtuclI/49oMiBMhQKDRAkLjRg+/iycwXIGm9TUe9i9ig4x25+P3sZ86BWVFtF0YxGZU3hshZ/wOtrTcyn3Kz3jaEw9cGGu/nX34zk9c1Ie0l/6lUbn4kTs/OXAwdNjFDbrYWVQ+HV+Yad/4iSrQCDPq9tKypb8R6dbvt7+9FvOurHVF7O3/Z+9dwKyqzjThr+qculJVpxDEaxX80ekWRQzOdIsSbdOZCNphSP8TUbpBe6IBJ0BGYiTphg6alu4MJmJ+cFrQZNLKNIh2Ik0aQSeJ0RBxukcSguIknYyCQblWnbqdqlPnVP3Pu4tFdp3al7X2Xvvsy/nW89RD4llr7W+9a+19zn7Xu97Pj/+rk6eqF9IYGz3zFyyUHiT8krEh5KWoXsvqGn7vfy9xx7FNlLx3zbYt2PDEBnU5kkbqnrcJLbWBe5brjjms/tjPOCzk+bqMACPACFgjwKQxrwxGgBEIFYETnf00WIyxfEQBPbywVlVVUVdffLxGw7afkIE3zmS8zPh01cHx2PraalL1uvWiDjTbVMgQxmKMQRPHXohzYUFRm05RvlDUYkGxfevTtH3bFkLiMdhxwBP64vbJhmoTSm3YdXgtTBp7Q063dYm3KJxbgUBrrE9RXTplbFqoHt8HGWiXBM4Laazqa3zRxEbPsOggjaO8MeAZmAAaRvH0jtm+orqqyiCPVdd/AFBJdwlMce/FWS0tPVifFfE9nRlX47MXbs4IMAKMACOgCwEmjXUhyf0wAoyAJwSyvYNG0qhKKHEhc4T9BEgyHA3Fy1kUFZVizbB6TO7u8br+vHiQXtw2mV7ff8gIDD7FT256TC5IIoM0fXDtw9L1VSqqHE833wd4RuE+0GFB4YanX+IcJHdrUy2d6hpQgabi6zoliYsaOGbriv7BIvX1y6kvL5zQQEdP5SyH8/EbZ9JbBw8oDfWBh9bRZ+5ZJt0mbNKYNxjdpwrPj4ktdbabC+49BF8DmyfYBMXzXHjJ49+oErJxwDT4WZO/wjnNtcb8cmEEGAFGgBGIBgJMGkdjHjgKRqBiEagkX+MoZ8+Osv2E283BCWbcEBr5HHOMlzH4aqsUN5LTqi9BGiPp3cwZU22T21m39ZZgS2ZMMknioK5vqk8b3UHJpnPDRBZLP8Qxk8bWKwGKd6HuzmRGlN3wyxZe2XEijcUI8Z0iyDP8NzffYyelsezaNKP71q+OKqni/ZDGqteyWgVOns4yz49KqBOn71Osf/jKNzeO+MtH1b5CZbOyEtaY2xjZz9gNIf6cEWAEGIHyIsCkcXnx5qsxAoxACQJDQ8P0QUd/xeCCl9aOnjwVImLJAYIML4l44cLRe7x05QeHYjUf6VQVIdO2Khkaq0FqCtbLsWMvZJIgjb1YW2CoOpJeWUFmp7YG0Yr7AMdig7oPVLEwW3yoTL/XzQGVa8StrpPaXRD0V15+aSyff2IuzN6vUMaXHt13UzuCVJ959VTpqfVyIkDVG10Ec+2s6w2/c78FpPnxLFsEOOGIZyDWSpxstDAeob7Hc3xoeNiX97ffdVbanpPgySOK72go3bkwAowAI8AIRAcBJo2jMxccCSNQsQhUkq8x1GwDgyPZwMMqIFmbGtIE+4koJ/RSwcfp2LVKP0mv68VXUZXsBIaC5PHSNkjSuFSFG4Rfsd0a8pIEzAt57kYOJn2Nl47v3mWL6dltWxyHDeL4+eefp8mXXh67TbPSgWH+oWxsrEtTLo+NwIKxSSmjQN++dYthJwOfbacChfaLL+9TXkoyc1HaKeYG1/Lj8y369LJppjzImDdIgu+zlX1FmMnzIBaAFVuYMcRlWbKfcVxmiuNkBBiBSkKASeNKmm0eKyMQUQQqydcYyt66GvVkZH6nLs72EzJjj5qCWybmMOpMaMHLq7rSXVUh+OyO3XTdrBsoiqQxVExduUGDVMN90Z0bLMsmjpej+d986pmz9gkq68XJhkCln7jXVVHJT5kyxfDhjsopEL/YC+VlQ12aikNDBhleW5Ny9bpGckZscNgRx1DAP7h2nScSF2rmm26c6UpKi7H7sWmxItOj7tXrd851tJ/QUmsQnEm4D8zJ83CaCgp8bKSUe2xeNmt1zGUc+5iYqSOQ/lwYAUaAEWAEooMAk8bRmQuOhBGoWAQGBot0qitfEeMvt5WC8CesS1eTkTAphvYTMguDExzJoEQEnPDirGpB4kYkma9eemxdlXBuacnQvv2HPJFSTiiIjRNYmUB9We57wQtpvH7DZpq/YKHc5JpqMWlM5MVPe/2GTTR/wSJlvINqgPsu29VJXdkstbVNpovb2z3dF8K6IlU9Qpxh/TslDQN2UB2/tvdV6urqNIYHdfG1s27wtIlhxkf2WQJy+r6Vq6itfbIWePHdmxnHCSLdwEyqhYc5eeRIgt8h1/vADSuZz8v9m08mpijXYT/jKM8Ox8YIMAKVigCTxpU68zxuRiBCCFSar3HQqpMk2k+4LdfmhjQNDZNBiHCxRwDeioUiXpbV7VFkyB4rn1MVtSci//zKVQZZpKuUWlBAYXz0VE5X99L96CKNodZ88+AB468r20nwj77iyumGslsUPoZP9MTjG+mB1Sul5wcVL582nV7yYLugdBGJyrjXPn3HfHrvyOFRtbGhgk0E3COqdg2wrMBJl8HCMDXUpgzCrNT3WCI0LVXcniW6nwEIGhuo9bXlP+WjBbAydRLlZL06IcAmSmN9iurSKRpALof+YmDWEXH1iNaJt2xf7GcsixTXYwQYAUagvAgwaVxevPlqjAAjYIPAya4BZfVjXMGERQCOxKuqPZ3GK1SUTfVpqqqqMsjT/nzR8CyuhBKnjO9hzgfIdZTunDdyHWTPmtX3E/41H18H2faZJUstVZogOXHcvZQAs8IBakZYW6gSYlZ9icR2woIC9xvuh7CUdKqKa4xJ2HyI8YEIfXLTRksscZT/W09tNwhk9vgmUt2sAMYigWOY9ygUviuWL3YMwct9AtJ45F4onE0aBkJroDBEvbmCb9Js+9anafu2LWefDSC4L26fbCiTsZlUek9DzQwl82t7XzGU1C2ZjKFkxth0qYvNIGL86VR17BK8lXMtVpoq1sq+QvdGShI8osu1Bpsba0j8RinXNfk6jAAjwAgwAu4IMGnsjhHXYAQYgTIgUEm+xlB7Dg8PeybuzNNRKfYTbksQCpXmhhpXv063fpL+uU61nTg6D5LHjeSVIY51+JeCBMAYsRbskjzC//p0d77sGyog1VYsXyK9xEC6Hfr1+2fry5CgaPPcjj30sRt+nz7o6Je+VhIryuBVOu6wSWMVD3DVZHRWG0bifgGhitLbXzQ2G1WLG9Y67m3VmErr82kUdwSxDvBd2tkz6F45YTVAmEOBj40UnfYV2KQ81T1Qdh/lOE4P+xnHcdY4ZkaAEagEBJg0roRZ5jEyAjFAoJJ8jf2qYs3H7e2IsRhMudYQK+VYrV/QwiTXoSx8ctNj9OTjG8eolK+bdb2nI/cCj1ILiu6+gi0p7DUZoF/s0V5FbWxWGauQiSCO9/90P9W3nK8j5Nj2oUrSY6Bhk8ZQ5EN9K1tUPJhBmo58X1iTwsL3WCQMk1VcuhHGYixhE8es+HRfVdjQxhqpdJsn872A+wUbKfnCkDuAJTX4d4k8ZMDqgnMa5BtwTUaAEWAEGIGyIcCkcdmg5gsxAoyAGwJh+Iy6xRTE5yC4oHZUUQKW2k/kziTyqhT7CZl5CMt2QCa2qNTBOjqnuZZOZAdCDQnKYxxJ95rYSwQPEtxQx6VTZy1f3O4Jr8kAdQAmo7jGdUo9XVXJxDvvvJP++ut/qyPk2PYBrGdePVUpfitPbqUOfFRW2RgQl7l21vWGslymyJKmImEYvL9zeWfCTDVmJLd7dONmmXC118F93903yIpPB2SxRpAgzovaXPuERaBDs31Furpa2QdckM+VkujZz5Sxn7Ef9LgtI8AIMALBIsCkcbD4cu+MACOggEAl+RpPaq2n0xJHFoWdQH1NivoHi4ZKTKcXssL0RL5qEF7RkR+0hwCTkCQNCb2cLCicYAmbGAGZCc9aK0Up1JhIAjh/waKzQ4ANyE0fnak001OmTKF9bxwquwWHUpBlqHzvssX07LYtUldqbW2l3T94LRA/XZkAZLyMrfr5zck+me5Jdd0LwgzH9YtDQwT1fqnaUgVfESTWZRCexW4gYFMRvzHcNpXc+kny52FZ98QBUxDA+D2GTUrYV8DKBSfkhh3SRnASPPmZzYyrMaxBuDACjAAjwAhEDwEmjaM3JxwRI1CxCCBBD5RAlVCgesqdOfZYOl4r+wkof5xeTioBM7cx8tFaN4RGPgdpfKyzP3brCfcFXirx4p4vFKknV/CkGnQ7pi+Hov9aII9BHB858i7BUgIJ7K6bdcOYjlXVnKKDt3/9PjW3ZPwHGuMeYIly67w59ObBA66j+O53v0u/f/1s13pBVQiaNPajsBeKyeqqKmPjsm+gYDw/LprYqAzH+g2baf6Chcrt/DZIwmaZXwzc2jNGbgiRkUQSFi7NjWnjXyf7Cll1v/tVk1+D/YyTP8c8QkaAEYgvAkwax3fuOHJGIHEIVJKvcakCRdhP4Egw/jdIYvgKsipKfpmzqkcOqzA9feUiHF0LCYqaGtKGBYXKfQGyFSrdrq4stbVNJiQOAzFrlRDMS1zlauOVNPai6MS1YBuCv5ZMhmB/4JbksFw4eL2OG3EMwn79xs1055/camymhFWCJo1x33f2+EsAKdSWSBgG4rhlXK0yXGGQxiD6JmVGNsu4WCOA3x0TW+oYI4UFIqxcsJE5NDxsnAIze4Gzul0OTPYzlsOJazECjAAjEBYCTBqHhTxflxFgBCwReP90LnYKSC9TKRKSdecGjeOOIIvxEs72E17QHGkTZpI371GXv6UfxWE5o4UFhdhEwX0CZb5MQWIuJEF778jhMdVBgm7a/E2CfQNONsShlIM03r1rJ61Zdb8tZt986pnYk8cY455dO+kne181CHFsJGA9zLllrmGXcOGEBgrCVx+ktVA645p21gxePJhVPI11EliCLIsLaRwVL/coP2/8JuiN8tjKEZuVfUXruBql3BXliDOK18DaQ64FLowAI8AIMALRRIBJ42jOC0fFCFQsApXgayzsJ0CIDQwOGWQx20/4X/KcqVwOQ9h4FIpYd3IkrFyvemoJxT38imFBobqJAsL4kXVrHYMBYfxPu1+i1okX6Qm6DL1cM+MyS0LX7tJ/8Ad/QNuf3y1l3/HE4xvpgdUrHUcBlTaI4zC8aL3ACwJWNVbdR/PtvKuhbL77nmWGd3Vp+fSi22jPCzulh7x+w6ZR/tdODYNIFKq6LhHfszt2W9qwSA/aQ0VsKOIkSkd33kPrymjCJ3X0zDN+h0CJL/DEiTH8ziv1A9dztWT0wn7GyZhHHgUjwAgkFwEmjZM7tzwyRiCWCOAHdrY3eb7GpfYTIMTgh5ftG+TEdhpXalz9ejVC4NpVFO0ZzD7euDeQdEvVmgXq4hXLl7iOHxWQcO71/W9L1Y1CJRli1xznP3znO3TDx25xfbYkCTOM5YlNj9FbJv/ii9smG/65dy9Z6qqUBqmqy74AtiifmjfbsEaxK1AJlyq4QTTfdONMx3aiP4zpwbUPSy9P3aQ4LqyyflAfhPm+/Ydc50J6UJIVcZoHxHFnT/J+W0hC4FotypuJrsFHsALwRBkeHjYIZCTP68+PiAQ4P8XoCUNiaNhQcWEEGAFGgBGIJgJMGkdzXjgqRqBiEUiarzFeVO3sJzhxm/5lDt9OWBnAW5CLNQJRIlBKLSj8KO4/fuPMUYSh2/yrqDTd+gr6czdfXvP1QSZ+4xuPSqm0QWwiGZ9siSpmbgpzbBI8t2OPo/pYF2ksQxgLvKHgfvHlfaPgB3GMebGyVxEVb719IT24dp0S+RoEaYx4VNTGIMlhB1LuAtKuuopiY0lTbnxwPdgWIRFxoTgcxuUTd83SZMewr2isT1FdOkX54hD15gqsPqaRxIIXnNOQuPnnATECjAAjkCQEmDRO0mzyWBiBhCAQd19jqCbxkgqfNqgloSwBiVmqnGQPQf0LFkQ8joGCfORijUDY3s9mCwrcEzhd4He+vPj+xk1tDOL4rjtucyR5P79ylWF70NpU40oae8Hs8mnT6aUSkjPs+wxezE9uesw1DDfiWBdprIOIF9YWIpGjGBzw/8ySpdKWFKJdkIngZEhuxPHFP19Nn7vvL1znKYgKrKJ1RzUI+xL3qya3ht2pJ9yLsCarr602Tpvh+w82TKona5KCHLDA9xUXRoARYAQYgegiwKRxdOeGI2MEKhaB09153yRSucHDiwBIYJG4S+aIPY7jjW+qpRPZgXKHm9jrsS+j+9SGte6EBUV9TYr6B71ZUNiNbvvWLbRi+WL3wZfU+M3JPuU2YTeAJcDuXd+j1/a+YtgYgEiEYhU2DNfNusEIT4Y0TgJmqsQ3FLqPbtw8ZgqxNie21Pm2p1CNB4G4JbMDKYuC5H2ZTKun5Rd0Ijg7/2YEC7L+C19cTfcs/jSlqqspN1Cgnv7yHtHH/QBrAL+bU57Aj0Ejzgegd5Jknyf4Lhb+x5VqX4HfwDhxxIURYAQYAUYguggwaRzdueHIGIGKRSBOvsal9hOqL6bswat3mYetotU7muB6C+qoulXEIgkVVFXCOkS3qioJBKjO2QZJhtMNTskOk4CZqqoXGO9749AYmwpZksdtjqKKKcipzLhaOtUV7AYlyGPYnRw58q7hX3zFldNHJb1DHNhYBVGGEzjlUliem6mjjp48Wy/YLOCwNhLd7qe4fu7FAgr2Fc2NaUpjYyVfNDY4KiF5HvsZx3WVc9yMACNQSQgwaVxJs81jZQRiggB+KJ+MsPoWBANeChrq0kaSE6imrOwnZOCGB6+O4/ky16qEOvzyO3aWoX4Ux9xB5LS1T6ZPfuLj1D9UH+iSgHqouaHmrEVLbiA4y5CoknWBAuzQucxx/CRgdtHERmWI12/YbKiyzQXP9NYm/6RqVDEVm5tRSQQHZWtTffpsgjAkvnQiyIS6HmR0VzZrKOvb2ttp9i1zR5HSdosB1gsnuwYq1gLA7SbxQnK69VnJn/vJV2G2rwCBjM2VcivzyzV3eO6eNz7Y3yHlGgtfhxFgBBiBJCPApHGSZ5fHxgjEGIFjHf2ResHzYj8hA39zQ9qo1p0ryFTnOhIIlFNFKxFOaFWcjoy3trYS/G/vWrxUa3zCgqIWyX4Kei0onALFWGdePVVpLG62AEqdRawynisjfur2RH0SMGPSWG7hwToJHqpRIY3NUSO2cfUjx9OxXs3JMOHjvWLZEtrzwk7bgWIjrCXTath3IMnenJvnGkrnNw8eoK5sJ10x7Sr68LR/Q79z5TURGbnpAAAgAElEQVRyYFVgLTwvhobJ2MDm4h+BCS1IKug/0R3UxyO2ZymCfUVvf5GQLHo4IbkKYSeWGcd+xv5XHPfACDACjECwCDBpHCy+3DsjwAh4RCAqvsZCoQUf1oHCEEEtqdMXke0UPC4Qh2Z8FJlINjmVSJzmdxbEfQKyWCjndVtQuMV477LF9Oy2LW7Vzn7+7I7dUipF6Q4jVFGGNEa4qph986lnDGIuKiVqpHFUiXiQTulUNXX1DUZl6sbEAYJsXEOa6tIjycGOHjtF//E/zDbIXx0Fm0RQmeOkBZfRCLDns94Vodt2DKIF2DvBvgL/is2VuNtXsJ+x3nXHvTECjAAjEBQCTBoHhSz3ywgwAr4QwI/izp68rz68NtZpP+EWAyegcUNI/fPxzbXayX31KMJrAXXeTTfOpPeOHJYKYv2GTTR/wSKpuqWVYEGBY+YoOEIbpAWFW4CyRDn6+fKX19DSFV9KrMeprHJQBbO7lyylB9c+7DYNZf38mhmXSa9zEZjVZoEuewpc49OLbnNUxpYC9MBD6+gz9ywLFDco+qqr4nGiRVhXfO2/rqWvfOVBrbggKd9zO/YwcVyCKjZasVFf7o0+rZMbkc6CtsgS9wcUyEPDw4Y1WlztK0CuV+PBxIURYAQYAUYg0ggwaRzp6eHgGIHKRSAMX2MQYEjSAwIBR+t7coWykEqsjNW7zivd8uOJxzfSA6tXSoMKIuX1/W9L1zdvquA+wQYPXlyjUGRIUKirH/qrBw01Y1Ti1o2dyj0gg1kUCWNgBq/bFcuXSMNnt9Z1nvgAnti06erKusZVLosU2U0E14DLVAEbXzNnTJXCUDUkJo7HIqZbGas6J0mqjw2amnRVWaxgSu0rdFhilGsualJVdG4r+xmXC2++DiPACDACfhBg0tgPetyWEWAEAkWgHL7GQdtPyACEo6EDgyPWF1z8IwAFDjYAOrrDUar7H4G/HryoL2VsB8LyK1ZFA4TTk5seo9dMCQBBFMHb9O57lhqWFEk/jg07AsyXrFc6iM4nN22k3bu+R+8dedeAHF6xV1w5nebfvtCzEt08d2KzobYmZSR30vW8U1nvdpYkuhPFIfHkp+bNdiQ9kcwN8WQyrapLXLm+TGJE5U4DbOA1oaBsSH5OV8heIy71cF9ObKmjY539cQk50nHiuwWbkU5+8roHAPVxw5nfPXGxr2A/Y92rgPtjBBgBRiA4BJg0Dg5b7pkRYAR8IgB7iiB+eOMlaST5jkhCN2j8yA/raCYIzrqaaCYp8jmFoTQP+nhoKINSuKgun1dxSbMCvzs3KEX2gYQEafva3leNpFRtbZPp4vbJBGUlSNuwi6znb9hxer2+Kmlsvg5I965sVtsRfjNZnB8sGt7wiA8+8VB7+z1aLaOUxvic/Lt1k8a4HojjNavvN+4Bc8EGBuxg7lu5yuv0KreL2yZJ0KSx6ukKZcBj1KDSN1l1T1XYJ8eEfQV+3yJ5Xn8eBHYhcsnzJmbqCEppLowAI8AIMALRR4BJ4+jPEUfICFQsArp9jcOyn3CbwEonOd3w8fL5hRMa6OipnJemsW+jgzQG0SeO7I9kbZe3cgBZ9uk75tt6zd56+0J6dOPmUHFWsW8INVCPF/dDGnu85JhmZmV6bqBgbACaN+YEuQFLIJAafshjEMcrli8eQ9AiKBCE8GJ2SuAXBGksAAEJ/97hw5Tt6jQ2T8JIxAbSOEo2Mm5rLGjSGNf/zck+tzAq4nOQi7hXo5wkMS4TEbUcFSBlG+tTVJdOUR7f47kCRSV5HvsZx2VVc5yMACPACBAxacyrgBFgBCKLQKE4RMc7B3zFJ8iA2nTqjOqiKKWU9HVRD43ZU9ADaA5Nwlb76B2NWm9+SGNB9EEF2j9YJHgkqijwf7L3Fbpr0W2uXqRhE8dRIFXVZlWtNsaHZ19nz6BaQw21zWSxjDJdJ3kMghbKXiilWzIZg6SFxYZbCZI0drt2OT6f0FJH2d58WTz6dYxn966ddNcdt+noyrYPJo1HoImbdUmgi8Jn5yBpmxvTdKorWtZYeMZic66+tppgX4FN4Fy+GNrzAM9bWKJwYQQYAUaAEYgHAkwax2OeOEpGoGIR8OJrbFZJAjgQF2HaT8hMHl7qRZwy9bmOMwLjm2uV1LFxwBOELAgxKHkzmYxBil0764YxCsp7ly2mZ7dtURrSTw/+gi77nUvO+OB6u19Uk1eFmVwtTFJVaWI8Vg6DBFUli0uHppM8VoUt6esBm2inu/NKG0BOGAoP7DcPHqAjhw8T/Jnb2ttp9i1ztdnPqHhVq8436jNpPIKa8V0ZIQWql7mMSps4qLZxsg3+x2HaV7CfcVRWLMfBCDACjIAcAkway+HEtRgBRiAkBFR8jUvtJ+J0HBdqHyg6oQDh4h8B2A8MDVNi8Fyz6n4juZtVwfH753bsOXvsHYTOzKunSoM4b948eubZ7/hOTvb1dWvpkXVrpa+LimEpjsMgVZWA8Vm5nOPzSxZHgTwGaZxOVSf2iP55rfV0PNuvxdfU7T538o5WWdbbtz5NK5YvUWkiXRfe6nhmciHC2jjZNaBtQ6GSMQ0jCZ4fvIUyOl1dbSiP+/PFsthXsJ+xn1njtowAI8AIlB8BJo3LjzlfkRFgBBQQwI9YKKTsClQTTQ1pgv0ESFd4Y+YGigpXiEZVTkajdx6AJ45ihnE8X+dIoN69dd4cgqLPqZQSx27EjugL7f7nj16n5paM77CnfugCV1sKq4uEoTgWfs2nuvzZ3/gGLaAOykEa6yaLwySP7exKQFzu3vU9I5kjLC+EovbuJctC8Sb2ulxADB7r7Pfa/Gw72eeKLuJY9nqqA3t2x25timjVa0epftQ8eKOEjZdY4krAW9lX+PGYd8JOrLnq6iovEHMbRoARYAQYgRAQYNI4BND5kowAIyCPgJWvcRztJ9xGjDHBouK4hhd7t2tVwudJIQWdFMal8wgC+PX9b0sTPFOmTKHv7txDky5o07IkvHgp48KlhLeWYFw6wf3W2lRLSSaNmxtqAhlf0GRxGORxKWkMtT48dZ02a9Zv2EzzFywsx3L1fQ145n/Q4Y80hj0ONrBky/oNm2j+gkWy1W3r6SaO/2L1l2nZii9pUV37HlzIHXASXn0TkBQCHupjbLrjmYgkuBBhQIU8PKwHK/Yz1oMj98IIMAKMQDkRYNK4nGjztRgBRsATAic6+2mwOEywn8CP2bp0tZGkK072EzIDn9Rab5A8KonHZPqtxDpJeIFT9QjGPJcSNSB6dv7DVnrllR/RO++8Qy0tGSMx2PzbF9JNH/9DI1FYd06PJYpX0tgq7qDXLNbHpIwe9WXQsXrpH2RQZpxeUtycVFQmwZ2XuJ3aBOl5bCaNQRh/at5seu/IYdchRJE4hue5WRndPnkyXdp+nm+lMTCBp7psKd3Ekm1nVQ/Pwj27vkev7X3F+DibzdKeF3Yqd/mFL66iNWseMDxdQYThZFKhqIkNU44m/AZJ9/IuJ8JJOy2G5y2S5iGxH/7F720d9hWZcTWGnzIXRoARYAQYgfggwKRxfOaKI2UEKhaBgcEhI0FXnO0nZCYPCWmg6sAPcy7+EYC6DkeydSlk/Eek1sMTj2+kB1avVGp0+bTp9NLL+4z75eSx92jfT16lnf+4wyBZJp1/sZE8TySr0u3j6idxla7j7Cpg6VBfqlyvnHV1KqmFah/xR8H+JwjyGCQGTktjA0U1keS+Nw5FwqoCVhpQ5ZaS3dgouvfee2nJ577oeQmq+qSLCwVpA4GYQGKDSBZJQbEJtvuFncZ/A3ne1ZWlaVdOp6lXTDdU4dfNusEITawhkQysu69QFi9XzxMQUMOkef8HBJNUt8Cyqqoqkb7o4n4BMY6C36he7SvYz1hqOXElRoARYAQihQCTxpGaDg6GEWAErBCAyvh0BShw45B5O04rFHYfUETmB4fiFPbZWL0cy25vn0yHfvGv9ItDB+mP//iPDXWxVUECuv+26UlD8dPh4BmuApyKlUZpv0waqyDtXlcHaWwmi6N4H5mJP5w8AfHn9ZQGCB+U9z44SZdfcqE7wKYaYXhylwYo86zwk3QyiqSxzCSZNwPs6otkYCNk2JCxMRLXjUYZTMx14pa4TXV85axfKZv+pfYVeO7CxkLmnsEz+4JzGso5LXwtRoARYAQYAQ0IMGmsAUTughFgBIJFYGho2LcfY7AR6uk9KT68etDw30tLY41BIvX267Ff8B+RWg8yRFBpjyCN/8czz9Efzf73rknpFvzpIlq//lEqVut5ifNKLGEMYZDGSFp0PBtfJbrTagJpfE5zLZ3Iqif6gw0Q/JBx70SRLLYat4g5X/BGHoM0xni/8Y1veFb3q93d+mqrnEjwSnB7vbeDVBrLIIjvAORFwNF6twIyrLEe9lcpgzj2qqR0u06UPj83U2ckGva62RKlsYQdS9xPNqniBwIYNi949sraV7CfsSrKXJ8RYAQYgWggwKRxNOaBo2AEGAEXBISvcdKBunBCAx09lUv6MMsyvrgrt72QxjiKjoJj2TLljjvupL955G9lqkrV2b51C0FxLHt90WkY5FKSCROQxhNb6pR8bP0Sr1ILJOBK5jH09RelLQcEafxXf/UVemTdWqUoL26bTK/vP6TURldlL77nXuw0cB1VBTbG+OIP9xke6mEVKGmhHlaxfDIr2AcKQ9Sb+611BTzihe0FrDCumDb97PhgD7J92xY6cnjECxuWGdfNup7uXrIsEvYlVnNQaURnUOvQy/M2qFjC6LfU7sVOsc9+xmHMDl+TEWAEGAH/CDBp7B9D7oERYARAUvX0UUtTY2BYZHsHY6sYVQEFRFa2L76WCipjDbpu3JXbXtV9KrhOmTKFtn3nBa2kBkiVmz46UzqM2TfPpW89/Yx0fV0VYV+S7c0nNhEWlNTw9HYrSSCLS8f4W7X0kGFbkS84W9TElTRWURkLjLzaVKh6PYdJpoux+rnHQYQ11qWpvraann9+B33hvhWWyRGvnXU94VntlDgxigkTK53odHsuqnzOCQV/i5awr4AKuTA0+vnLfsYqq4rrMgKMACMQHQSYNI7OXHAkjEBsEQBhfO0nPksvbvsaXXT+xEDGAaUQjlEmvcTdUiFK84OXfhBnH3S4E2dRitsciwpRc3FbO3Vls8oq3/UbNtH8BYu0QgDF8Yrli137RMwvvryPMplW17q6K8CDEtYlcfW8dsPDjTROIllcionZr9aJPBak8be//W1asXyJG7SjPg+THPVyGgEk53M79iiNEZVVN7HCOD1QOijcAycV8yGMJNh7xVANYwMMRfXkhBW4USOOkdQMzwBdnvbKCypBDfh329jJNG+6wL4Cdi/AiQsjwAgwAoxA/BBg0jh+c8YRMwKRQuA3H5ykp5970fj75JyP0Nov3R1IfJXia8wvcnqXT9yP3/Z2d9Gn5s2mAwd+5goMSJoVy5bQe0feda1rrhCUn7CbVQUIY5BXbe2TleLVVdnL0XVd1y5HP3akcSWQxarksTkh2DUzLnNUjZb2HdT9I7NGvJDGfkhu2c2gMDEx44bnv8qmIQhjPG+dVMMy82JXx4s1iJ/rObWNu31TULh46XdCS63UiQYvfSehTTpVRU0NNQRFNhdGgBFgBBiB+CHApHH85owjZgQihcAPfvwGff/HbxgK4+/u/jG9tO1rgcUHxVBSVYECNPy4Ht/kLYFVYMDHuGMcT45LMi8zzDg63NyYpvqaFH1w4hTd9O8/Rm8eHFG9lRaQr996arvhrXnNjKmRIY0RJ0iYJzdtNGKH1yd8PuEFOueWT2hXN6suU6EulUmSpdp3FOqX+qNXIllcOg92ymPzBoIKERumUh5jU4lVYOGHNEYfbptBUSGMoXSclJGzaBHPqiAJY1zDayLCIJ4nrI7Vh2rcN6f1IWHfE/sZlwNlvgYjwAgwAsEgwKRxMLhyr4xAxSEAxfFNt3+BNjz0OfrDj1wdyPgrxdeYX0D0LR+8GMPPVCURkr6rq/cEH2YowHCcU5DdIrP97l07jWPTP9n7KmUyGWppaTXI12tn3XBWrfvxG2fSWzbksl00X/nrh+muxUvVg415C5DGKN25QsxHYh0+niMnsgMkvL3zhaKhhhPrKZGDlhxUKXncWJ8ibB6ITUkZMta8WSN5We3VkJjt1nlzlPrVQVwiMd6eXd8znkdHjrw7khBu2vRRzyKloAKojI23c5rlN2BBGL+299UAIhndZVRIddjz5AaKsfluDHxiPF4AG/0TmtWSjnq8VKybTWqtJ2DFhRFgBBgBRiB+CDBpHL8544gZgcgisHz1/2fEBuI4iDIwWKRTXcn3NY6rOjaIOffbJwjY6qroE4O/Tdw1TH0DBeNl3kvZvvVpZU/WI0dPUHXtOC+Xi3UbHJUFsZRE0lgkuRomIiaL7ZepII+xSYMEpOb7zok4DttaxTwiVTuNF3+4zziVEEQBiW34qmezdHF7u0Ekh+FXjrGJDTgZz14v5Lsf/HQQ936uj7Ze/J79XjOJ7TkJnvus4vvovPH17hW5BiPACDACjEAkEWDSOJLTwkExAvFE4PndP6ZVX30ysIR4leJrnHQFZDlXtwpxUM64cC1hQVGbThnEXk+uQIUiaD7vRdWT8z8vXU4zZnyY/uEfnqeurk5DvQwVM5Jl6U6O531UwbRM4ss+1tTIuFJUV1NNxzr6WVkssXyguqxNVVNhaGiUNynuJyj8hXr/cihqr5xO1826QaLX8lRBsjaoZGWStT3w0Dr6zD3LtAcGjNasut/SC3j2zXNp/cZNZSePVe5vGWW5btDC9DdOQpJY3fPhtT+2+XBHrrEuTbAA4sIIMAKMACMQTwSYNI7nvHHUjEBkEfj47V+gpX/2SfrdS9uppanR8DrWWSrB11gcJz/VNaATuorsK4oe0Zhfg9BIpyg3UDCOxeu0DJAlkVpaMobHsF3SpyipKYNYvGIeOnsGg+i+rH2aNyDEmprYUkfHs/007G8foqzjCOtiII17+wtEw2R4iaPAygPWNnEoMvd8ULYITzy+kR5YvdIRJiiOkaiznKpjlc3XMEjjW29fSI9u3BzK8ori92IoQGi46LmZOuroyfve8NUQSmS7QJ4OnKbiwggwAowAIxBPBJg0jue8cdSMQCQRgK8xlMb//NO36cLzJxrk8SfnfERrrDhK3t0Xf5LHCRRWAWldMlSaEExv7/K9CQsKg5DKjT4KL9+LXE03EgnqP/iRuqkTk0wcJ2FzxkwWl3pgg8w43Z3XuiEht/riVwuWQNne3xI/Zs/j3v54+L7ingf5ab6vsTF09dUz6JOf+hMCSam7qNjh4Fny+v63dYdg2x8UoIXikLEp51bCII39JiR0G5PT5yoqbD/XSXpb/q0mN8Pw16+GTxgXRoARYAQYgVgiwKRxLKeNg2YEoodAV08fXfuJzxok8bw5H6Hf//BlgQRZKb7GrF7Rt3zCxBKkHnyV62tHLCjMybb0jdC6JySr2r51i3G0HsmqUJA0D9YTjxjkklzSJxzJf+nlfUGHW/b+MTetTbUUR0V/KVls5YENIrSzh0ljmYVlh5Ugj1PVI4kpvXqNy8Sgsw5sNVDa2icb3rXHOvt1dn+2L9Xkces3bCqb7Q2Ow/fn5ZKgqpDfuoAEof/9V1+nCy9q19WldD8qKmzpTiuwong+VEKuDa/Ty37GXpHjdowAI8AIRAcBJo2jMxccCSMQewRAHMOSIuhy9FQu6EuE3j+OS/fni7EhKUIHzCGAMLLE4/hvU0PasKCIWiIyL0mfcLQ8Sj6uOtYbVGKTMsERajpiLO1DhiwWbZg0lp8BN6zM93OcyGMgENRJCy/PEWxYPbdjj/zE+KiporTHBttNN860terxEYZr0z9f9Zf0+ftXldUKBYR6flBOhe06gAqugA1hPJO7En76zc8UA6PMOPYz9oMht2UEGAFGIGwEmDQOewb4+owAI6CMQCX4GvPLiPKysG1QTlUVLCiQ9AUvklEllz696Dba88JOJYDvXrKUHlz7sFKbOFTGsdkPOoJRYeocvwpZbCaNzZYLOuNJWl9upLEYr3ke4IHcN1CIvGd0UEpjL5YO5bRkwLhVPL2RyO/JTY95Wtogw2VPblhdYM2aNbT6L9cYHvc9/cGvqTBP33gCOKKNmHx3n5hzmmuNk1ZcGAFGgBFgBOKLAJPG8Z07jpwRqFgE8LKe7U22rzEnqtG3vPHCAjK3ozuvr1NTTyCShD/uYHHISKgFFVdUi+qRcoxj/u0LaX1ISZuCxDFM0hhKTfjQwle6rW0yIVnYFVdOHzVcL2SxmTQWPsdBYpiEvlVUqRivmJf6mpRxv5eD6POCM+JEQsQg7CmiThp7ubdVxgSP5iumXUVzbvmEYblxzYzLfCmV//GfXqSPfvSj1FCbMjYjglxTwAZrgpNkermrftsGGxMQMehMZOsvoui1Zj/j6M0JR8QIMAKMgCoCTBqrIsb1GQFGIHQEKsXXGMeK3z+d4xc7nysuKALeTBz1Dxapu68Qi5dHJo1Hv/SrqBF9LkWj+e5dOwmqxveOHB7THRSL6zdspksu+X/ISFaVTnlWrEMFV04PbR3YhNWHV/IHFidN9WnjdIEfok9sILx35F1qybQamwizb/kEZTKtviAJ0rdbhWAVg4CP76Ffv+9rTDKN/ZDlTuMS9ye8oksL7uu77rhNJjzLOkhU+OjGzSTWFE4bYRMS3yv5gr5NSD/YeB5cAhtyEjz3ScVmOjatuDACjAAjwAjEGwEmjeM9fxw9I1CxCFQCmYoj06wU1LPEvajO7K4M5bKwDxHzEyel0b3LFtOz27YoAZtUpbGqwlQJNIvKSEy4Yvlix27a2yfTd777XfrQ71zhy9OcSWP52fJr4eCVPEbCOmziWG0ggGD9/MpV9Jl7lskPpKQmNswy47wne4TX75sHDxiKeBDYLZmMkUgT/xuxz7x6qlJs5fI01jHuPbu+R28e/JkxPuMUwLSrxpwEKB28zP3tBNhbvzo6aqNgxO5o5Gg/NoCQ58CvOhjJ28Y1pAM7eaO0IGJcmZPguU8e+xm7Y8Q1GAFGgBGIAwJMGsdhljhGRoARGINAJfgatzTWGMpVHH/m4g8Bvx6OIIVAFjc3jMwJVIW5gaK/oEJq7SWBlddEeIJ0wlChnrRS6IUEg3FZbMyUy/dXBXcQhi++vM8XXkway68sv6SxuJIKeexEGJsjB3F838pV8oMx1YTSb7C/h/bu+xfj/gPpa6deRjxQ2ULtfOTwYaNuV7bTktCGxzniWrNqpdIGlNfniOrg8ayur62mzp7y21jhPgcubx08oBo27XvjkOU9LwjKmlS1bzsUkNDpVDUnb1OendENOO+EO4ATM3WEtcuFEWAEGAFGIN4IMGkc7/nj6BmBikWgEnyNg/biraTFM7651pPXsNlTNl+IjwWF29yqWFR4UQfaWTCADL37nmWeSTC3cal+7nVdqF4H9VUwR31xXN3LtdAGpHF/fshQJ3JxRkAXaSxLHmMz5aYbZ0p74K7fsMnwzVUp27c+fYYEHm2Dgvv5wYceHqWa9WI1AfUtrFQ+fcd8qXGUM5lm2MSoygaReU7tSGOrdTVQKFJff1HZuoI3o1XuIvu6+O7AxjE/X+0xYj9jPWuNe2EEGAFGIGwEmDQOewb4+owAI+AJAXj8ncwOeGobl0YgLKGEPN7ZH5eQIxun6osyFHrCUxYbFHgxjJMFhdtEyKockezpuR17lBSvMke0/RKibuOT/bwcxCrIuyc2PaasPAT2r+9/W3YoY+o1N6TPqOKZNHYDUTdp7EYeY02sWL7ELayzn6uuBTcLGmze4L5G4kUvhLEIbPbNc+nBtetsLTZEPT9qaWmQTBWx9oeGKbRTOl5J41J7CruxQ9EOH218Rw0NDyv5HjPZ6WVFjW3DyQSdcWQ/Yz3rjHthBBgBRiAKCDBpHIVZ4BgYAUbAEwKV4Gs8qbWeTnF2bk/rw9wIqm0ck+zqcz6uDA9JWFAMDw8b2et1WFCYfUG7urLGMXHDI/PK6b7H5acDN+LYC2GskgyqnMpDO5yCJlbdyDu3+XNTHjq1D3psbrHH6XMkHT16KhdYyKW2FbNv+hi9tvdVpevJqo1l1xyIY6iXn9y0USmO0sov/nCfYWWBfnbv+p5hb4GC/vGMgx+6qkraV0BnVPb5wSHDBzisonqywMuJDoxN1brCa9LHsHCM4nU5maD7rDQ31hC+g7gwAowAI8AIxB8BJo3jP4c8AkagYhE43Z1P/NFAVgXpWd5QvYAMBgFfWkotKEA0gHDQUaDig6rQKtEVSAIc7w7b5xdE7/5/3ku/+vX/pc7OTrp21g0GqT3nlrnKEFwz4zKpo+qiYz+kqHJwFg3ES213Tr9v+KcX3UZ7XtjpK0w/+DBpLA99UErj0ggEeTz9it+hd955Rz5AIsND2M3b2KvCVSmQksqlpwawSdaVzYb6XMP3ZnffIBWKw36G5qutiprcrPz2elGQx4alVW3K8NzH91jp6RisP6z1Dzr49JJXnNEOCu+62hQnE3QAkf2M/awwbssIMAKMQLQQYNI4WvPB0TACjIACAngp6uzJK7SIX1VOtqJnzqxels0WFEH4Fcsc+/ai5tWDyOheYIPSnRv0RZZ7IazCtqnAyz82DXSTxl6wsJpXv6RxmEf0g1inQfVZLtJYxH/NjKlnFbmyY5IhjVXVrbLXdqrnVSGr49p2fURFTSvzHYAxPPDQOvrMPcu0QCI2JvDbYbA4NMq6As+6c5pr6UTCrb20AOnQiardVdDxRK1/rMELzmmIWlgcDyPACDACjIBHBJg09ggcN2MEGIHwEagEX2MnhWz4MxCvCIQHIdRYTfVpqqoCWTioxYKiFAkVlZmqX2kQqOvw9pUlSMzxX9w2mV7ffyiIIUn1afhW11RTZ4+zbYlUZ6ZKOsg7v2QcSKPqKtJOiKtiEYf65SaNPwgJBgUAACAASURBVH7jTGWPaxli0QsZ7Xd+/K5TlesLq5/3Do8k98OJiIvb2ymTaR3VDZ71UVHTOj0X8ey/e8kybYRxKZb4rhtXnzL+M5JiotSkq7Q/71TmMAl1J7RAyV5QTkKYhLHLjIH9jGVQ4jqMACPACMQHASaN4zNXHCkjwAhYIHCsoz9RCcpKh8jHSfUse6Gwwr/9g0Xj6K4uCwqrCFVtGmT9SvWgMbYXHYmj4kgaC7W5DtIYa0ts8tSkq31PFaxL5i9Y6LmfoFTUngOKcMNyk8ayvsNmyJ7dsZuum3WDI4pJJY1BFq9ZtZKe3bZlzPhh7QAVtlDqRvE7E/EjQehbBw/QkSPvjnjaT5tuWAGVw55I+B7X1aQMS6+OnjwNh+fcEeEngVxonATPGafMuBrCpiUXRoARYAQYgWQgwKRxMuaRR8EIVCwCleBrfG6mznjJC9OfMa4LzOxXjDH09heMvyCLF2uCsNXGOmxQ4koa23ldy64RrDEQtA11aRI2J+f7PJqrI0lg1EjjllX3U92Z5G/9t8yl7pWrZCEOtB5IxkmZejrWWT6fVyShnHn1VOlxyap5wyCNdaxVJyBAuN46bw69efCAI17CvoMtGOxhwokS4FOTqh7ZPO0vslpW+i4cqchJ8NwBYz9jd4y4BiPACDACcUKASeM4zRbHyggwAmMQqARfY7zoDRaGAyc7k7S8GupS1FiXPuNXO+LVi6O6eOHr6tNrRVCKGxRlK5YvVobzNyf7lNvoagCFLIjjjm7vHuFeyHJZMkzXOEv7wXpobaq1TJDodk1BFtfWpKg4NOIdKhJPXTSx0a257ee6SLgokcatyxZTY4lKtGfJUupa+7BnnHQ1DIsEkt1kmTJlCn3/ldepvrHZdcheFMyunTpUgMr3xZf3BaqWVbF6wYmNhXfc6ftZ5gcTP21ha7R71/cMNTKSCRqK5CunE54JpRYcXq4jNqDxnML3I54RQ8PDbLWgAGZQlkYKIUS6KvsZR3p6ODhGgBFgBDwhwKSxJ9i4ESPACEQFgUJxiI53DkQlnEDiAAFaF4DvaiDBhtip2R4AL8VQFOMorijl8oeOI2mcTlVRZpw38tQ85aq2HDJH7oNcUl5Upmb1em6gYFidCLJYxKqKA9rNvnkuzbnlEzR/wSItQ44KuVG79xWaOG+O5ZiOvXGIiu2TLT+r37WTmtetpZqDB6jYNplAMvdqShZmvqCfjQO/E+X2rMAJhB3/9BJdcdklxqXcfFRVN27QP8jJrq6sp6HI+Cx76vhMIy/j+flbvwzEp9zPONzayqip/drVIAYrWwVhXQH1Mb4ze/oLbF3hMGGcBM95NWNzHskWuTACjAAjwAgkBwEmjZMzlzwSRqBiEUi6rzEIvfFNnPHcboELEq8efo2DxVGKT3MbEIQTW+oCzxzvRgRZjQOKvUO/fj+0e9gLeWoV7O5dO+muO26TGocuRa3UxRwqySbNkiGLxWVUEiGizeXTptNLL+/zO5RR7XX6NfsJrHHrFmq1Ud53bthMfRa+zXZEc8eGTZTTRKqLMYVJGiMGEKN7du2kn+x91fC8xbMAXrelGwiC3EMbJ/J4zar76clNj0lNGTZtMi2tBDWvKnEs7CCkLuSxkorKWFxi8xPfpNv/ZFHkE0Bi3t/8+QEDd8y/m/0GxueHOHZ7xuN3BtTHDbUpyuXh+19gSyyLdct2Yc43M/sZe3zYcTNGgBFgBCKMAJPGEZ4cDo0RYATkEOjsyRtqvyQXTrwydnaFpQIUUt25EQuKUsVnaaty4KjqV4oYw7ZpQAwXTmigo6dyvm8jkOYgrpxIqKgQxhisG2lsJouxznISzxooB2+6cSa9d+SwK55BHfGPCmnspDQ+uWM35S2Su41fdBs1vLBzDHaD06bTCc3ketiksesCKakgQx7L2FSYCUiQlzLEMZTJV0y7iu5bucqwTQi6ePFoXrNmDd37hb+I7G8CbKzh+SjzbLDCd98bhzzZgYAUbm6scbUgArncVJ82LD4GiyO2O/nCUNBTHYv+o5hkMWrATWqtJ6w1LowAI8AIMALJQYBJ4+TMJY+EEahYBCrB13hCS91ZYrRiJ/rMwGHXgeRlIIihhpIh8QRm5cJRhrQxz2PYNg2IBQqqk10DWo4mg4Ras/p+eu1M4jMxVihqP7NkqTYLBh33wnmt9XQ82z9m3F7IYnM82DwAEedGDvlRDzqNPyqksbG2bpxp2EyUFjvSeMK82WeT5pnbwKbi2P5DOqb9bB9xI41F4G7k8fqH1xqK487OzlF4YYMKa66txBYEGx24X1/b+4phWdGSGVE8w1cX/xtFh6+uyuR5JY0/d99fjLImUrlmkHW9nEIpjcerwht2NelUtZKnv3mN9eeHjO/b4eEgEYp233zqy3l+2M842uuXo2MEGAFGwCsCTBp7RY7bMQKMQGQQqARf4+aGtIF3d64QGdzLGYiZwMsXitST83Z0dnxzrUEym72OgxiHLGGIa3slAXTHHQShDiLqvcOHKdvVaZBP5SadZDDCuHFaQajU/ZLF5mtiHSApYil5jjpQbX7rqe2BKTa9eHjDQxhewqnD79LgldOp66GHjX/9lqpsp0Ecp0uU1323L6TOjZvHdG+VOA+VglAae8HJLx4629uRx1jH8BZ94+e/MBKroVxnoerWGYvuvj5+40zDskOlQGn82Xu/FDlrBVV/Zrsxe7Wy8ePFizU2riFNdenK9j2G+rocyXRV1nuU6sLeBImbuTACjAAjwAgkCwEmjZM1nzwaRqBiETjR2U+DxeRKYOJObHhdmEItWZtOGUQvEvW4WVA4XQsvfdVV8uQ7SD8o77Zv22L4TxpkX/tkum7W9TT7lrmOJIwMcQziEIq/bDZL7x1+1+h72rTpdOuChWUnePCyBzVZ0IS617UQVDuQxtnevKGga25ME9aarA2FbExCxSkUnCDQS5Wesn3J1lNNbjju8Y2UWb1yVPdDLRnDDsIuWZ1sLKjXsPVpGr98yagmhbZ2Or7/7THdgLSG2riUZEZFO3WySizmulFSZHsdA9qVksd4TrY2+U9u6Scmv21VT2zgej/84Q9p6lUzfX1P+I3bqr0Xf2arfi5um0yve1Db69gwNVtXDBSGqDdXWdYV+I6EDVbS7dC8rn/k3sBJMC6MACPACDACyUKASeNkzSePhhGoWASS7mtcaV56woICC1ongSd8kDu68673igzpi6Pe33zqGVsFLchCHBEH8SySHkEplslkCP07WReUW4EMNfvQMBnEfCUVkMYoUJDpXGthY6hqu3D+hy6g6q7smLB7liylrrUP+x4O1MYXXHLhmH7sSGA74thOnew1wKSQxmL8gjxOV1dTvjjk6mHrFbdytFP1h8cm3LvvvEMfdPSXIzzpa+B74HKLtS/dgamiV9IYNjywH/Kz6SrCwO8RqErra6uN/9TbH/zpHS9Y6W6jE0PdsUWhP/YzjsIscAyMACPACOhHgElj/Zhyj4wAIxACAlBHnpYgAkMITdslk561GyQXlMD1tSmCBQXUPFD16CyynoQyhLGIC6pREMeyylEQCLfOm0NvShy7LidxrKrC1jkvYfQl1Pt1NdWG3UlX32AYYQR2TVXS+MKJjZax6CRprRLcOfVvpU5GkMfeOKRF/Yy+kkYai0nE/Sw2guK8GfL1dWvpkXVrXe8TJJR86Uf76N9e+bt0rDNapLEuawqA4JU0dkv46QqwTQWxSYGEtNhw7OlPpu9xpW3cq64HfN+cN75etRnXZwQYAUaAEYgBAkwax2CSOERGgBFwR6ASfI11HC91R7L8NUDkNjWM2AKALEa2dh1qKLuRXDihgY6eyjkOVPUoMRRur1scs7e6iCwJItqWK0keyHoovGVU2OVfJfquKMhi9IjETunqqjNJFYv6LhKBnlRJ40kzLrO0g4CFRMdT27V4G6tYVAgIreLSSWQnlTQWic+woQrblVR1dWyV9G7PTBDGz+3YQ9OvusrwcT6RHYjAHfjbEHSSxl42EoW/dZC44Hsc6uOG2hTl8iPK43xB76ZvmJMqyPFTXe6nlMKMM6xrY5MqM479jMPCn6/LCDACjECQCDBpHCS63DcjwAiUFYGk+xonLQkLCEq8ZApbALxkliMzu5ti2+sLPtTGc26Z67jmoTKeOWMqdVnYANg1nH3zXPrW088Efi8l3TdbWJ5gQwLKS6FiT2qSSSjjJmXqpVWXSIB3zh23Wa4zeBuf2rFHC3FsZYNx+qlnqN/m3glabQxyFWu/sydZSnOMa+TZOmI3Y96ci6PyGM9lKI6FzQ/GBKsfnPS4b+Uq46QHNr5gmRC1ufT6nVJ6M2Jz8sWX9yknFC0nLmbf48HikLEJnATyOGm/v3T/oGA/Y92Icn+MACPACEQHASaNozMXHAkjwAj4RCDbO5hoP9YkkHogMcQ4Ssk7n9Mv3dxNse2marO7EPyNoXZzKl7JgwceWkev7X2Vuro6qaWlldra210T8UkDcqaiKsmo2n9Y9e3IYhFPKbkWVpxBXBcenCpH9e18jRHbwKzrDeLYb2ldtpgat20Z1Y2bcjhItbFQ5CbNnsTOoxzPYCiP62tSsbUTgH1QSyYzhjyN8lxeM+MyRw97t/tKqKmvuHK6W9Uxn4dlPSTUudVVVYbdFE52lGNjWBkgiQZuvxskukh0FdifVCPLMBdGgBFgBBiBxCHApHHippQHxAhULgKV4GssY60QxRUgiAooi/HiGLQFhRMGbspSr6SxjNekV9LYbjxuifhU10Jc15fVOAVZDMsTeBYXisOWcJRThac6H37rq5LG5944k2ocvLaPnuzzGxJZKZqhZP7g1+/b9t28bi3hz1xgmwESu9g+2VdMSd00aGmsIdg2gayzKkkgj0vHFeVkntu3Pk0rli/xvFb9kMatTTXGyQq7teA5KMmGII8b61Ox3qjgJHj2k12TqqJzW9nPWPJ24GqMACPACMQOASaNYzdlHDAjwAjYITA0NBy5rOm6Z2tCS92oo/W6+9fdHwg5caxTWAIE6VcsE7+bd2+cSGOMF8ez4XucybTKDN+xDl6Mj2f7Y6sGw+DMZLHM5kRSPW2BhSppPGHebKrb+6rlGnEjdlUWn5VyuGPDJsotWGRNcB5+l867euqYz7IPraPee5apXHpM3aSSxiAK+/NDhresUxF2AmJDL86JzMImR51wVkmAatcP7ClwmkU26arox82SydcNpNA4rtYV2GCZ2FKndGpDAZbYV2U/49hPIQ+AEWAEGAHn34rDw3E9KMQzywgwAozAWAROdg2c9SpNIj5Qj4F0RZbyqJZSCwooi3M2arcwxgBvz8y4WjrVZZ0syasiTEZpDD/Omz46U/uwb719IT26cbPvfuO2KWEesCpZLNomwfbFbuJVleNW1hGi7+6Vqwh/OorVdXI3z6UOB+9uqzZQGx+XTEBpF3eSSWMoS4V3t9u8JYE8hoUAvhtlx+yGie7PQRyvWbWSni2xZ1G5zvoNm2i+zeaKXT+wDoBNTVTe+LDWsEkB/2kUrNMo/UYoxdFto1ll/pJYd2KmjqAm58IIMAKMACOQTARYaZzMeeVRMQIVi0DSfY2j/PIijjvXplMESwAZlWdYCxUv0R909FteHn6Zn5o3W9l/8u4lS+nBtQ+7Dgl9w59Yd9n3xiFlBVppDFEnXaww80oWi76wblub7DcRdM9TOftTVRpb2UCIeDs3bKa+BQu1hF+79xWaOG/OmL7e/9VRGrZRzKds1MalCmXUwziEzQb8kp3UyGH5vWoB0qETbABle/O2tix2TeNMHkNRe7o7b2ysRrk88fhG2vPCzlFJ/WTjRfK/l17eJ1udou5VL3yPa1LVkfXYjsNmvfSCCKAi+xkHACp3yQgwAoxAhBBg0jhCk8GhMAKMgH8EBgaLdKor77+jiPYAggtkwPFOa8IzjLDF8X6QxVB54Th01F/a3ciFNavupyc3PSYNp4rfpFcls1swn1+5iu7zqQSNsieoefwgQrCB0txQ43uDIuqkitu8O32uSho3bt1CrcsXW3apU2mMC6haVKCNm9q4KttJ8GVOHzk8agxOscdlzauuA7dnnFt/cSSP/drrQAn83uHDdHF7uxa7HzeMvVghyZxoMV8XJ2uaG2uoozvav4vw2waqfyiQc/mi8TsiXxhyg7Asn09oqTU2waMST1kGLXkR/P6DdQcXRoARYAQYgeQiwKRxcueWR8YIVCQCleBrPKm13rBWCJuYFQpPuBzBBzPKx0tLbwYZGwYV4viBh9bRZxS8Vb2QBW43tA7SOOqqS0EsNNSlfZPFZjydlOduuEf5c1XS2E4BjDG62Ueo4mBFAA/Mut5IbmdX3NTGDVufpvE2ycaOvXHIMmkeSGM8S8NKEqaKm2x9vwSquE6cyGMv9zGI4kfWraXdu3aOOl2CjcC771lGOEGiwy/eat68fA+oksYgYtOpaurqG5RdOqHWi6LvcdTsPUKdoJKLY0NCJBeOUlwcCyPACDACjIA+BJg01ocl98QIMAIRQSDpvsawEABB65bgKIjpKLWgUPHMDCIer33KHjeVean3StZu37qFQEx3dWW9DmNUO69xmDuBehc+k5090SIYgiKLxdi9kE1aJi3gTlSJw/TPD9AkG89tN0JXdSh2BLUduSv6H7/oNmp4YeeoywlvYyd7jZM7dlN+1g1jwkwyaQwfW10l6uSxl2RlMsnpvCafk8Hdy6kTVdJY9rtOJt5y1xHWFanqasoNFIzN6XL7MntZV+XGKczrsZ9xmOjztRkBRoARKA8CTBqXB2e+CiPACJQRge5cgbpjoqrxAgvUoHiRKadyyGxBEXW/YhlMVdRXIBZgVQEl2lsHDxjdw1eyrW2yYQdxxZXTZS5pWQd9w9/4tb2vUFc2a/SL/pAsSVxLtnNZT2Wn/qKWFE5sUsDvEpsk2KQIQmGvSq7KzknY9VQtCmDvcMElF1qGXWybTMf2H9I6JC8WFXZkM0hhKJHtlMbHf7iPChb3alJJ46A2QqJKHqvaMODZe9ONM6W864MijuGfjxhUNg5Vn/NhbjLreliAPG6sT1FdOkVIrFtO8hi/FfC9GLWNVF3Y+ukHzwJ8d1ZXV/nphtsyAowAI8AIRBwBJo0jPkEcHiPACKgjkHRf43ISe7CgaKpPU1VVFXXnBmNlQREnctQcK8iMmTOmKhEJaP/sjt10nYWSUuUOwksg/AlPZAdUmmmva1a0Q2EWFFksAoddSWdP9BNoqQLtZVznf+gCqrZRvx892acawpj6eH7lB0e8SltW3U9NJd7hMormCfNmU11JMknRDp7GIgme+eJIiNe5cfOYeJJKGqtak6hOrNlGoH8w/MSnqqckZE6RmDHRcZLDCuN7ly2mZ7dtkYIflhkvvrxPKeEp1gFOXwWx2SYVtMZKYVhXxFmprRF6y67YzzhohLl/RoARYASigQCTxtGYB46CEWAENCNw9FROc4/R6U6oOz7o0Hf02Dw6EHZ4AYeiebA4ZCS3EyRPdFDwF0nQGPqJTpXMwLVuvX0hPWpBiHmJ48IJDRTW/WMmi7FJgXVXDrID5Gq2N0+F4rAXyCLbxgtpbEe6YpB2al0ZAEAwZBpraMiAeNhILDW0/6eWdhhuFhV23sVoN5TJUGbVSmq0IOKsLCpam2qMdWb2NIZiGVYXIKbRHwjnXgXPchk8gqxTziP1USGPVf3Yp37oAqWNOaiNX9//tvZpk7HIEBf95lPP0Jxb5irFEJTiXCkIzZVFIlSogFFw7+IkShDWFTit0dGTvO8GHVOSGVdj/E7kwggwAowAI5BsBJg0Tvb88ugYgYpFIOm+xkG8yAjCrr4mRVFQjgW9eKOa3EaVzABOXsgEO3zDsGooJYvLnVQRR7iTsjkCX+LhTMYgO89pO09ZQW2l4hVrxc4X2OleFXMLX1JBzAuvUrSr+51Lid55Z1QXHRs2UW7BIsdHgJW1hVlNbPW5lYoZpDFIp8GTpw2SGCplkNLpI4dHXb975SrCXxwKMG9tqjUSppargMhrrEsbJBIsjPr6i5QvjCjKy1GgGMeGBO5jtwJbiJlXT3WrNuZzHac5rC4K4viuO24zrIqsChTG6zduViaMsQ7Oaa4N/eSIMtAKDcSzBBZGmHvd1hVR/Z2gAFFgVdnPODBouWNGgBFgBCKFAJPGkZoODoYRYAR0IYCXh2xvtJJ56Rob+gHRMTA4pMUuAhYUeNnHC2Y51Z068fDSF1SYYrxe2gfV5qKJjcpdr9+wmeYvWKjczqpBOVW3YZPFYvy4n/rzQ6Ekl9QyaUSGny8IX0F2IjkcPf88dV56udJJgdZliy1Vuoizc8Nm6pNcZzJzC8In8+RjVPOF+0bBMDhtOp14eZ8jNE5q42L7ZIP4tfI3FoQ0yPW6va/QuNd/TFXvvEOpn4/4ldsVkWxP13wF2Q9U3SBvO7rzQV7Gtm98pzQ31FBxaMhQlJeDPFa5h6NGGgsgf7L3Fdqzayf95Ax5DN/8a2ddb5DFbe2TledS1bJD+QIRaiCSpeK3zICmTQv4ZI9vSjbp7nUKsUl0wTkNXptzO0aAEWAEGIEYIcCkcYwmi0NlBBgBeQSS7muMl/I6H8lZ8IIlvJFx/B/JZcqt7pSfzWBqRtWrMGzSuByqWxlCMZhZt+41Cb62VspamjKFTv5oH+XHtUjDCVsG/FkVGbWt6tyC7D7PQvXpZlGB+LyojYdaMraezW4gycTk1kc5PheJS8NO3lVO8lhlsyuqpLHutaFq2aH7+mH0J+xSGurSvjctwkg6HAZmXq6JDQmo2LkwAowAI8AIJB8BJo2TP8c8QkagYhF4/3QuEI+7KADqVQEjCB2ocUAUQwVWDs/YKGBWGkNUXwjDJo2DJNOxbpsa0lSbTkUqsSJIY5TunPvR9iiuZahmJ310pmVop596hvoVfFDHPb6RMqtXWvaVu3kudTz9jOVngqyprUkpb0JZ+ShnH1rn6iNspybGmEFGw9fYKimelzkE2Xxs/yEazrR6aV7WNvB6BXEcNmksBm22IwlKeaya8O2aGZfReyUWJG6T9NavjlImBvMvxmHl1+02xiR97te6otLxc1oL7GecpDuFx8IIMAKMgDMCTBrzCmEEGIHEIpB0X2MVrz2hKq40CwqnxS0wKafvp8zNdu+yxfSsRRIvu7bwu9y3/5A2MiMIdVrp+ouaqh0k28i9EU/SuHbvKzRx3hzLJaJiKYEOnPqy8gRGGyhKm+rThr0H/IFVN6KsyN+h9snUe+iXjnNSaskhc395rSNDYnvtW3e7qK7nIMlj1YRvqglHYRPx3I49uqcq0P6CyH0QaMABdY51B2VsQ+3IhpbsM0p1IyKg8CPZLfsZR3JaOChGgBFgBAJBgEnjQGDlThkBRiAKCCTd19jNk1dkGB/xlqxMCwqndQh8JrbUGUmC3vz5Acp2ddJ7hw/TFdOm08Xt7dpIWNV7QfXo9N1LltKDax9WvYxtfZ0+mFEniwUIOsesbSIUOrKzeEAXnTv3UN+110v35qRahtr2g1+/f7YvYT+AxGd+Ti3Yxd+375+p9t/921GqdJDaNT8/QLVG0rqfjUlYJz1Qi4rwUhZ/6L/24AEqtLcTEuy5Jebzc13dbaOunNdNHuNZPilTT8c6+6WhxHP2U/NmS6mNL25rNwhjL77C0gEFUFFlYzmAy0euS3EaAhujg0Vnv23UBWn8QYf8morcgAMKiP2MAwKWu2UEGAFGIKIIMGkc0YnhsBgBRsA/Aki+czJbvuzx/iNW68GOGDB7ioLM6ckVqFAcVuu8Qmp/cPhtWrb8v1hmrYeyDAnmwiAKZFVwQajfdCiwRXJFLKMoJhssXd5R8YD1c9uNX3QbNbywc1QXQ5/7L9S1dp2hrJMtVdlOuuCSC22rHz3ZZyiLsRnllyw2XwRJ/OrOJAAT/73/5rk08KeLKPPPe6n4gx+6JquTHaOoB+V06g8/Sl2/N4sGrrgyFtYTMmOMi0e3LvIY33nwV8UGoEqRIY5BGH/rqe10xZXTVboOva4XIj30oMsUgNhQhyIfBUlQoUAeNv1MEmvzVFc4ySTLBIWny8DeDNYdXBgBRoARYAQqAwEmjStjnnmUjEDFIpBkX2PjuGVdijq6R15qBPEFv1gcE4fSWvWYeCUtFKiLoTTr6sraDjtMhZkbcTz75rm0fuMm7YporwQMQPxt4qvhWJDFYuJ1EOVh3ztWpOvAi9+n3LUfUSKNMY4LJzbaDmfwX/43Fa68irp6B7U+X5y8lIPCFon9ah/6CnX25LWOxS1eqLmHMxkqtk92q+rp87h5sfolj3H/Qj0qvgtVQANxvGL5YsuNw1tvX0j3rVwVysahyhis6sI/Hr6zTHo6I2nnexzVnAd+14WO9uxnrANF7oMRYAQYgfggwKRxfOaKI2UEGAEPCJzuzhsEahKLOD6Z7Rs0VH8oUHVGzS82itjLEMYibhDHL768T4qcFTYXbW2TtRANP9n7Cu3ZtZPePHiAjhw+TC2ZjGGfcd2s62n+gkWBQavqDyrIYhz5xWZFfnAosNiC6BhEeWtTLUXN31plrDpJY6vEdCKW7PdepN6ZH1EJzbIuiFPYS0BdjGR1uhLWmS8GpXLPPUspP+sGal222EiMZy6Ftnail1+mU+MvKAtpDFuN8XfMP2upAaUzPKd1k8cgjaEuj9t96JU81pH4L5vtNJ6zsCiCPRGes3FJegfi+8lNG434UfD9M2PGh+mOO+8kSo/zfa9WQgdm64r+waLhcd/bX0zs70c/czqptZ6wKcGFEWAEGAFGoDIQYNK4MuaZR8kIVCwCSfU1xgsNlDB4WYYNR08MibowFyUUxq+VHIV3imf9hk22JC1e2KEKtkpeF1elGrwcj2f7Rx3XtcInCJuCMNZFEo5yWxG9UBr3X3e9QeSrFCsC+ixp/NA66r1nmUp3BMsLkMIgiIUncbWDwl+pcyIat4IJXAAAIABJREFU/MgNRJ0j1yglhY/vf9v4T7a+z3feScfWPx4oaQyCvHHb09S4dQuVjhvEtYhRddx29cc311J332BsbYnM5DHIb7eN0CCSd+qai6D7cTqRgiSp8Lufv2Bh0GEkpn98F8B+ARYvbr7HiRm0wkDw2/O88fUKLbgqI8AIMAKMQNwRYNI47jPI8TMCjIAjAknzNYa6o6khTbCggJ8oq2HUbwAoyi538Gy16hFq49fPkE/mz2U9MeOWRAlJFrO9eVvSKSlksXkuVdXV6isv2BbnzZhKqSPvjrpIz1u/pOHJk6k7p0YaW6lyRcewdMCfUwlSRQySdXDaVZSfdT0NXjmdaj72h9RUn6aBf/nf1Djz98aE1bFh09kkdnbjOr7/EBXa9FpFCKK4ftdO12R9J3fsNtTQugru33JbbuiK3dyPII9T1dWOp2haGmuoUIQvbTJPFdlhu2bV/fTkpsdcoX/goXX0GcWNHtdOE1xBnOLCSbXmxjTVpKqNjTdszpt9jxMMge3Q2M+4Emedx8wIMAKVjgCTxpW+Anj8jEAFIHCsoz9QFVk5IBSJxUASw4IClht4eWHfPXX0Yflw67w5yg1/c7JvVBuQzzfdOJPeO3LYta8wvZFdg7OoAKWilc1EEsliMfwkksbdb/6SaIoaaQyFXcNXH6L0X33Fcunkbp5LHU8/c/YzqIiFxUQQKmJcCDYTfQsW0uC06ZZWDmePlt/8cap+5Uej4oYFxKkde4z/BrUxFNmlat++2xdS58bNXm6VUW0wfpDEMkSxuaFu0hgnBU52DRjfe7DMga0N/uJit1A6EW7kMew4kMwsqVZUVgvTzfO+tM2+Nw5psUzyfZPEoIMx+SLS1WT8t9oU5fJFI2lepSYXHt9Ua+Qu4MIIMAKMACNQOQgwaVw5c80jZQQqFoG4+hqDIBYJuvDyDxKv9KU4CQm8yr0wvZLGpS/dqi/tn1+5ykiqFIdSqtxLMlks5kPWkiOq82elNFYhjcUcG8+YbzxKTX9+v+VQQdyCZK3d+yqlj7yr1YsYfYPY9UrqgrSdaLEhZCZlm9etJfyVlmNvHPLkLYxrwnYC/6YlNpBKrzvUkqFj+w/RcKZV29LKdX5Af776y4YfujnR58Vtkw2rgrg8h6zI48b6lHHSJjfwW+XnuZk6wvd8JSV+nfqhCxyTuJZiB6ukRzVsjGhbpBHuCN9/4jeXOUyz73GlWldgc7W6mv2MI7x8OTRGgBFgBLQjwKSxdki5Q0aAEYgaAjiyiqO6cSkgi3EkEscAoWjp7is4vgxfOKGBjp7KxWV4ocepgzSGynjmjKlKL+12FhehA2IRABTsNekqKhaHqaEubVihuK3DKI5DJaa4H+m/cGLjmOFm3ztO1eNbHe0prDYE7MhXFTzd6oIshb0EbBmgBgZhDOK0YevTNH75klHNVXx/J824bAx5a1YSg5SGZ3MpwauiNvZLFJsH17FhM+U0es7CMmf+J+fQ4cOjrUrM14w7gSi+I+trUsZmKr4rZTzY3dZkXD73+h1WelomLuMtd5wTWuAJXjDyRdiVkdNfI4pbqNzxWy3p1hXsZ1zulcjXYwQYAUYgGggwaRyNeeAoGAFGIEAE4uJrXGpBgcz3MsopkF2wrEB9Lu4IgFSZefVU94qmGlDovb7/0Nn/4vWlPQ5HhEWSRXhny2xaKAEZ4cpuPs5+QheJ4IZaWqlw5XQ/Xdm2tSKNO7sHjNMKnT2DY9rhv7eOqx21ISDsJepf2GlYTugsIIXxN0IQX2WLA7CCarpUbXz6qWeo/5a5riFZkc5odPJnb1P+onajvV0dJ7WxX6IY4wYxDWIcfeFf/P9iuz4vZVhRIMmnWV1sB1jciWOMy7zBisR/leI5u33rFlqxfLHrvVBagUljOcigpj3W6Z4IFr0J65RK8D3GZnJmXI0ciFyLEWAEGAFGIDEIMGmcmKnkgTACjIATAlH1NS61oABJ55YpvnScdkcpeUXYI3DvssX07LYt0hCVJhJKImksCBgknRLlVNeANEZxr2jn4+x3XOMe30iZ1SvPdgPysHPDZq1kYc3PD9C5H505JtST2X5DDWcmjcU81/7mCPW+9i+UevVHhsWETpLYTkUsi6VVwjoVJbCV2pjuvJMGnvimgQU246zqmP2PDULIp/WEIIqhptZJDtvhCML4NQWy/9kdu+k6jQn4ZOdXZz2s54ktdcYGlzidk3TymEljnStodF9iPYE0Vilm64qBwhD15pyVyip9R6XuOc21hrczF0aAEWAEGIHKQoBJ48qabx4tI1CxCMCeIkqZ1c3Ha/sH/R39L03aUrGTrDBwqI1BsMgksbt21vX03JlEWuISSSKNz5KIZ3xCxX2CF8QT2cohjYNIpmVn8wC7hdyCRYbqFoSin2KnzEWfpw8fo/pJ51D2NycMYrjx0EFqfO1Vop/9jOidd/xcdlRbWRWx7AWRSO6cO24bVR1E9Ae/fl+qCzslcfbgL2jcZZca3vDFb/13yiwbq9bsXrnK8FVGDKVqZ6mLn6kkq4xW6dOpLlTGN1lsHDi1SYLaOJ2qosy4WsIGlyDukk4e7961k+4quT9k1hErjd1Rwiab3ekM99ZkrEGsP/QzNIxcFMXEJGhkP2OZFcB1GAFGgBFIHgJMGidvTnlEjAAjYIFAVHyN8TJi+MWmqo1EPohLxoLCaVLx0oyM1pVE8OlY5DLEMQjjbz71DGUsklRdM+MyKdJZxNrSkqF9+w9Z9qVjPKp9WJHF5rWIF8QPOtTUVqoxRKl+c0PauBd1bi5ZKWZLxwwytG/BQsN6Qfj6quCCJGytdkfVW1tpqH0yVR/4mUqXrnURM8hVeBJ7idn1AkSWSuCODZsMsh2kcOO2LVSdzRq49SxZOiaRnJO3MZ7BTfVpSl36Ia3kuXlc7//qqNbkdm6YVar6FJum9bWjLVgqgTxW/f6x2vx0W1OV+LnOk1tJsq7Ab1co+rkwAowAI8AIVB4CTBpX3pzziBmBikSgUByi453hqSZFsimAD/9hVQsKt0lT8eBz66uSPkdCuyc3PUbf2f4/6B2T8vLyadPpM0uW0vwFi2zhWLPqfqOtbPn8ylV038pVstUDq2cmi53W4nmt9RWVXAqk8cj9WdCGvQxpbL6YsHXov3muQSTD99atOJLGbo19fH70ZJ+P1u5NrbDL3TzX8EJuXrd2VAcgrk+8vG/Uf0Od0nrAF/WGMhlqfOF7lHnisRHVteaSfWgd9d6zzHOvUDpDGQ5SPHfLJ6TWQaWSxlB0plPV1NU31rc7yeTx9q1P04qShJF2Cw4bli++vI/aNPpne17cEW8okwRPdQggj40TYbUpyuVHlMdOSfZU+y9HffYzLgfKfA1GgBFgBKKJAJPG0ZwXjooRYAQCQKDcvsZmci5fKBoKxqCS1cGPFUQ0Xka4qCNwbqaOfnrwl8Zx0pZMRkoNLKNUFpFc3NZuvLRbKZbVo/XWQpYsFr0HmRjO2wiCbQXyCRjpJI2tbBZURiHsK8w2FumfH6Cagz8zPIhBLOIvjBI0aWxn7WE3VqFCFp+DeD3PIuElsNTl3wybEeFXjHlB6b/lE4Ya2muBP/WEebNHWWN0bNhMuQULHbusVNIYmz1Dw0S9/fabPUklj7++bi09UrKBYrVISj35va7NSmgX5Aa82fd4sDhE3X3x8T2emKkzkv5xYQQYAUaAEag8BJg0rrw55xEzAhWLQLl8jXGMz/DFS6cIZDFeDPxaULhNWhAqSbdrJulzEKRQ3aqS+jLEMQhjeCKHpfJSJYvFvAaVGC6q68bqmLuOWK0Ur176hUoWxY/PrpfrWrWxUvbq6tvcj2VCO5sLwS4Df+aiqvSWGQPmAZYYUIL79aMuvR6I7nNvnGk5x8feOOSYTM+Lz3oSLAvgRY7ntoytTBLJYyfiGArjB9c+TPNdNhxk1n0l1Cmn1Re+b8bVp6i6qspYu0jkODwcTZRx3+DkUXV1VTQD5KgYAUaAEWAEAkWASeNA4eXOGQFGIEoIQIV7ujsfWEiwoIBPZlUV1Ir6LSicAgdR3dxQYyQD4qKOgB8fQxDHeHHfs2sndXVlz14cL+yzb5lrWFKEQRh7JYvFAIAJbF1kyBh1xKPXQmz2dPaMPebuN1qoZqEghS3C4LSrqG7vK1T/wk5tile/8am2B3F6+ulntJOmpXGokL7CEgLEK/CG57EuRbEgikEW4093QczjNm2kJge7m84Nmw2i2qkguedre1+VDi+qClQk9UO5uL3d9XQGNre6+wapUJRn3MzkMewCoFIOemNXelI8VMSGATDD3Pf2ZKl98hT6vWtm0bWzbgjlu8fDECLRBBYM+N60sjoJKkCod8c1pKkuXW2sw57+6JHH7Gcc1Oxzv4wAI8AIxAMBJo3jMU8cJSPACGhAIAhfY7xgjChG0oTjhvjRr6pW1TA0I2M3lCCVlLhMBTd4F7955hh/W9vkMS/Sul4W8eKe7eqkTEsrXXHldJUQtdUVGwgjVgveNy+ACYRFOu0atA1SU0ewjwBhV4TX54030rjzJ5Zl4wWJ3EAQBmktAaJz4I/+AzW8sJOos1MTYqO7wTXg3WuViE7HBVXsPUAaayfip0yhoUceoRM33hwYqYi1ADV6+shhR8jgc41NB6zVvtsXWqqOd+/aSXfdcZsU9FFTGWPzbcXyxWNIb2y+3X3PMls/eFgLYTPYC+lrtgvoHyzPqSCpyfFRyc8GqI/LJqKpimpd94CjbF3R3FhD4jSb7nFzf4wAI8AIMALRR4BJ4+jPEUfICDACGhE40dlPgwqKJLtLCxVnfU2KovKyiZfnjp68kuJKI7SR7EqogJ/dtmVUfIKIuHvJUkPJlgSlti6yWAAVlF1DFBZKVbaTJs6bM4q0RYK14vd/SKeqGwINESTheMkEVn4DyW7cTE333E1df/uEVuWtVVzwCoY9hJVlA4h5KH/xL6wtZJL8AafMqpWh2nHAs7j3hf9J4y671PCLxyaMriPksmSxFdaI69SOPZbE8fPP/T0tvedux6UTtmVOaXDYbINK2nxSo7TOrbcvpEc3bh4zLmyWHuvs93WrJIk8BvHZnx/i/AYeVkQUfkNhLTbWpQ2LM+RYwEkf3YmTVaFhP2NVxLg+I8AIMALJQoBJ42TNJ4+GEWAEXBDw62sMCwr8oBcqTqiKvSicgpgovCwODA6F/oIRxNi89CnjN3zFtOn07I7d1NraGlultliTwAi+iLpeMJNApNutGzuf4eKiO+jY+se9LDfpNvCsDVJhbA7E8EH+8Iep+6Y/MmwVUkfeNVStumwbrAZdqj4GUYzEbmYlrRPpiT5bVt3vaNUgDbZkxdzNcyk/63rKrF45poXwSobyHvZDuMdwhBzqbczjUEsrYcNBtgCP1uWLfc8B1MadFiQqvge+/4OX6W/WfsXSqgLk64Nr17naPsiOx289GcJYXAObfPDoNRckLtN1wkYQdpjr4lC8EpUJTECin+waiMzvEr/ro1zto3haC9YVzY1pqkmFZ10BXC44J9iN1HLNMV+HEWAEGAFGwBsCTBp7w41bMQKMQEwR8OJrDIJYEGggiHUSczphBHlYV1NNQXiy6oyzHH2BiPj0HfPpPZcj34gFqrvX979NQWZND2LMmG/4WGNNekni5xYT1v05zbV0Ips8n2yQmFbEKQjPEy/vc0w45oab2+fnzZhqkLeyBTEVb/gDqvnYR6nw6/9L1X/3d57Vt1D5Ck9eof6VjUO1nmGPMesGQuok2EaUFitrCyuCWfW6KvULf/ll6rz7s5Qf12I0s/NQFknoznrhQjV916fPXsqNBEdFjA2EPRTXTgW4wIbCza6i2DaZju0/NKYrkMZQJ2JDE7Y8wuMYtjxhWeY4jVfVhxmbfNfNusHoMshn1G+fr/Eij3WS6Cr3UtzrCoL2VFdweS+8YoQEfRArNNSmCB7c+B2bLwx57U6pHfsZK8HFlRkBRoARSCQCTBonclp5UIwAI2CHwNDQsLQqSVhQ4Mc6iOLuvmgnyyln5u+or7B7ly2mUksKp5jXb9hE/3nJ3YGQr7qxCposNsebVALCjjTG2EHaZdc+TDmXpGNe59VJaYxrD1453bBwaNy65bfkcGsr5f7r16jjP/6JcVkkegPpLf71EosgdWsPHlAisb1cy60NrC3g2QtStdqUTNKtnd/PcV3YPIgCYve8q6eO6VaoevE5fJatFMmlfZk7wbjGPb5R69jsSOMJLXWEEzVROQHjNEdI4HbrvDlK02i2qcB3HvxWOwJOcDuyORd98hi/WSa21Pm261CakIRU1pXXIEg4wvA9zoyrMXJ2cGEEGAFGgBGoXASYNK7cueeRMwIVi4Cbr7FIbIcXMCS2g6ojDi/gmNC4qWWDWIRQ111+yYVKXUNtfOj//MpQ72C+o1gEWZwvFKknVyiLdzWOOh/P9mvzcY0KriDwrIg/c3yCyASJa+XT63UsVsndoFQ9/dT2szYHdqS2ULyarw1/5vHLlliqeb3GKNMOMQMXjKecRK9MbKXzCNK34egRqv+bh8Y0L8XUzroEfbiphN//1VEazrSevYYf32K3cSLxH5IQlhY/ieHcrqn786+vW0uPrFur1O3FbZPp9TMKa/i+QglZjtM1QomKYLGBXC6lpwo4+O2C74kgSXSVeOJUN8wkeF5wEusxVV1NuTOWObr81s3xsJ+xl9nhNowAI8AIJAsBJo2TNZ88GkaAEZBAINs7aJDBo4iXKiK8cEFRNDw8bHhW6vKGlQhJWxWozIKwKtAWYBk68qJeQ1gH3/olTZ4yhbr6BssQpfwlzGRxudXuWE/Z3uQlV4SKF76yskUogEGSgkyGEthMDsr2I+rV/PwANa1bS+kjI4nh4JtbbJ9sfNyQ66bxbedZdtmzZCl1lXi6oqId0akal5f6wAO4+FE9e7muUxvEBJLXIPunTDF8QVFq/80lY2wfSr2B/VhkDPziX6l70sVEP3rZsLpws5jwMm5h64E1Y1XitNHjlzSGArK6iqg7N/r73Auusm2iTB7HQS0ri3O568XVCxrrcVxDmurS+n2P2c+43KuQr8cIMAKMQDQRYNI4mvPCUTECjECACAwMFkn41gkLitp0iqDgFF6QAV4+0K5bGkc8bktJ8UAvGrHOvZLGSIb3xT9fTXfc9dlIjChMslgAML651lhL8EdNUrFS+6qMz2wjAY9gvySyQWjWVFPruFoa/NWvqeF3L7UMxzb52bLFlirYjg2bDWK6HIQuiNreJcuM5HC6rRhk5sZMFIOAx7MdJBo2A7GRhk1AKH/HL18ypjuz2tgraQzldfeul2j81/6a6O/+TiZkpTroP7dgkbHB4FRAfh3r7FfqO6zKfkljfN8VikPG93a5SxTJ47ipZcs9Z3bXi2ISPFVsgrCuwLMTeQ24MAKMACPACFQ2AkwaV/b88+gZgYpEAL7Gp3vyZBxtPUMWl1vBGRTwfDyVyCtpLObk8ytX0X0uxExQ84d+o0AWi/GFScoEiTH6njTjMq1KUBDHQnWLf2WVyCA3W5tGXsyFF61dbB0bNhnEYWlxS+CG+rCxgMIaSemgdA7KUkKQm4W2ydS47WnLhIO65nbEf3qdoSgWSm1xD8GLHlYzpRtoVtiCjO9bsJDGPf4YNVgk7ZOJF3NulVxRpq1MHbu5L20bJx9yL8/qa2ddT8+d8aEGSdqfD9dSKErkMTb5uvsGy2JdJLNm41InSb+bQB7j2VdfW23Ajw0VPAe9WFewn3FcVjDHyQgwAoxAsAgwaRwsvtw7I8AIRBQBqHFhQxBHCwonSEFAwVLgeEyUZkEsjyOH36WZFsmsVK5VbuIY84ZNjIa6tKF4j8omRnPDyLH+ch7/VpknP3WhKIVFBQhUFCiGa39zmNKvvuKn27Ntkagsd8snqDDtKuPfUhLZfMpBKGFFYysS2E5ljDZ2pHGpx67oHwQyFMFQXI9KuKdl5COdiER7dXtfCYygxnWO/3DfWS9oodZ2uofs1MayQxdezlgvRmK8F3YGShYb99/KVa4KY9QDYTQpEx+lMWL+1LzZ9NreV2XhJyQtnX9m4yRK9jlRII/jZE0iPeFlqIjvuaFhStwJLbEma1LerCsmtdYTkk1yYQQYAUaAEahsBJg0ruz559EzArFH4DcfnKSLzp+oPA4rX2PlTiLaAD/0T3UNxCZ5XxAw3rtsMT27bYuvrve9cYjazvjM+urIoXFUyWIRMhRYePGMms9zUPMB8iC18x+pfvFd2olOkMhn/X8//lGqvfSSs7YJpeM598aZBqlrLid37LZNyDd+0W2WCtmjJ/ukoBL2FSCRS68r1UGIlaDwBqFec/d/oqrx46mrd9Dx2QeiF/h6VVqDND6+/23D6gJe0rp9i4VSG2ulOps1rE/MKmonqPE8wXHyE9mBEGdE7dK7d+2ku+64TarR7Jvn0reefuZs3Sj60IZFHifBYkFqEQRQCQptCAiimgTX75CFVU9DbYoGYMPWX3RN5Mh+xn5R5/aMACPACCQHASaNkzOXPBJGoGIQAFH8gx+/QU899yJddmk7bXjoc8pjN/saKzeOeIOkvwDJwA+1MRRs7x05LFPdsk6QauNSL+2oKItLgYByE8khsQkR5wIytGHrFqru6jRIOHjvWhFxQlnd939+RRPmzdZOCJoxhBJX+CEPzLrhrFoWdc6bMZVSR94dBbnZd9f8AVTDIEGtyEtZ0hhE6jl33BY7wngUQK2t1HPbnxqYGgnwLAqI3qZNj/keJ9aQbnJdkMUgwGVJ4tIhCqsTmfsVcw7SG+OAlUjvPUttcQv63n/z5weM53VXV9b2UldMm07P7thNmUzr2TpRtuIQ5HGqutp2c0gnrlCEjm+K14aBzvH76QvrCD7gXiwc/Fy33G1VfI9hcQH7Fy6MACPACDACjACTxrwGGAFGIDYIgCz+b99+np7f/WP6vQ9fRp+c8xHjz2s5eirntWmk23EG9ZHp8Uscm70zdU24mSzODRQMv0FYpUS1hKlcBBmaOnyYiu3t0v7A1kThFhq/fPGoj0DQndqxZww5B4sQjBl2HLg+iFQnn1r0U0VVYwheL/Mp7Bzys66nzOqVY7qwI4BBbtvFKEMaO5HOXsYRhTZC0d2zZKmh1gU5CjW1rCrYSGq3cpVBoga9eaCDLBaYY5MHa7izZ9BxGuyS/Z1+6hmDdA+jgDhes/r+MVYVF7e1G3YUpT7zcbHiKBd5bORoqKl2nfsw5jbK18TzfmJLXWySR+rC0s26AhsQyK/AhRFgBBgBRoARYNKY1wAjwAjEBoH/9dO36T/d+1V66Et30x/7IIvFgE92DVB+cCg245cNNCnqUNnxOtUDcbxi+WICIeGkYrPqQydpHDey2IxHUGo+EFfjNm08ewS/955lZy8Lkg9/osh6ulrN4/kfusDSiiD70DoyXxNtYceBBEJm0q00ltJroB8kUWvY9T1KH/yZ8W+pStjvWoa1xfGXXxtDnoMInThvjmX3aHNs/yHXS8PTGN7OYRaoa0FWYj3oTCYHIl7VhqKUOPXrgeyE6+DqLxPdeSdlz73I9bi4zPxYrV+rdnYe2MJ6Q+ZaQdXJZjvpvcOHKdvVSW1tk20tgsLc0PIy9lLy2GtyMrtrJ9WX1wvWKm0qnWzHumysT1FdOkV9po1s9jNWWUVclxFgBBiBZCPApHGy55dHxwgkDoGP3/4F+v0PX0Zrv3S3YVHx9r8eNlTH+FMtUBMi03gSy4UTGiipSmov87Vi2WLaruhxrIM0Lk12hk2KKCuLLUnX8fX0QUe/F9ht2yD5HBScZkIP6lDYRoBMtlLadmzYRLkzCbBUgrlwYqNl9dzNc6nD5I+KSnZKTVhbZFbdb0tAQtEKYlskuxvX30OZf95LuRd/QOlXf6TFygAE6OCV0w17DWFrAYLajvCVJY3HPb7REm/ggTnRSeLazRvGBgIfOKLAQgJxqRK+KuvCrq55nQXlWwySHOsFNhRmD1xsVvh5PoAAS6fsPcjtFMZmLGTU6Tpw9tuHLEGuch0Q1m8ePGCQ1i2ZDMESQ7evvSDp6mtSRuK1nv6CFlsEWAn054cS68urMo8qdVsaa4x7DnNRycVsXQE8atLVlQwHj50RYAQYAUbAhACTxrwcGAFGIFYIwJpi1VefpAvPn0jd3b3U3NRIR4+doqV/9kn67J99UmksSfY1Rlb57txgIpXUSpN8pvL2rU/TiuVLlJr68TQuJYuRZCeuBWsp25unQlGfjcakGZdJWwUI3ECWnnh5nzKMTtc68cN9BhEripNKH0T3+Dvm28aN+Lr//llqnnopDRaHyOxTDQsIeMeKRHPoSwchCmLYTtUsQxo7KZWVgdbQAOQxVNuCFAdmUHoHQVwLEr60b6htTz+1nc5xmGs/Q7VLaIij4PAPhwIVz24v/qpme5XSGGUIcGDywa/f9zO8srV1I8hVAsGJlK+vW2uZPBWbh/guuM7GJ1vlOua64jtCF3l8bqaOTnfnfW06eB1LnNtNaKk1ntX5QvJOnXmZF5DHsKbApgwXRoARYAQYAUYACDBpzOuAEWAEQkegq6fPUA0//dyLBgkMAthJOfxn9351lJ8xSGSQyW++/G3lsbx/Oufp5Vz5QmVuwOqZsYBfM+My6cR4LS0Zem7HHrrCRCjKTGGSyGIxXiRWhApLl5UL1I7nXT1VBs4xdaB8BTlbmHYV5adNl/I7drKXKPU2dksk5upzPGUKZbdsp97LpjmOT5DIICxB3AZBisqQxuMX3UYNL+z0NBdBNxKkbur//WOCz3PxO8+Hpj7WOVY3qxXYDCAJFY6Kq6pQrSwKsNZwD0C97VY6Nmym3IKFbtUi8bkuOwZZ7/v1GzbT/ACw0UUeB2UjFInJDjCISkmCpwIh+xmroMV1GQFGgBFIPgJMGid/jnmEjEDkEQAJjCR3d3zqJsNuAgTwi9u+RhedP1EqduF1rNKcuCelAAAgAElEQVRGdJxUX2OoRKBc6+jOS2FYCZWgJHvE5JPrNOav/PXDdNfikaPyMiWJZLEYNzYgCsUhI2mfjgIS64JLLtTRldEHSOSzf2fsG4RNhLgIrA5AmlmpckEcQ8GMNrLJtVpW3e9Iwln5JdsN2Mkewi9III5FUjj8CzsEFBD3IKszq1ZqUTy7xQk7BhQorb0qrEc2DK6i9OF3qT6iRLcbDvjcjTRGHXFUXJU8BpGKo+XiXpWxo8AaKbS3E+bIi/2LzJiDqKPjuQQ7iptunCm9mfjNp56hOQElCsR3CNTTqnNu3M8VmszN77pKp6oMVe2J7IDfrhLVHkR6dXVVosbEg2EEGAFGgBHwjgCTxt6x45aMACOgAQGojK/9xGfp249+6ay6GMphEMEvbfua1BW+uvHv6fkXXqV9//S3UvXNlaCgzPYmz9eYX4asl8Kn5s2m1/a+6rhOVv/ll+kLX1wt5XEo7Azw0o4j5XG2obADBUSUQXbl9Hk+upGuyjdySQNBloJMBlEq/j33xpmW/sLw0u1a+7DRi4xiD/M94b//LaX/6itEnZ2W4Zr7tBsPCPTzZkz1TKSq4iQIwiCUzVaxQC0MktSccDBqlhiqGMrUBwGLcaaPHB5THZ91btws041BHsOyApuAMs+X/5+9dwGzujrv/d/Zt7nPngGEaJzBmuQUohKxPSckVI/m/4+oJxza5yhICyYnNeBphh6TNPzTB1tjK20ONtFTsA00SQ3QImraUAyKvUg0KL08mgAG26qVwahcZ/bMMJd9mfk/3zWs8Td7fpf1u1/2u56HB2XWb10+a+29Z3/Xu76v1tfW6jCiOspeaUARquTFDQi7tkVe+NxbIXRyYMCHxFZU9X9e60nw9Khk03V0UXuDM6D8FBNgAkyACSSSAIvGiVxWnhQTiA8BRBjfePtv0Z8/9BWR4A5F79+qZwShGOXvf/SS+PsPvnKno2R4SfY15muXU3fN3d1rdD0rtbUe3LyV7vj0Z0Ryqn6TJIm1IBZLLhAkrHg4ecdp715DTReSE0LAKi6+Tgi6iI50Go1qNg4ImBCQ0YdekRGgZqKxFHRy2bTwni3+80uWPsfntu+ejPCt7lfVquPkS8eorlCgWVXJA51wD+oZM1HSiad1UON20482wZ1eskfZNtZTRn2r9IdDinxzVojIZv6rEI1H//0Nqt/4+5OvLb32teNU6T+Kdbzw8FU5RKye+zPPHrJtW+SEnx3xuLkhI6KNzT6znIwh6c94Ea2eNEbYS3iv4cIEmAATYAJMQBJg0Zj3AhNgAqET+OTtv0X/zy9dQ1/p/tXJscCyAgURyCgQkv/5x68KL2OUP3nk+3TstR7xHPyPVa0s9CabVF9jToY3sdq4gnzbspvoFQOxULsnbrt9FW350z+jfHOOzvZPv7IKyw9cH05yZHH1awQCOb5I+mF1gkjbVKEwTUDLHDlMuaOHqX3dmkDfn+Dp2rbyVjpJ0yOtZKKy4dGyuP4PGwAUlYjO3u2PTUm4N/lLWKGPEP2sF5Gqnfg7r79NM+5Y4Yv3sR+Ah+7qpuzm/yuEdT1f3ih7KTvloZfgDocCWN/qQxA70cba8eDwprXpQuS/TvKumS+9SNk7P0upnuO609CL/HY637Cfm9PeQKcKI65yErx/VpPtafjlbWw0EBXxmMVP28soHsDBQ++gt0lenY0kOk/NyteLQ2IuTIAJMAEmwAQmv6+MjzvJz8wAmQATYALeEdCzo4Cv8dc2/8Wk5cTDj3xfCMVPfOv3aP4Hu7zrnEhkHIe4kbTih61AHBnZ8TLG/B7aso3W/a876d3ekcnpSsEQQiEsTZK4X4zW1io5nJ97QhuNrO0HdhMQm/U8ir0Yj9Ynma6+mpoX/SIVW1pFlKcUi2U/Zon2ZB0zsc7qeTwLz2WnyQO94KHaBsZa2LhJeONqxa7+KuuWxl07qGPdWtVmY1HPSAjW28NurSG04nHfYEnsSat95LbPqC2Cio2M1ZjjIBpPfmGrI2pp0E+SCKuOgaESlSsTB1lcrAng/QkHD9rPeeunkl+D/YyTv8Y8QybABJiAXQIcaWyXGNdnAkzAcwLSjmLjV+6cjCT+hx+9ROvu+WN65cAjor/qSGMvB5FUX2NpoaAXMeslv6i3Nf/yi6m/v6A8zEs7u+iNN/6DkCQR1gzwFIUoA0/RYmlMuZ0kVfRCoHHCw8i+QVpJIFIZ/ryoB9sJ8d8n9KMsnfSvfabaJxmJ2ZA8z45HL3yOMUaMFQIrvH7RzqxlNxkODwI2IqBn37DI7RR8f14v2hbiDK47i+j8C6J7/t9foYaP/qLv4wm6Az3bCas97GaM4jDr1M8o9Su/QqnDPzFsSsVf2804gn7Wq8RvcRKNJePqyGPcepjVVu866jroNQy7P3nwcrafkwXLtcDvjNhLXJgAE2ACTIAJaAmwaMz7gQkwgUgQQBTx9sf30+aN/5t+/oNdhOjjt989Q9/71u/5Pr5ieYzOJDB7NkfSEL1y5DDd6EBse/2NN+iyuZfRaHlMRBbXqlgsX3xhicboXy9SU0bf6vnCQkhO9/RQ/cHnhDjrt0/y6OLrRF9OfZghChv5LGP+wzcvpd4duykOPsCIZkWSN/hTVxeINDNac5RK1Ynko62XXOSYme8fCg47CDLaGENExDYijI3sTbAeOGBB5HeSChK9tjZlXVvmfHb1Ctr/1F5baILyNLYalBSPYR2E19TJ3pFptyCs2qjln7MP9PTVx2tK3lCr5b3Bc2cCTIAJMIGpBFg05h3BBJhAZAhs+MM/o+/vPyjGA59iRB678Sq2M7Gk+hrXumffCwefE37Gdsu/v/YGXfS+S4VgzGXC+xE2LtXWDEGwMYrUtOsLK32SM0d/MiEmHzkcC9ESonGlq4uadu30ZbxoH8WN8F29D9Dm6C1LRRQ1hH1p71J87Q1q+IPfp9RzPyR6880gtk/gfWDOEGq1wrnX0cY4GIFY3LL1YcP5YRx9m7fZSrgXOCyHHeIGSEMuRbDmcFPsfj58bPG19MSe/W669PxZRIfOaMmJdkdKFV0LHc87TUCDSBqJw2BEanOZIMB+xrwTmAATYAJMQI8Ai8a8L5gAE4gUAdhQ9A8Oee5bbDXJpPoa44vRaGmMhmv0i5FdUUDuk6M//Xeae9llnI3+ApCwkyoaeRvr2QFYvda1P4eY1/DTI5TvXkPU12fn0VjXhaAI0R3CpjZa247VhioA2HqkP3E9lc72UvbJv1F9bEJw7pxLTY/u1H0G0eZj+bxlEkHlDj2uKO1HYA0BGxMjb2P4VePnqgV7duayJabzHt3wO5S+7z5hqZPE9/6m+vSFZKTuD/Xu7l5DjxvsMe2atLXl6ZkDh6iza67qUgVSDywgHCN6H57HiKCFeDw0UiHcouKiTwB+xrCgCuMgNIprIm+mIWqdCxNgAkyACTABLQEWjXk/MAEmwASIRLRJ32DyvO0Q4ZdNp2pW/DzRc5wWXTPf9h5/veekiHKvdT9oCa6tKSsEiLASAHoVbTxFME7VCYEFUYsjj3+PWlbeZihOOrWesL3xfHzASCiu7tJIoPdxaFOahpiNSF0pZpsleEO9cudc6li3JqjhOepngv1q3XH2bt6qbB/R/M0tlL9nveEYxrrm0tnv7qbSVQuEqAovaYhB8JJOkoCIK/Rj4+TZTRAr4Rg+94gwjppgjI1QzQLr3VQ/IR5XxsYSt/aOXoBVD7F113SK7Gfsxc7iNpgAE2ACySTAonEy15VnxQSYgE0CSfU1hvdjR0uOTifQs1l1ia0Egep2cAX5e3+znzOra8BIn8OBYfeRfarrVl3PSDx0Em2M+eSyaSqWKjQ4UqbxcRLX/fGnusAX9tz2xyjV3ycsLaRPspkPsdM5+vGcTKRXvmqBZfMqUayWjbiscOrZQ1Q9VjPhGCKzUTSyy6EE8jj216mXXzXtC+sCBmbzHF65ilL33UdnZ1w8pS2Z8Av/mBTxGDdoRoreHmJ9fdNGenrfXvrp0cOT/D585QK64soF9KX1GyIpGGOgZiykLYyZeIyD1cce3Sn8//v7+6izcy5h3stXrqK8jQj4QF4sHnWC10RzY8a1J7ZHw4lEMzhgwkEDFybABJgAE2AC1QRYNOY9wQSYABO4QCCpiWSQxOxk34gQxmqx2Ik21l5BrnVu2r2CK9CZkCPWjQRNO97Gk966ZX3vzxmrV1CDTmIsRIqeveBlqjcOePhKUTmKUckQJnu3PyYiUI2KmTAb5PsGbB0wTlhngDtEb9g3RGV8frAwizaGZQiiv42S3YEXIq5HP7/ONDmcVjyGF7DZtfyGfXsJ/aYKBbEGUUuk19Gao4GhEpUr3n+oFQp91F8oUFs+HwvRVMVv3kg8hlD+DZ2DMuxxfBbet/EBIR4nrXASvOkryn7GSdvlPB8mwASYgHcEWDT2jiW3xASYQMwJwJ4iiUlRwvajDXtb4Jr233zvL2nN537dcijf3r6bbrplIjFYrXPTwsLVVXzR7h0I18LFabSxlVgs54oEYxddv0hXoIMwB3/aOQvnT0tIVy0q1x98npBwL93TQ406IrTlRvShghQXz9/VPaV1lShWH4Zjq0kpHiO6G2z9KBDWIZKGIfqjb4jk8GgeuWXpZBI9K6Ecz+EwA1YeeI3icMcqOZx8LcBqBp7H1YeJehYY2Pv4E5XCfrTvrQQON9/tHVFaGljxNDekRd17fude+qP/M/1mRXVDD27eljjhGIcO8PoOy25JabECrAS7jotnNAbYI3fFBJgAE2ACcSLAonGcVovHygSYgK8EkuprDD9aRJWdHwnPWsDXhTNoHGJxa1OGcpk0FcsVOvRPL9GvfOpG6u8vTHsCnpXf2f4YXaGJxAzbxzcMZkZ9wuYk35wL3ePZbrQxhLT25pxYf1zNV0l6lPtZD81adhPRm29Ow4GoVyNbit7N2wgWAbIgWlP+CUOINFpLCLDntu8W0btRsKMIc59DSMfaYF3BBOJr5shhIfQ37toRWpK9wv2bhBWFmQUK1hEiN9YQa1le95tU+c3ftBSNJW9YtMD7dmi0TEMnz1LuB38j+jQS5c/seXpSzA5zzdC3HaE07LH62T8+42a11YubRHbKQ3/0B/TA1+5XfuTQS8cia8+hPAlNRb5FNJUaDhNmtOacoORnmAATYAJMoAYIsGhcA4vMU2QCTECNQLkyRqf6RtUqx6gWvhAguizsKNGgkGnF4mEIIqOVSbEQV49fOXr4gn9jQVzBhVD88cXXTRseImuRSDxMH9+gmKn0g+g+u+KESrt266hEG2MPtDVnKZOqo8JQiYqlMVvdNL74PHUsXWLrGVRGJDKEPIjFURKKqyeCCFVEtLZsfdhwjqiDYmSLoApHCrOq9YOoJ5PtIbIXgqtegT2DODyIWJFr17Rr57Q9ZiepHqbV8MLz1P7EX1Jq+3ctZ9m3eRsNRcCqAFGRs/PReC+yhOZzBaef7R9dOI/eOtGjPLrbbl9FD23Zplw/yhWdCu1RnpPbsbGfsVuC/DwTYAJMINkEWDRO9vry7JgAE7BJIIm+xviSBKuFUzajkWyiC726mVjsZHBRsWRwMnY/nolSdN/shfOmiZlCCPyTP5uMLsfVe1xBdlqsrAGcthuH56QdAaJtO9atdTxkrElh4yYhTuslGXTcsMMHIbj2bdmmHDE7c9mSaZG3EMFFlPaJ4w5H4fwxRBdDvG1ft0Y3IhgR06cPHDLtAJHJzVu3iIMNOwcCURGN8T6PqMhaTu4qF9iJN+8LB5+j2xwchvzszJDzjRuhJ2Hhgs92KxuXCA3Z96Gwn7HviLkDJsAEmECsCbBoHOvl48EzASbgNYGk+hrPbm8Q1gIq1/O9Zup3e1qx2K1QqB0rLBk6WlickExUEi75vdayfSMxs/z6GzQw+/2uxGLtHNo2fNk0Gjeo+QbdD8ReWDXYtWjAcxAupeUDopllgVhpJHZWz8+P6OTJhHGLr6OySUJA7ViM9tnJl46JasJ+5Km9vvksa8cCIR98zRhWOufSyZcnxqYt8OrGWM3sJ8z2GMR2iNFGUdlB7k8+zHuPNiyUcEPKTi6Gx3btpC+sW2N7yZIiGteqXZfRgrOfse2XAj/ABJgAE6g5Aiwa19yS84SZABMwI4DEKOdCTvblxwolMfGLX2Kxln+Uomv92Bd22oxaYkCjaGNEknpZ9Prxsn2nbUEELV21IBDBUmWMqpGoetG7Ku17WQfsRhdfR8XF1wqGSEJnVFT2GUTZxn1PEiwtIMx6WSDY9m5/TCTJAzuz6GBtQkaMQYxn107bY4L4LCOpxxZ8hE4/8qg4RIhC4UjR91YBn+sDQyUqV8aVl6bWReOZbWBWpmLZnmWRMuCYVYSveXtLNmaj5uEyASbABJhAkARYNA6SNvfFBJhA5Akk1dfYyTXWqC5WEGKxnDuE0sL5oq0v5VHl5nZcUUsMCC/WprvunDYtRIF6IXAhMhaiG6wVzBKSueXq1/PDNy+lzInjIlFaEP7KiIJVEeyjmHxPCvAQjyG8IlpaRtWaRRvr7bP27jW2RVqzPYAEi6lCH+XvWW+5VZCsDoKvE/sJiNOY/+DabhGJDSE8m05R6yWzRL+4zh+FmyrsNf/eNoDP/KnCCI2ra8b09L699Ot3rLDcS9UVzg2MenaDw3bnHj7ASfCmwmQ/Yw83FzfFBJgAE0goARaNE7qwPC0mwAScEzjdN0IlG5E7znsK7klc6W1tzAqLirgWeS0ZQoaXNhRmPJIYoe10/VsbMzQ2TnR+pOy0CU+eQ1JH7OViuUK5D31A19tYRbzUG4wUip1e4/dkgh41AvEcoje8hO1417rpXoqvEF3LV36EivhbxwoiqknmtHOX4jEsNmasXjFNeDcSybGH5lwz3w1GW89inCgQfMG1/uDztp7H4cLwylUiMaJRka853MTBe68dkdLWYBQqO7FkUGg2dlVgKwDR+N3eEdtjt5sIr729nf7lX16iuZddFthnr+1JKTzAftjTIcG6DFZcXJgAE2ACTIAJGBFg0Zj3BhNgAkygikBSfY3jarUgBW984QtKLJZbAkIpysBwuEJpFF6kuBaeSaeof6gUynC0YjGuFyPq0SgKFBGXZpYD2gkkSSjWzguRo0GJxWYbAkIyInIhJIs/V038PeOOFbYFTrN+IOKmOtqp4U+3BLY/jaLajZIonnr2EHWsW+NZ5DqighGFbNcSA3sDHsl4jahG5UOkbGnIEK6zD42WaXCkHIp4jKv0I8UxgoBdy8WN5/5HF86nt2wmcnxw81ZatfrTItEoDm5xeBjWHnC67mxtMpUcfqea09HgFCc/xwSYABNgAjVCgEXjGlloniYTYALqBJLqa4xEZr2D8bFaaMilSdpqBC0Wy92CMUCs7E2gz7X6K2KiZlgJqCCO5JtzYgw40Km+Iq/nOVvt7SrnikhMlLG2dsoe/YnjxGB22RnVj4qw69V8wmgHYjEEUCl+Ggm2cmxeJtkbuXmpiNDFftOKr1G04NCuzTuvv+04qV3Y4jEsg/TeB8LYe2H26UYAdSIaf3H9BvrS+g0TnwWZFDU1pKkhm46VeMxJ8KbuWPYzDvMVzH0zASbABOJDgEXj+KwVj5QJMIGACIyNjTu68hnQ8Bx3E5cvTDKidHx8XEQyDY+GF1EmBcs423o43jBVDwbNQutdjehmo8hClWhj+LPOWnaTqwhP6fkKf2Mrj2NE0qJPq0hfWAPAvgFCZ1QLRNbzd3UT/lbx1Q1yHhBrU4WC+AMrjP6Nm4R4a5ZsDyIzInTrDz5HuYPPi7+98HyGlzDGI32RcUDRsW5tkDiU+/LC9xviMWxicLAW5KGeEx9fZTAxqujGLsitaCwxyffouIjHcTs493s7drTkxKE4FybABJgAE2ACZgRYNOb9wQSYABPQIZBEX2N8uW/IpURCoygWKRYjkhQiRLEUjezmcbX18HqNIRLNzjfQyT77Hpp2xuIk0aFetLE2otRpdCmEYkSS4o+0u1CJIkV/Z/bsp5atWyytA85t300N+/Za1rPD0Eldq6jnwbWfp6ZdOz0RWJ2MT+UZzOHUy68a2pbINqr9iLGmWAMcBsATOG3z6r7e2FT3HA4YwDYogVkyUuGpUgevV1hGoMA2plj2932b348nVsWNTccnr19EPz16WGV5J+t89f5N9Lm7unWfiYN47MYD2haoGFXGaymVYj/jGC0ZD5UJMAEmEAoBFo1Dwc6dMgEmEHUChfOl0BN+ec3IjQei12PRthdVsViOkaOT3lstPwUbJ2KxHJlRtLGTfSuF4qHbV+smcUObKsnOxrrmUuEHz1Bqzx4RSWwUzYr+kDSu4am9lsNVFSItG7pQAX0Pr1xNEFHH8nkxzpatD6s+bloPYqhVRLYnHVU10rt5qxD4rZLRGSWyk+sL8VgmlvNCRNabK2w1yr/zu9R66meU+cDlfuCY1ib6hEg9nm/3tD9YFsDvFsUv8TiogytPwfjUGD6Xzg1Mt+tR6e6xXTvoCzaj4A+9dIw6u+aaNo/3cNhmhO17rTfIiZsySAZcVEGU+DrsZ5z4JeYJMgEmwAQ8I8CisWcouSEmkDwC/YND9OprPdMm1trSRPM/2JW8CWtmlFRfY4h+iBQdHw9/+bSJzQaHy1SuRGBQOlg6WnPiACEqkc9hrpwbocJs3LhqncumqViqOE46qBdtrMpKRSiubqv5m1us7Rouu4xG/+lfaOCdM9T+qRst7Sqsxgv7A4ixXgm7p589JBLTaQsibtu710Q6otiME/hAEEZyOCvR2kw41vYBq5HGfU9S5uhPPGMvEgQu+Ahlf2Eh0Z49RG++abX8nv0cfWPd4cksBXFwwwGC26IVj3GrpdqD3E37E1HNOWK7ICI3B3gneo7TrcuW0Fsnpv9+p7c+d679PN238QHlpQvb91pvoDI/QliJXJXhBVQRPCCic2ECTIAJMAEmYEWARWMrQvxzJlDDBP7px6/S/7z7a9MI/Oer59EjD30l0WSS6muMJEJhWz9oxWJEpHkpKvixKd14R/oxnjDb9Hr/eLkXnEQbI+Ly/NruKUnM7PC1SrqGtipL/zuN/dVfE933Vcre//t2mp9WVyb4UxKsFXqCeFjY+AANr1w1pTYiqdvXrRFWDUkvqsKx5ABBHYJ0EguikPHHiyJf2ziAxWeOFweVUbdY8oKbShsQz2e11buyCnrlyGEhHPf3Fyy7/Njia2n57atouc1DhSiJx7DzwMHvUIg5EixBB1hhRmtO+JFzYQJMgAkwASZgRYBFYytC/HMmwAQmCTz8yPfpTx75Pm38yp30yzf9UuLJnOkfTVx0KQRQlIHhcuDr56VAGOTg8cUK0XMcoeTOR1O7Zn7tBTvRxnbFQqM9Z5Z0TT4z+P9toEyqjhr+8H5XWxfJ1s7seZryG9Yr2VmodmYkFnolTquOI6x6dvZC5shhmn3DomlDDcqOQyZkRH8q0dR2mWJ/Sf9uu89W1/daNIT1QSbN78X4TMJ7aO+AO6sFO8Ix1hbi8be376a8TWsTr/eBk32JBIr4nS7qh9RO5ubkGfYzdkKNn2ECTIAJ1CYBFo1rc9151kzANoF//vGr9Jm7v0arb72RvtL9q7afj+MDSfQ1zmVTIuN9UNd7ERGFL7i4ClksV4TXZdy+tAXNLMqvFbdR19gLbU1Z3/YCrBVm3LHCFCGii7WJ7dzyVkmMhz6sEs2pjsNrX2PZr5FwDF9fRNdmFK+yq85Dr57V3IZvXkr1B5/zxTpD2EV0zRX2H/gzuvg6qnR16Xr/qhwUuOFg9iz2Lzywi1cuoBl3LPd8XbyMNpbz8Eo0dPv+49eaBN2ul1YLhUIfPbZrJ31j00alqOMrrlxAj+PgyqZwDEZe7QO7vDkJ3lRi+J0GkepcmAATYAJMgAmoEGDRWIUS12ECNU7gZ++eEYLx+983K/G2FNqlHi1VEpc0JagvTzIhTmN9fMVireCBKKV3e0dq/J2ARJIjJ5F+0osUidoLQyVfI/itBD0/RDEIxxddv8gXMTPITQdBsl/HuxSevh3daz2NbtbOC5G+WBeI/vl71htOWY4P44F1BrjDt1j894njvqBCdLf0koaojP9Gn7OW3aTcn5UYrtxQABUL92+i83d1+9ITPn9waInDI1hWDNu0CmCLgYllwcFbueKd1cILB5+j22zs5wc3b7VtVaHdUFrxeDSAw2Tps81J8CZWgf2MfXl740aZABNgAoklwKJxYpeWJ8YEvCPwP+78XUJSvO996/eoraXJu4Yj3lJSfY2RzKx3sOhL4rkkicXa7QnR+FQhGgkEw3zZIEIJXzhVr0VjP7Q2ZSiXcSYSOZkrImOtBL2TLx1z7GNsNCaVKOfqZ6MoJkIUPbd9t26ErYqHs501k2IxxFgUlbXr3bxVN2HbjNUrfBO1q+cEIdkvkdoOP726WL/xtnbBMqXgV1vdhh+vjeo+Jg6RJpJw4fZJsTymNG0kJR0YKvny2aU0gIhU8poDvI1ftOFffmlnF/3jy6+6piHFY3ymjCAJqk83kbyMzHY96Qg0MCtfLyy3uDABJsAEmAATUCHAorEKJa7DBGqYwNe2/CV9/6nn6ZH/+9s074NdNUciib7G+MKJCC8kKPKqSHGwqT5DQ6NlX778IeP7iwefo1eOHqYTPT3U2dVFl3bOpeUrVzm6Kmtn7l4ngLPTd5TqZtJ1lG/OWdqbhCEWazlZRRvb8bC1w9+uqIqozuatWzy3GLAzZr26sGeAcCzFXNRBVC/m50USOLRf2LhJ1zv3klnmB5MQ2k8fODRN9Ef0MQ4LEAUcx4I9CS9hiL1+Rk5bsQHfoZWrPLVwMepTRoDi5yriMQ48zw0UY2dxZMXc7s+9PMTE5+qia+bbHYKwqPj44utsP6f3gN/isR+/83gy8RAakbfNUrj2w4UJMAEmwASYgAIBFo0VIHEVJlCrBP7hRy/Runv+mFqbGxxaaKgAACAASURBVGnehyYiwVpbmkS0MZLh1UJBwjhENiWpeBl1oxUHh0fLIjO5H57F8Fz8+qb76S0dX9W2tjzdeVc3fWn9Bt+WCdeBMa/zI8EnEPRtUg4axhfO2fkGOtmnb9WhjTR3cv3cwZB0H1GJWPUrotJOxGvf5m0EsdPMksErJnbbgQfz2T37J973PRKL0SZsKIZXrjYcjpXgjwfRDoTj8SpfVVV/abss/K6vZwtiJ6mjyvjADIcAEKRVC6KWz6/tFpYc1axV21CppxWP+wZLhp8hEEuN3ntU+klCHa8tpqIgGst10YrHpcqY0kGCypp6KbKr9BflOuxnHOXV4bExASbABKJJgEXjaK4Lj4oJRILAq6/10I4nnpk2FgjHtZIML4m+xqrRomabMCixGGOAYPyFdWssXxNfXL/BN+HYS6HdciIRr4Cs63r+zmCEP34eHthBg+RtZlGxfkUbQwSGv7FK4jhE80Lgbtn6sJ2pBVbXa/sMFaFeNVrbyH85rsJxNZvGXTuoY91aT9f67TNDImIcr4vmb25Rtq/APoDPMZgbicdoF5YdsO7QRqjbmUBjfVp4HuMWDA6dxsenPm303mOnj7jXxWfvjNYcnS6MejKVKInGWvEYt5bweVIZcycegxeSvtX6YYNk29qUJSSU5MIEmAATYAJMQJUAi8aqpLgeE2ACNUvg7bPDiZv7JTMbycm8qm0HiqUxXyKLJfBXjhymG29YpMzfbYIeo44QnQMx42y/N1/UlScUwYrVV8Sl0FMMIKGRHRwQseZYXLs+s+dpXYsEO/3o1VUVLmFPATsFLywf3I45iOdVhHqVKHE5VqOkbdkjhwkRy048fas5QATFQYAXbZkxhjA7uvg6qnR1iT0JCw/MwezwAXVkYj7M2WyMaP/dN96ZHALm1LRrp/CBtht9jGhxjFGWtg1fnnLw4SbZpDZJGqyOBkfKQjz2WiwNYr/70QeSkeLzCBHZXpRCoY8WLZxP/Tb9rw+9dIw6L3iRezEOozbk54tT8RhJFxty3vHyc65BtM1+xkFQ5j6YABNgAskiwKJxstaTZ8MEmIAPBJLoa2zXozcsj9p7N3yZvmUjCvPDVy6gvz1wyPNdACED0UpeRXd5PsAAG5R7R+yJxixFTSzWorCKNoboBpsDP4pqYjzYBqhEJfsxxjDaRHT1yC1LDbuGmHnxBy5RGpqRvzEeVuWv1FEEK1UnLAQ3HEBAAEa0dnUxE3Ih1IMXRGRVcVxGH6NfvUh5o4SFqiirxePR8pitJJyq/cStHqJvUby0Srq7ew09/uhOZRQfW3wtPXHBukb5IZcVnYrHbC31Hni8pi6e0ehyJfhxJsAEmAATqDUCLBrX2orzfJkAE7BNAF/OCue9ieqx3blPD6h+kQpLLMa0nUZAeZmgR4sfV6NxxbX6yrRPSxTZZpFUqD6TolJlnPoGo52UKnPkMM22iFR3K26ZLZSq1UJkF9uHgUEkP/Xyq6Ytw96jOqEdRFK9iFgjf2N0kGT+Zgcejbt2Un7DlycFYCMrj+pFcBp9rLeYXh3IQOjC4VRLY4aGixXqHSj6sCvj02R7S5Zwwwf5A7wqsKi48fpFytHGzzx7iK64aoFX3dtqB+Ixoq1RVJInzmzLKdWzNYiYVmY/45guHA+bCTABJhAyARaNQ14A7p4JMIHoE0iirzGubOLLl9EXcHy5ENdgM2nhLTns4RdU1RWPmtciImwL54tUrlQZbapOKOb15AECvCYHh8vUH4MEkSq+sCoippulq76676Yt1WdhA4Ho0ahGMI/cvJR6t2w19MfVYwbhE0UvqtXM9iIKwjHmO5bPC9Ebvr9eFasDD9ikoF8nSeywf5q/+TDVH3xOOfpYOy/Yepw68KKjvvX4IMIWXqxeJkjzah2CbKfaHsirvmEFdeuyJZbC8Vfv30Sfu6vbq24dt6NNnmgmHvNh73uI881ZEa3PhQkwASbABJiAHQIsGtuhxXWZABOoWQLvnBtOVIQpBECIoKf6RqasqfTuxc/DEovlgKImGiM6u1geE0maaqlUR5vX0YS/6MBwOfIYrOwp5ASsxDc3E7WTGM9NP9pnYUUAIdXKE9er/py0A7G+b8s2XU9pPWsJRK7Cg9ooyaCRvzHGZibcu7EHQfQzhFkzcb7aFkLaSMCDuHnrFlfCvhvvYNU1k/YTdhLnadtW8bFWGQvef8uVMXFo19o0IXypRJqqtB2nOn6KoBCOP3vHcnrrRM80JJd2dtF9Gx+gm0ysZcLgaCYecxK8qSvCfsZh7FDukwkwASYQfwIsGsd/DXkGTIAJBEAgib7Gs9sbRGK3yti4SKyDK8BREIvlcsKe4sOK3qbaLeDX1VlE6KTqKBZiqRcvCSNrEuwVsIjDNXHVKF+/o40hLELsVPWLdbt+8Js9u2e/iDKNsnCMeeqJvUZJDN95/W1KFQqGLE++dIwqBsm5wMFOwjezNYCA3bt5G7Vt2igSyRmV6uRz1fVUIuHNxmEmlLvdQ3rPI/oYkdt2OaraY5iNGbYMI8X3Du20YiGSwuFzLOklKBH0hYPPEQRkJMdra8sLK4qPaxIfRpGznnjsddLAKM5bdUzsZ6xKiusxASbABJhANQEWjXlPMAEmwAQUCCTR1xjetOPj48KCAiXsyGK9ZbCboAdfcA+9fIzy+XaFVbVXJU5iqb2ZTa0NYWLiy3aaiqXKNJE8k66jfHNOHDhEvdgRa/2O2nzf5RfbFo0hOjoVmiGEQziG0Nexbm2klwoRu32bt00RfPV8jRFpXFx8HRmJrXLOesIxImXz96z3jIPq2lhFsc9eOM8y2hgidbXHMybiVRSvXSgqXuHVbb59ZshuN1PqG9kDyQRpSMiJ3ANJ9pyHMNrcGI8DO1eL7eJhrXiMvTBaGvM0aaCLoYX6KCzJZrTmQh0Dd84EmAATYALxJMCicTzXjUfNBJhAwARgS3CmEH2RTBWL/KKN+vCmjarlAiKeblt2k+q0yE+/RYilHS05Op2gfVANVivA4Oq3XvQeIpZm5yeSAsahwAYAUaZW4quZ4OjFPC+Z1WS7GURowqrBqTexqrBpe2A+PICxntuxe9KuQs9aRBuxahRFrhVSIZg37dopGFqtvw9TEk2Odc2lgZ/+u6FwZSVmI6J5eOUqQ4sNs+hqv+bkJGobUeJOvJXlHOa0NxBu/Bi9J7U0ZAh+60OjZRocKSdSPMZhXiadioWfvF97T7VdiMcQSRGAHsUDcdV5eFWP/Yy9IsntMAEmwARqjwCLxrW35jxjJsAEHBJIgq+xFAXxxRtCMaJPoh4x+vVNG+kbmzZartrHFl9LT+zZb1nPTYVLZjbS22eH3TQRyWdVxGLtwOGr+W5vPERjjNvI7qB6MZxGbkLAhDiJUrpqwZSoWfQ9444VupGiVpsB0c94vunRibbjUtz4BEMYxrwh9FZHSCMiGdHTshhF6XqRCBBtIGIZdgyqBQnv9OwqRp/5e6Lr/+s0D14caHTcsdzwUOD0s4fEfpJ7WM9qxOmeVZ1TdT0jkRvjgB2KXqJCL+xfVN5zcKCVZPFY+joPhZCY1ul+CfM5HDT0DhaFB3Y6lapp8Rh2ZDj45sIEmAATYAJMwC4BFo3tEuP6TIAJ1CyBcwPFyEbkWi2KFAWReR5WG8XSGOELNr5UxUH8sxKO71z7eZGkx++CzPX4EopkTEkodsViOWdwwFVwRODHpagmxbMbuanXrhTJIHxCUHYaKQzxFMWOcBmF9Ri+eSllj/7E8bxhx1DYuIlm6dwy0NocQFD3w7NZ6xWsKvrLxH56nr8Quwd+8LdCvMKBHaL4Uz/5iWUEfLW1hVF0td0963SPQOS+6IZF0x7H3E8fOCQiiattRaojyJ30jfeptsas8u0GfLbBox+HokmKMoWl1Pnhcqzed52stxfPVN8MkrYVEI/xOxAi0pNsZaJlyH7GXuwoboMJMAEmULsEWDSu3bXnmTMBJmCTAKJ7+gaLNp8Kt7qVKBgnERRWFfv37aVXjh6mEz091NnVRVdcuYCW3LI0sCQ9+NI+PFqJ7eGB3I3wLW5vmfA3LJy3L4JnYdXRWi84wN4kDsWPaGOzNiEU2k0YVs0R4ikiOL304g1irTB3jNuNl7KRtYb0NcY8nCZms2JQLRrbEaaNoqylsCsE0Mf+gtK//lmrYVB1hK7RfvPbj1sOVM9nGj/TrkldoU9E3cODGZHH59d2GyYntAIgk3Fm0ynCoa3dZHcT73NZStXVxe6QS4+NmUWHFcta+zmStWL9qz+fpHiMPQXxOKlWJtr1hm0LXgdcmAATYAJMgAk4IcCisRNq/AwTYAI1SSBOvsZWYrFcQHyRQKIYCKFcrAm0NmZEpYHhsnXlCNaQIgySH7qNwJPRfPVZZ4JOGHi8jjaGaKkXDasyN1W/YaMkaCp9hFUHc3v3jXdIJcmb3THCvqLSOZeat25xHMms0ieEUETWInLYCz9kaSNh5WFcPTZttDEEWVidVB9G+O3HjTEZRTlrfaZVuKrWgbiHg63h0bLr91ttcjREecfphoSWl4pFhypflXoneo6LQ1r8QZLZzq65BBsoPxLNqozHTh38boMbVUZWHtgTTQ1pasimEy8eIxcDfifkwgSYABNgAkzACQEWjZ1Q42eYABOoWQIne0dsRzsFBQuCYC6bEtdykUneKJGZdjz4IgHRr28wHtGiQbE06gfXncGsdyBeEedeisXVbPDlG0l28OUckVtRLl5HG6u2F2UmemODCJkqFFyJpRATIXi7iTYOk5uqqG9njGCi5/mLNpAwr3jFgmmeyFIQhtWJWcS5n9HGRocjWF+I624S3Onxw+FcY31G+O3bjS42Ww+teIzPPC/btrMPnNTFezgSuwWRiBViMSyhHtfxUod4/MX1G+hzd3U7mUZgz6hGZcvPxiSLx+xnHNi2446YABNgAokkwKJxIpeVJ8UEmIBfBKLoa4wvPciqji/ZqmKx5FPt++cXt6S0C1755lzkkwdK3tgbuKbrt7enjDrOZurEAUSUxRjVaGPtlXuz/YtI1Lh5Dqu8HpHUDWKhmyhbRNdC7HTThspYg6wDMblvyzaqKxSoY90aT7qG+ErPPkuVc73U8PMfnNYmPKIbn9pr2pdf0caIboYthZ4vtzZRnxcg8H41s63ek+his/Fob+LAmz0O3rZ4D2/I+X/AC8H41mVL6K0TPaZLCuH4Sxc8171Yey/bcJKvIaniMeY1p6PBS7zcFhNgAkyACdQYARaNa2zBebpMgAm4IxAlX2M3YrGWAq68nuwbicUXZ3er583TQV8RdjpqGa2H693Yt0EIuRA18k054RMZ1ahj1ejgaj9Zo3UwuravrQ8BtsFC9HO6zn4+54Uvs53xQRwdz+epSSfC0U47KnXdRBJjPXu3bKWGfU+6Fo5lW4jWxQFP6298jlLbv6syhWl1tF7MjhrQechof3vdl1/RxUYcICy2NGQIfq9IihZ1b1vsDRS/31c/unCepWAsmUZVOJYR5Wf77d8Ikgetjbl0LPaF1esc+wY3gbgwASbABJgAE3BKgEVjp+T4OSbABGqSQLkyRqf6RkOdu4yIkV92VWwozAaMyC7428L/j4s1ASQPPNM/GlmRXdXP2nqmzmrI5FOI3usdLEaSk2q0sdZPVo8GojAv/sAlpqAgPvdvfEB40XLxhwAYFxdfR7BoaF+3xjQBIeoiUhiHB26sM+TeaNy107FwLH2OtVRUDzX0SKoedKiugpEtBQ4Tzu7Zr9qMaT0ZXYykmvgcCjrqNy7isZVHr9vFgB3FY7t2KAvG6O/Szi76x5dfddu1588bJcGz01Fc9oXVnNjP2IoQ/5wJMAEmwASsCLBobEWIf84EmAATqCIQlq+x1pfWrg2F2SLGPblb0Bu0ozUnor2iJrKHLRZXrwO+uMM2Bde/o5Z4SlWYMxPhcF287dTPKPPByy23YByT2VlOKgIVEC18bsduIRhjTWETYhalrLVwUN0DRtPUCqdOLEowdgivpasWTOtC9VBDb2xWBx2qy2ZkS4Fxnz5wiCpdc1WbMqwno4v7h4o0Ugz30FJa7Pht5eMUGg4rcQhXrow7bcLwubu71+j6F6t09ODmrbR85WqVqoHVwWc0kvviIMJtibt4jJtRqVSdWwz8PBNgAkyACdQwARaNa3jxeepMgAk4I9A3WDTMyO2sRfOntGKxH1YDSJ4HgS9uyd38YK3SJoSOsXH/rwmrjAV1sH7tzTkqVcao/3y0/IRl1HGpPB5KFKEZQ1VhrlqEk6/HbDpF8Dif+ZGf1/V7VV0/rueOAERMCK8QgfV8d6tb13pVw6s3e/SwowHASqN3x27xrBsBGsnxECGtTSaH9mYuW2I6HwjgEG7rDz4/ZfxeRRs7saXAuOV4hm/5lGGCPPm+AMsctzdlHC2eyUNybKm6ukgdePllIwX/4her9pAdplG0qFBNgmdnnnEUj7PpOrqonf2M7awz12UCTIAJMIHpBFg05l3BBJgAE7BJIChfY7/FYjltJ0ljbCJLVHVEosEzsX+oFOq8sD/amrME8bLvfDFykc9aODKiEAcuUYk6VhX6pAin9RDHNXpEsqFkjxwWAl/Uk71BXEWJ+jhDfVHZ6Lza09dJtLHsDmsD4fj8Xd2We6p87XU0sPzXRHQ1ypxr5k8btTzoeOHgc/TKkcP01onjdGnnXMrn22nJLZ8Sf5sVJC/Us1MxsqVAVHLL1oenJIQ0SsyHGxHSWkm+hmxgD6yq9MVFhxC2w3zfwmf07PxE7gEvC/bHbctuctVk1ERjv1hpf1+SXtjDxYq4dRREvgAni8R+xk6o8TNMgAkwASZQTYBFY94TTIAJMAGbBPz2NdaKxVpxyuYwbVX38+qrrYHEoDIie1sbs3S2Pxxv6zD2hxfLgqinjtZ6cWU4bMFdzkc12njoK/dQ9vfvE2MfGC5PwwHhuPHRHeLfYUWRKhQof896L7B52gaSrsGnloVj91gh9CI6eCyfF38qnXMFW5VoZ6PeIcqeX9tNiPI1bOfTn6bRP/v2pJCpt4df7+yi1V1zdSNI29ryBKHvcxcE6mlfDAp9NGfh/Gl7RGtLkTlymOoPPieitOUfvTlpo57l+xbqRS262Gw3aMXjvsFwbnJk0nXU2pT1/DaQ2yhjcIuaaIxDXRxM+H1zSkYeQ5gdKVUiuadn5evFATcXJsAEmAATYAJuCLBo7IYeP8sEmEDNEjjdN0Ilj70FwxQDvfQATPqmCCsyO8z94dWaSt/Q+uyEtUPYEVqq0cZ02WUkbA3e36WMQlWQVm7Qo4oQN9MnjrtqrX/9BmratcOVQOpqADX+8MAPnqHcJz8hksYNvvoazfrIvEkibxLRDUSEv82KkdiHqPlqywu0Y2SHYbUUJ186RrkPXU6IzsQtHURmxrFoPePh0x5kwj54w2fS3t9uef+sJtdL8fiep+njF6LeXTfmQQNtTVnxuRLUPouyeMx+xh5sKG6CCTABJsAEiEVj3gRMgAkwAQcEvPQ1RuQqvhTmMmnh+xrGlV0vso07wBjbR/zyl9QDorVFgKe1XqRr3EAi+infnI2EiGRH3EUkaN/mbUpJwFR8aeO2btrxImq54am9vk0BEdv4g2IWzerbACLesBD/03U0hoR0P/6xiAzuI6KFCoKxnJo2iRmipGFLAZsJL8vwv75G2Q9cLm5mhH1I5HZeYfna+iWEuhWNP7b4Wnpiz363WD19fmZbLhQ7kWrxeGikEqqlCX6vnNVW7ylbbowJMAEmwARqkwCLxrW57jxrJsAEXBLANXVESrop0uYAomBYYrEcf9iWC244hvHszLZ6sWbF0piv3cvoNuy3KHsnOoGAL9kdLTnC30Fe+xb2DIUCQQCGvYBytPGFSdpJNNa4awd1rFvrBE9NPwOx+Nz23ZPiPDxzL/7AJTXNRGXyDxHRF1QqXqjT1Zanf7ORRNBG0xNVL7uMBl75t0QcdGnnHrR47NdNIDeiMWxOnjlwiDpxaBGhEuSBrt60teIxktOG5YcNOxPkEuDCBJgAE2ACTMAtARaN3RLk55kAE6hJAm58jaMkFmsX75KZjfT22eGaXE+7k0bkF/YArlv7UbRXoePk/+mEBeba1pilfp+j7PUifwfXfl4IxxB37XjRIgla6aqJKFhEfOoViNNIjmanXSf8kvIMPHP7tmwT0cWVKiGq+ZtbBEs/vJjRL5LKVUdN499HbllKdYUCpfr7RMJDP/r3cv2uJ6If2mzwr4nol20+o1cd64aIcFmMEuF50FVkmpB2O/DR9fPgd057A53xIVL7s6tX0H4HtwUu7ewSEcZRE4xxAI/oWq8TBjrZcNgbSPiIW1yVseDFY/YzdrJq/AwTYAJMgAnoEWDRmPcFE2ACTMAhAbu+xlIIRHd+fsF0OB0KKnrW6fii9Jxfdh61JBZr1xNf9ttbssIntHew6Itf6OyF82pCwIXYGXVx0+i1XC00QuiHWNz06E5fX/7Vgic6A8d333hnsl87diOYB4RoFCk6Z3p6CBHTfq7Nz9mwppATu5eIvmqTLtjg0ARzRMQ++OHwJTPQT7MPPEUDcy6lgf+y2Gar8a0u379SdXUEv+Ni2dsbKIiefbd3xHNALxx8jm5bdpNyuxCLl69cTctvXxU5wRiTEDZf2ZS4uRKlIj/XgxKPZd6FVKouShh4LEyACTABJhBTAiwax3TheNhMgAmETwBfDlWSrcgvDOPj4zQ4Ug7Fs1iFll++iSp9x62O13Yesj1wKJwvUtnjJItx4QsxHl/8vRZeMkcO0+wbFsUFQ02PE4Lr4Pp7hMDavHVLqEJ/7+atNLxytS3h2CzC1m+7Er9EYykMQyQud86l8oUoe+1GxVX4xvpMIryLnb4A4dXe2jRhCeCVLQEE6RmtOTpdGHU6LNPn7u5eQ48rHMrAjgLRxVforL0vA3PQaNR/hwlKPGY/Ywebhx9hAkyACTABQwIsGvPmYAJMgAk4JGDla/zeF4TxQPxvHU5j8jFcscWYe116NbsdhxfPI4LqlSOH6a0Tx6kt306dnXNpyS2fony+3YvmhQ8vrsG6/SIPQQAiQ5hJED0B4mEjUiQZLY2J1w2ij90WWEXMshFR57Y/fj4ZBLQRw9IyAzYVRgkAEYE7sH6DsNcYy+enQYCVyUXXL7KMNnYaLe5ENH6QiO7WWS5YtwzdvlpXINZWx+sVt1TweejV6zXuu0crHrv1a8fnckPOn+jZp/ftpVeOHqZvbNpoihyC8YNbttFNtyyN9NIgCR4OHKN+6Irfs3A4iuLV4YJ2YZBkFgewXJgAE2ACTIAJeEGARWMvKHIbTIAJ1CSBsbFx3SujcROL5eL5HdEUxCY50XOcvrBuDb148Plp3eGL7513ddOX1m/wZChurgyzWGy9BIgag2DSN1j05Lp3rdhTWJPlGkkl8Bki+q7NyT1LRPBC1pah21cJf2mrAmEKf6Jot2Q19iB+rrUbgpjp5AAMfOEyMDBc9mzIj+3aSV/fdD+9daLHss2PLb6WHty8LZJ2FNWDh/fzqcKII86WIHyo4EdkOobJfsY+LBY3yQSYABOoYQIsGtfw4vPUmQATcE9A62us/YKIBGnFkre+hu5Ha93C7PYGOh2jL13aGUEwvnXZEssvwl9cv8ET4RjRdXatJFgstt6D2hr4Ut3ekqPh0bIr0UREQ/7HMUrdcMOUKE+IY9VJ1+Chy4UJxJHAm0SEaGPV8l+J6EBVZURXnz5wSHgUGxXp4VsZGxeRkvibiz4B3EppEbY7GRoaLQuLKjviMbze8buEV0lXIRjjYNWq3Hb7KnpI4eDAqp2gfp5J11FHi382Hn7Ow0vxGPvt4hmNfg6X22YCTIAJMIEaI8CicY0tOE+XCTABbwkgemhsfJxaG7NULFdi/wW6oxUCXUVcNY5b+ejCeZaCsZyTF8IxvsyPFMeUWcHzE5GzYAsBgIUWtR2GL8F4fdVnU3RuoGiLm1ak7ztfpNKZc9S470lhHYDkXdWCMUY0c9kSqteJVFcbrfNaIzdPXP2utj7Av4/cspQa9u01tEVw3is/mTQCSGp3n8KkLiOil4moWho+s+fpySR+es1MXK2fEEDxWVErRVo5vNUDy6M8Xdo5V9g1dHbNVULgVDy+KF8vkoN6YblgN/HdoZeOKc9PCYKPlfxKTuvjkKc17YV4jN8x4IHNhQkwASbABJiAVwRYNPaKJLfDBJhAzRLAl+ekRFv5cRU2iI1h98swssD/48uvuhqaKittBHpS9okrcA4fxhdqeDVCcFdJQClFervJJ/1OVmY2fUQ+N1UlpYJHLv4gAjoKUdAQFeHNmz5xnNq71wSaqE7263AL1cxjVsIxBGPYUuBvbYGPcf/GB3Q5yQOYVF2d8I2tlUMvqxssdg8g5SEYxD0VWw/YIJ3s88ZyATdx9KybjF4YcYo29joiO8w3C614jM87O4cz7Gcc5spx30yACTCBZBJg0TiZ68qzYgJMICACRr7GAXXveTfIuo2ozrP9/mRq93zAFxq0+2UYjz24eSstX7na8ZDACsKxUeJAFovV0EKU+fqmjSIh00+PHiZ4T1/aNRHFd+faz09JXgjBBVeQ8bdRginJHRHdEJftilvpnuM055r5poOHDcCPL/xBRYhvV1/4Ix/ENX+IvYharhaC1chM1JKicdOundSucK3cTttO6mJeZ/fsF1HaQScYRHQ41ifVX7Ac+ujiawW7dM97vq2NHkZrI1kdispYLAfrQwXYTjxCRD8kIuxXRBRjj36aiOB9PK185CN08tlDuq8XvKZgsaB6YOPDdEJp0kowloOyKxzjOWnxIUX4Ynm6nRXe52bnJ0Rjt6VQ6KMPf+AS28389PW3PUsga7tzGw8gItvuTRQbzYdSVYrH6VRK6YABg2Q/41CWijtlAkyACSSaAIvGiV5enhwTYAJBEDjTPxpL/2I9NviSimQy7/a6/5IaqjcZPQAAIABJREFUBHvZx0cXzqe3Thy31aWTL/raDow8FBFBhiRuSbArsQXUQWUrf01EhD+xZ/+0K9IQ6yFiFYaKwiJEiDA9x2nGb66l7I+eE/8P0XD4dvuHApmjPyEItEZiIKI4kWwMQlx1gUcshDqMe/jCgUT2yGFXthIQSoVYeuJ4KLYZessKwRSetxgTl/gTwHoO7PtbavroLwj7HOm7i88DRC7mMmlxkGj3ACbOZCCyLlo4n/oVDigwz6/ev4k+d1e37SmbWRLgM6a1KWt4MGmnM7u3cWTbcbCoiOvvLarrpyoes5+xKlGuxwSYABNgAnYIsGhshxbXZQJMgAnoEEBW84GhUmLYeOmhGBSUMERjzO2SmY309tlhMc2JyLGc+Bv+uXFMhBjUeqEfK8FYjgUC7He2P0ZXXLVgyvAmk3FVxonqiJrmfYjoTT0p17tZWV37R09GV/+9GwW3xAS8JVC4fxOdv6tbRPBrk7Y11mdcJ6H0dqTBtYbbD9+wkRTTreWRVjyWtyia6tOUSaeo34PfL5IsGkt2Z/uLwW2QEHqS88ymU+IWTXVSRXiNw6aDCxNgAkyACTABLwmwaOwlTW6LCTCBmiQwWqpQkr6s4EvHaGnMlo9e2Av/yesXCWsDO8VtpDH6gsCOQ4OGXEpE46l4VNoZY1Lr2o3i+9jia0XEcXWRvsXp539IqU98wldcDxHRFxR7gHD8H4p1uRoT8JMAotTLnXNxrqIb8Y6IfNiNaAtuSkCwRGQx/Iv1rBP8HHMU2nZyEPnt7buFrY6borU1Qjul8riSh7tVn0kWjZOQBM9q/bQ/NxKP2c/YDkWuywSYABNgAqoEWDRWJcX1mAATiD2Bn717hnY88QwNDA7RL9/0S/Sfr57n2ZxktKlnDYbYEL601mdTwjM2LsVuVBjm9fiep+nji69zPEVEus5sqxfPs1hsD6Pb9ar2i67/ix2++/3+nIElhdHM/9zIO9YeKq7NBGwTQEK7kVuWClsT2IjUFfroousXTUtaCFuK0wcOCX9qFPmeNozkrsNlkuIUxONaS+I5//KLla0p5AI9uHkbLV+5yvZ6VT8gI74hhsIupDBUovFx183SRxfOo7dOvOfxbdUi/OWPvfGOVbXQf46DbtgUgVUtFbw+mxrS1JBNi4MF3AyApQkXJsAEmAATYAJeEmDR2Eua3BYTYAKRJfAPP3qJ1t3zx0Is7h8cIvz/V7p/lVbfeqMnY06Sr7GRV68noHxqBAmLFlkkL9N2bRS5qjI8CCuIwsMXNBR8WcMfLuoEnCQuRFK8+//wj6iteeL6bf/50qTHqkryOvXRTa+JpGI32GyAo41tAnNZHQIoxM+x/ESCOlngKR3VZHUup2z4eHX08IzVK3SjjKUtBRpC1D7e0/oGi9Mii6WH+NDo9Cvxfs0h7HbfP6vJ9hCc+hobdYT8AsPFCjXm0uQF+8d27aAvrFurPC+v56Pcsc2K4ITfwWrJc1uLCL+T4PXb1DDxOwkXJsAEmAATYAJeEmDR2Eua3BYTYAKRJfCZu78mIos//5lfFmP8k0e+T9sf30/f+/bv0/vfN8v1uJPma/y+jomM7V5EN7mGq9iAHY9cveRqKt1APJHRXxCKs5kUIeq1dyDZXooqbOzUcSIa33HHp+nb3/lzw6ju1k0bCX+0ZfjmpTSez1P26GHxx2lBcrv/6eDh/vUbSCaNw+OI+Mzfs35KS/h5/8YHqG3Dl3XFzXJnFw2uv0eIoZifm3loOx66fZVos2Xrww5mFr1HsNZ9W7YKPvUHn6fMEfz9XOwFY+yP0lUTyRCLi68TVhOVri4xx1ShIJIRVu97rM657btFtHHDvr00444V0xZMCssyuhhRmrgxYfSeL6NfISz3axJQRm8neDMiu1G56NVrkRWfw0hKC/atjVlCklW3t1ru7l5Djz+60xLSbbevooe2bLOsF3aFpCfBU+XLfsaqpLgeE2ACTIAJ2CXAorFdYlyfCTCBWBL45Iov0R23LZkSWfzJ23+L/svV82jjV+50Paek+RrDdgFfTuOWzM1KOEayIieCcbUdgoxoQlR2vjlHZ/tHXe+hWmrAiWi8YuVq+sbmraaYGnftEGJaXaFA48uWUfqznxE2K+1LbxT/7rQ4FY1/dmZoSpcQMmffsGjKv1U659LJl49R8ze3TBOUUVH+HP/dsXoFNT611+k0+LmYETiz52khFFuV2QvnTbOewGEDvIphS1EdaS1tKRr+0wfErQkk1BoeVbvaLxNQYkywrEiq37GquKpdm5++/jbl8+1Wy6X0c3Ce0Zqj04X3Plsk+1RdnSuvaau54VbHfRsfUBpn2JUgpPPBLVFHS05w4MIEmAATYAJMwGsCLBp7TZTbYwJMIJIEYE0BL+NHHvrK5Pi+//SPaMPXvkUvPvkn1NZi/ypq9UTfOTccq8hcs4XCVcex8QnrhbgVJPzZv28vvXDweZEcD76MV1y1gJbfvoqWr1xtazpGYrG2ERkNZqvhGq9sJVro4XGSuBCej/gync6klIhDTNOzMnAiGuv5gepFfSJCtnfHbjG+mcuW6IrbvZu30vDK1SIa2SoyGJYDmINe9KkSBK4UGAFE+47cvFREErd3r5km/CIavE8h2hOHJR06tgNG+3ny39vbRQTzme8+KryP7RS8ttpbcsJH1ixC2U6bUapr1/LIa6EVYigSrOrlFpBe0+DlVLjH5+Tju3aKz0mUtnyerrhygUjk5zaZX5DrGOffVbzkhN9DUin2M/aSKbfFBJgAE2ACEwRYNOadwASYQE0QkJ7Gzzz6R5N2FEiMd+Ptv0Wb7/9N+sQvXeOaQ5J8jWs9eieXTVF7c054JMLj08wr8aJ8vfBTjJOVh+vN7rIBCBa3LbvJViuHXjpGnRcSdtl5ENeXL7p6eiQm2oBghmv80gcX1/3b160Rwi2EtaGVq4TdwTsHnyckwrNT9Hyz9aKJtcKgXiQy+pRRo02P7rQUgzEf2GDoiYh2xs91vSOA9cvoJCCT6wovZiPh9+RLxyYT1ckRYX2lNQX+LdPT4yoRpPbgwu6shZdqfUZ47sKmKUnF6uaKnCtusDxz4JBnUcZoFzZI0ADNmGrFY4jLtejp29Gao/PDyY14V3k9IQJ9TkeDSlWuwwSYABNgAkzANgEWjW0j4weYABOIKwE9Owo92wqn80NUbuF8yenjkXpOCG35BjrVNxKpcfk9GJFQpilDuYy6d2RcrTz8ZmnVvh2LCidRxtr+9cRaiMK4vo8oT7MixbzPENF3rSal+fn3tu+mRbcsnfKEXqTwwPoNhD+yXGKQgAviMqwKIGpziT4BCMLntj9G5asWCBEfNhF6wjEOLgobN4kJIWFddaQ72oGoDJFYKxR7TUBPnFbtQ+u5q5dIT7WdKNazEo4Rnfvt7bsdHWiZzbe9JSvsoYYUbEO0N2LwO0gtHWDGMf+C1/scBwz5CwlivW6b22MCTIAJMAEmwKIx7wEmwARqhsA///hVQkI8JMP7jc/8Mr36Wg/9jzt/V1hWIEme2wJvxzMa/0G37YX9PCJozw2YR9mGPUav+nciFsu+EWmH5wtDtfVl3S37QqFPRBu/YpGgzquETBCOYdkgRLmrr6Zzv/d/aOTj11pOI91znOZcM5/eJKIbiMTfVuVBIlqjYy0ACwJEC2tL3+ZtIqJZFiPRGD+HcFz9vNVY+OfhEJAHATIq2G0yRr9noeqfbDaOpEa+wqriW1u3iPeqEz09k1YOH198rW3LI5V1zKbrCIeRuMFSroyrPCKS5bU0vBf1DZ/qpIvH+Nyd1VYvkvbWcoH3NW6HcWECTIAJMAEm4AcBFo39oMptMgEmEFkCO554hr625S/pkjkz6e2TZycFZK8GnCRfY1z7RHIkeFYmtbgRi7VM2pqyVJ9N1YzI7tV+KI0M0qd/7Tb64Q9/qNuk2whjo3EiMgt/VKMiZQI6FeH4XiL66oWOTz17SESayoJoU4iH2gIPYojG0lPWTDT2iju3wwSqCbzz+tu2fY1lG7mDz01auozcspSyH/w5amvC50dZJNlLunjp5W7CIWRjfUYkV3ViN1FL4jGSOMJKSs/32cs1iXpb7Gcc9RXi8TEBJsAE4k2AReN4rx+PngkwAQcE+geH6F9+/Cr9/Ae7Jv2NHTSj+wgic5MiskJUg6jaP5QMyw3tgmFeE18401QsVcQVYCdf0LVt4opwW2OWegeLhKhzLsYEpFifTU8I7W+++Sa9ePB5OnHiuHgIfsC49p23mZzLDnNE8yGR12hpzDKRlzaBXR8RPUREB4joJ0SE/7+aiD5CRLCwuF4zCFgPnD5waPJf5iycT+kLc9SOVetta1THztz8rGuUXM3PPrlt7wjorV+1RYpVb4i+xz6GlzIE4+ro997N22jkV1dNRr5COI5jUlUrDl7+XL4nok0kt3P7eQTxGJYFDdm0uAWDA+CkFRzWglMt7y2I5oi25sIEmAATYAJMwC8CLBr7RZbbZQJMoCYJJMnXGF9GWhuzIuIpSUXr/+jFl3MtG3zxx7ViRNglLSmUF3sAfHAYgau0A8PhCxlaL9begVEqmVwFn71QP5meFZfezVtpeOVqUc0sihgCMywCZl//MV1h2aof/jkTUCEAixN4JCPpIsrILZ+a3J/4f9hppHt6KNXfR9kjh4WdC+ri/yES6x16VPeLQ5BTL78q/lmKofgb77d8oDZ9lfz83EDb8EdOpxCRm6wDzZltuZrfU+xnrPKux3WYABNgAkzADQEWjd3Q42eZABNgAlUEkuZrfMnMRnr77HAi1tlPsVgLSAqR2UyduDbrNmIsEfCJSPKPoqAOL1ZEHePQxyhqTc+PWGVtpIAmvZHNnvEjihf96yVgUxk710kegcG13cIbO3PiOMmI4WqR2ItZV3skS79jWFUgWRu/L05QllY5VodWbtdE6zedFPGek+ARzcrXE9aWCxNgAkyACTABvwiwaOwXWW6XCTCBmiVwsnckMV+IETWLiFBkcY9rCUosruYDMQAWGBBIajm6DlHFuEZcLFc8uXbt1z60EvtxDX/WspscdY9oY0R3On3ebqeji6+lkZuXEvxl0a+el7LdNrk+E7BDoNrPWz6L90UkbBuqcb9jq/cbO6zt1IXACNuKsfFx6j9fMr1dYafdoOtm0nXU0ZKj0wlKPmyXIfbQnPYGSqXq7D7K9ZkAE2ACTIAJKBNg0VgZFVdkAkyACagRSJKvcZw9Ayeu5ebE9ei+88VQhG/45na01ptGsKrtqvjV0iYZdJrUKYxZN+RSlG/KiQRe1VHHTi0qEO17fm035e9Z7/uU9BKayUR+vnfOHTABItLaU+gBkcnacKCE11kS/XbNNoKfdhSqGzCsw1TV8VnVw4FsJp1KZM4Fq7nLn7OfsSoprscEmAATYAJuCLBo7IYeP8sEmAAT0CGApGrwDkxCwZd6fLnsHYjPfLRiZVR8c2e05qhSGRcJiXA9O8lFJhlsrM9EwrfYCWvpA4pntRYjrZs2Ev44KUHZRPRt3iZ8Z+FNmyoUxH/DhoAtKsxXDdYg4/l2Knd1iYpghwJ28PXl8h4BsCpdtYDG2tqpfNUCav7mlklG2qSOVsy0r7OkWCZYzRmfp4i0xmfTSDHcGzxSvG+qj1/kNw60y5UxkcS2VktrU5ZaGzO1On2eNxNgAkyACQREgEXjgEBzN0yACdQOgST5GsfpCmjUxOLqHY8vdxBS4xR1a/dVq/UtRgRh3AVyeZW+MFQUAo+KL7FdZlw/XAIQQAfWbxDievboYSEW4+9aL7A4qXTOFfYm+BtiuhSJq9nI5Hn4d4jIdov0FIeFDex84v6+YTR/CJ04iI3aZ0AcxeOL8vWEW1217I3NfsZ232m4PhNgAkyACTghwKKxE2r8DBNgAkzAgkCSfI2jnmwGYjHEPXwZR5K1n/7r6/T0vr304sHnKZ/P06Vdc+lji6+ljy++LvR9C3EEPoz9w6VEXcnG4cKM1vrI+xY72QAyGrJUHhfRgTP++xKqP/i8k6b4GZcE/EgU6HJIiX28OpFdEBNNqt9xFOwoVNYP4jH8jhuyaXErJqq2IdLL993eEZVpJbIOGFw8ozGRc+NJMQEmwASYQLQIsGgcrfXg0TABJpAQArCnSMq1yY7WnPB2jWIyPBm9C7EYvO/57d+ib219WHcXffjKBfSd7bups2tuqLsMAgLsKkZLY7H3Y9RGd58bGKVyJbneGxC08Kf4re9Q0113hrqHkto5EgYi0tfI+xmi8dDK1dS0awdbRvi8CYwS2fncLckEcTgExOdo3JOIwiO9tTEbK+9meVCWTqUiuQY4fG1twq2d+Nhmef26YT9jr4lye0yACTABJmBEgEVj3htMgAkwAR8IJMnXWHrmDQyXfSCl1iQih185epj6C310aedcam9vp1+7/VZqamkleGGe6+2lX79jhYguNiuXdnbRE3v2hy4cY4y4qlyfTcXyiq28zhxn32K1nTe1lkhs+MYxyvzCNU4e52csCEiriIan9hpGc8MzF5YJHO3t33YC49MHDgmP57AKXmttzVnRvdZXPKzxOOk37pZEUpzF3KPkOY3DOwjb/UMlJ8uSiGcQEQ4OXJgAE2ACTIAJ+E2ARWO/CXP7TIAJ1CQBJGg51TeaiLkjogWRUvBhDLq8cuQwffaO5fTWiZ5pXbe15em+jQ/Q8pWr6O7uNfT4ozuVhgfh+B9fflWprt+V4AHc1pil3hhF1Gl9i3E4EjdPycyRw5PJ7OC/OnzzUkr1TySNk4njtEnksAcyPT0TieU4IZrfLwnRPjx04THMxV8CMqGdVoDHv53ds18kuotCkX7HI8WKsIeJg9+x9jZJXMZsttZYA4iUY+Pj1H++RKWQb5S0t2TFzaek3OZy8jpjP2Mn1PgZJsAEmAATcEKARWMn1PgZJsAEmIACgaT4GoflHwjB+NZlS6jfQqj76v2b6BubNlrW0y7Zg5u30vKVqxVW0f8qcfG7lONEsipEncVNLMZKNu7aSR3r1vi/qAnvoXTlAiGiZ3QOcxI+9URNDxHFp15+VSR4hHA8ls8T1haR3FEq2kRtSLAJu6SoFilyY4xRHqcTfvLAMOzPgDntDXSmfzSWn0FOuFc/w37GXlDkNpgAE2ACTECVAIvGqqS4HhNgAkzAJoEk+RojUzmiYYPyrD3Rc5xuvH6RLSHYzvIgMR5sKqJSRAKipiyl03XCriJK0XRa32JcB0bEX1zL7IXzYil0RjEB3MD6DZMR23HdDzxuIvhID0fkAM1qPWSitmw6RYXzpcj5HcfdjsKKP36uFfCHRsvCqznIz6uwDrFV2ARVB37fyIvAhQkwASbABJhAEARYNA6CMvfBBJhATRKAuAYBMAkF10GRuC2obOr3bviyYUI7L3hGTTSWc5LJ1noHRkO/AowxSREEV6yDWnsv1teojUtmNfnZvO22IbzCigERnuJPWztljx6eFg0NC43s0Z/4LngjyhRRpyiwJ2DfYNtLGrsHZLRxnAau9dqNgt8xDtakfQPE7CBF1LDWLSzxGIIpIp57E/K7lZP1Yz9jJ9T4GSbABJgAE3BKgEVjp+T4OSbABJiABYEk+RrjSxqiu/xOPIMv35XiIF0x70PU19fn2x6LqmiMCYtka6314mpzWNeb5TVkHHxgDHG0otDbPGFEGo8uvtZQfNWL8swdfI5mLbtpyvDRRv/9D9DMZUt88VWGcAgfWxR4CcPbuWHfXmpS9An37YXKDXtKAOusZykSp2hjLRDpCR9GxKscR1zshTzdSJrGZPR3QzZNhSH/Dxdl8rewPhv94min3dntDZRJ19l5hOsyASbABJgAE3BMgEVjx+j4QSbABJiANYHTfSORiBi1Hql5DXxB6WjJ0emCP8nw8MW7qR4RRBn6t9feoCvmfdDtkE2f//CVC+hvDxzytQ83jeOLOK6fVirj4ot4UJFrMoFTqTIWW99iM+6tmzZOs1SQycAQ5Tuez0/6ucpkbHimuozcvJT612+gGXcsV4r+NRKOIeKdPnCIxvPtk10YicYQdeEjPGfhfM+F4yjaX7h5/dTis3IfC0/izrkiUhxR4w37nhSJHvHviGzPb1g/7TBAHhpEzctYZR21Ea/9Ad+IkDcxonIzRIWXX3Xw2YEbSelUimDNVSyP+dJVR2tO3HqJs02SGzDsZ+yGHj/LBJgAE2ACTgiwaOyEGj/DBJgAE1AkkCRf4/d1NNDJvhHPBczq5DpvvvkmLbpmviJhZ9W+uH4DfWn9BmcPB/hUUB6ZWt/ipFhRGC1T8ze3COE41V8QQlrf5m1CYNMWiLN64hrqwCqib8tWIfSirfw96y13hFm0MYQ8/JElc+Qwzb5h0ZQ2MU6Iy36JxpYT4AqRJjB0+yrq27JNaYwQkufovL9W70OlxiJUSYqWGBISdfolWqJ9GV2bqqsT3spJuYnhxXJqrUP8WAe/fg/xYu5BtNFUnxHiPBcmwASYABNgAkERYNE4KNLcDxNgAjVJIEm+xjPb6gmCYrHkTQSRUSZ2JMHzUzS+tLOLnjlwiPKa6M4ob058CUeUt19RdBCm4ROJhEZJ8C32Yi0vun6R8BbWFkRyQrjVRmMaCXB6Y4Cwp2f3UN2uXpuoA1GQLSO8WN1ktmFH9G3vXjNtL+rt7ziSwvslPF/9ui1R63YUqntCrsPY+Dj1ny95cuMK7Ge11YvD61ot+F0AvztxYQJMgAkwASYQFAEWjYMizf0wASZQkwTGxsbp3d5kfMFpa8qKiCq3XoJGYrF2g9y6bAm9ePB55T3T1pantnye3jrRY/nM43uepo8vvs6yXpQqSNsIJCP0yldaZR2ixCCosejZQ8i+z23fTSO3LJ0yFPgMqySMK/3SdVR3/E1dOwvYXSAaGdHPiDRufGpvUNPlfiJGoHD/JhpdfB21bdpIDTb3gapwbHTYAeEYNijVkfcRQ6Q0HHjftjRkyEu/Y7QJGyVEF/sZyaw0wZhU8vJzBuxzWdhflGIye++HyX7G3jPlFpkAE2ACTMCcAIvGvEOYABNgAj4TSIqvsdus5fiy19qYpVQdCZ9es4jlx3btoC+sW6u8Ml+9fxPddMtSgthsJBwjwvg72x+jK6qsCJQ7iUBFCPf12RSdGyg6vhI9cY07RzICjK9WT13Ypl07qX3dGt3VhpXF0MpVU37WuGsHdaju1WXLiPbsicBOCm8IsNqAQN6y9eHwBhHhnqW/MJIRXlRlU6IybL2DDb3n9KKNUS8pEceYC2wk8JmDzy63PrtevPeqrF8S62h9p92I+F4dXMeVMT6753Q0xHX4PG4mwASYABOIKQEWjWO6cDxsJsAE4kMAUUluo3OjMFt5LfeUzauhTv1yv75pI31DJwlZNYuPLb6WntizX/xzodBHj+3aST89epheOPi8iD7u7JxLqANRubNrbhRQuhoDIrfaGrPUazPZkNN1cDXYGD5sZjlxZs/TVKyKUtfzII7htAMbMgRjRFbDqqPaAiSwQUSkI6MEhBDWUZzwUY0WNtu3g2s/T/0bH4gIJffDyKbrqK15wgfWrlUC21G45y9bcCsez2zL+e5X7d1svW8Jke6wXuHCBJgAE2ACTCBIAiwaB0mb+2ICTKAmCYyWKnS2v5iIueNq5Nn+UaUoVy9ESivheMnNS+nBLVtj40/s1SawK2TAtziXTYuM80k4wPCKo1E7l8xqmvYjRIAOr1wt7CNS/X2U6emh9Injfg/F0/ZhfQAhUs9b2W5HENCRUFDFmsNu27VQH+I5Itfhnw1bEi+LjFbW+m9Xt292OGInsZ6X4/a7Lfjs4pYF3gfhzz8+bt4jDuhgccF+796ujEwk2JBNi1tHql76tZ4Ej/2Mvd2H3BoTYAJMgAmoEWDRWI0T12ICTIAJOCaQJF/jjtac+IKHL91GRSsWQ6B0K1K+cPA5enzXThE5/NaJ4/ThKxeI6OGbbvkULV+52vG6xP1B8cW7KUvpdJ2wq9ATQLz0k4wrr7pCH6V7emg8n5+SxE7+u1YAhpAGITiqQmilcy6Vu7ocjw9C5fm13TTjjhWulxPRqLBQ8EKAdj2YCDcAAbd05Ueo/uBzk+KwVtTNHjlM8MW2Eo4RfYw9m1HwbQcOFeF49sJ5uu3hcOH8Xd0Rpup8aNpoV4jBRp9POGhrrM8oH5I6H1HtPjlhlZSldAo+xUVTn2jp63+6MFqzwCCap+DvxYUJMAEmwASYQIAEWDQOEDZ3xQSYQO0SONM/aurhGxcyuB6JL29GydjkF+3h0TINjVaUIpLjMveojhNrgj+9A6OTGeqxRriOnaqrE1/Ga9W3GJGw+COLvPYPcdhKpAtrvTFGvfGdfOmYGBL8lq1EbUSKQtDVS6SGn7HQ6//qlv/+H+jsz82nSltedCYPKYSgW+WrriIcn372kDjQgBex6t6FcHz6wCEaz7frTlivXxwsIBle0ouMds1lpvod+5F0NOks3c4PEeCtTRnRzMBQWVc8RhK8TDrlWSJYt2MO+nlYrFzUzn7GQXPn/pgAE2ACTICIRWPeBUyACTCBAAgkxddYJrODRYW2cERrAJvIpAt8oexorSeI9Yg8hhCC69eq137DHb0/vdtKUOfPEAxbhe8sip74N9Y1l1IzOoh+/OMpz8MOAoKhVaTpwPoNhD8QnhHBalXfbOpGnrsB44pcdypc9PyvzSbSsG+vYQS4VsiF0Nv46A5xKIBidQAA/+hzO3Ybdq1tD/3AgqWWilawHCmOEcRJHHi6vSFTSwy9mivWAp69MklrqfKefwiS4JUrY2JtarGwn3EtrjrPmQkwASYQDQIsGkdjHXgUTIAJJJxAknyNcUXy3d4RsWIsFkdn4yLKu7UpS6XyGCGy3cqvMzoj92ckHatXUONTe/1pXNMqBETpHauXuAwCrjbaWT4KUXHWspuUxwfxTy9yuLoB+OQOrVwl/jl38DlbfWjbQn+9W7YKD2T2LiZJDlfJAAAgAElEQVSCHQeSICISHOvduGsn5Td82TDqV8UeQsvbaq3kYUD1ehtZTGjrJS2xnfKLxkbFmW31VJ9N0dBIWfjs1vr7pw10nlfV+73iony9SP5a1gjJnncc4QZn5esJojoXJsAEmAATYAJBE2DROGji3B8TYAI1S+Dts8OJmDu+XMPTGJEvsD2oZfuDKCxo9RdsRMqxFyeJKFsrGwfV9YNQKMVC6Ss81tZOla6uKVf/9QS83s1bhehaHfELmwgUq0hROUZEgarMpzrCtW3Dl6ll68OqUxX19ATK911+sbItgq3OYlIZ6w+2WqsHK1sJCMe92x+j0gU7CkS/N+x7Uvhra6N6YV2BhHhWUeF666IaUW8kOscEv2/DlL66+CyDNQLeP5vqJ5LfcbSxb9gtG9Z6Tw+NlsXvG/Kw2vLhBFZgP+MELipPiQkwASYQEwIsGsdkoXiYTIAJxJ9AEnyN8QUbojEKfI3NEuLFf8WiPQOZcDCbTolEeFrfYkQkIdN6fw1bVKiIpRACx5Agr3OuiB5F1DAE3mrbCPgJy2his13R/M0tlL9n/ZQqEA4h2HWsWzvt0ZH9f0cNS/5fpY2m4kWMOn1btk1pT1WQxEOYP54fuWXptDEFFbmtBMPDShBvC/c/IKLS9SLCtV1VC8cQspreOUF1n7jBVPDF+mMdqsV7KeSq7FU5DkQNY30Q9Yxix4YkyQnunGwJra3PwHB5sgkpJOMfjDx2nfTHz9gnAPG4tTFLLY0ZGhgqCTG/1qLAYQs268LvXfYJ8hNMgAkwASbABNwRYNHYHT9+mgkwASagTABfSvGlJ45FCpTwyi2WJzwF+wbjOZc48teOWbsWZr7FtZ7QCSId7B+0lhEQcCGKQvzTSw6GZy7+wCXTtsg7r79tmExsytr0HKc518yf9vypZw/RjDuWTxMWR39tNVUq40rRxrCdaN66Zcp8qjsyErchLOqNS/X5zJHD1LJ1i9I44/j6gnAMvoj6thKOxR568hlqmfdB4b0KUZHefNOxfzSE3OqDBjC08k3WHhDA61o1Yv3c9t26hwJxXDc3Y5ZJW+HPb5QoVPodQ6REXoJaTSjqhrMXz+JwBtYheL01ZNPCPqSW/PphO4X9yoUJMAEmwASYQBgEWDQOgzr3yQSYQE0SiKOvsZ5AmUHStZYcnS5MTYZXk4sa8KSlFQUS3mkj44yGIaO08IVbG41cKPRRPt8e8OiD7w4icOO+Jyl94jhB7EN0plnEsJ64iijkky8fUx68ni0GBD4Ik3rRxrA8mLF6haX1w+Cf/hkN3PjfhKhpZDdhJBojAlovgrp6UhC3U/19BNuF3MHnxX+rWGIow4lwRYi0iPxFlLmVcEyXXUYDP3iGBuZcKmYEP+KWbz6s5DmtggBjOX3gkKWIDesTJK5TPRSQYjTaVomcVxlr3OrIz7RUXZ2yEAzRsqUhQ7BJqMVI17DXuL0lS8XSRBI8RIe3NWcpnUoJa6xieSzs4fneP/sZ+46YO2ACTIAJMAETAiwa8/ZgAkyACQRI4J1zw7G4Wokv1tIbFwJl9Rdl+Oud7BuJxVwCXF7fumrIpQnZ4xHljchGuxFvldFB+tbWh+mJv/pr+unRw2KcbW15uuKqBbTk5qX0ubu6fRt7nBpu2rWT2tetmTLkYSSE27FbeRp6HrMQrIdffY1ar/hPIipVWyAoQ8CzEirHvvEglbrX0cCx12jWR+bpjkdPNEa7Vm0rT64GKkLcH29rtxSAsaZYNz9Eda2NhNn6OY02tpukLynLLu2VVA/dtPOWB3B4L+4fKtJIMfliZVTWfU57g0juWm3B1No0EX2bZAsR7DvMP5Wqi8py8DiYABNgAkygxgiwaFxjC87TZQJMIFwCcfA1RlQV/pgJlPA1hjUCon+4+EdAG+ltdo3abAQneo7TrcuW0Fsnegyr3Xb7KnqoygvXv1mF2zKiQjM9PVS8cgGVLyQokyPS8ySGh2z/xgeUB20U9Qn/4tLr/0Gtv/G5aW0Z2VdoKyIKdux376WWfz1K6V+4xlI0xjgggPshairDiHFFK3sIP6dWLf5fMqtJtzutaGwn2hiN1ZpwLD/X3Eanst+xnzt/ettSNDVKggcLkfaWHFXGxqj/fIlKlfFgB+hzb+xn7DNgbp4JMAEmwAQsCbBobImIKzABJsAEvCOAbOzwRoxikdYHKtGs0l9PxSIhinON+pggTEDkQFSbmW+x1TxgQ3Hj9YtMBWPZRtKFYz2P42pBWM8b1knyML12pMA3e+G8ad7GZvYVcn1k0jSI3vBq1isQOksXhHCIiBmTgwKrvRPmzyFouhk7OBQ2bppmB4J/RxI5Vf/fsBhUJzQ08iyu9ifWq4c5I9mjHs/qxH5hzdfPfo0setz2KcVKJIPFe3StJWdzy0/1eXBubsxQ70DR9BH8/pJvytJIydltHNXxBF0v35wVvwtwYQJMgAkwASYQFgEWjcMiz/0yASZQkwSi6GtsRyyWi4boF2Q0R/QrF28JaH2L3fpnfn3TRvrGpo3KA3xw81ZavnK1cv04VWzb8GVdL2DYEUA8g5iY37B+WqI5J4nD2v72B9Sy8rZpeJBQr2HfXl1vY0SXwg/ZSCyVQqKZaByn9TAbq9soXxlFe9H1i6Z5RSOqO+pJ/bAnz+7ZP4kIBx4z7lgxJWpcHiJoORpFG6MubFP09la1QJ2UPYR5uLGjUOWAA9Sm+gm/Yz5EVaWmXg+CKZwZVNjigADe03I93H5+qo/Sv5rsZ+wfW26ZCTABJsAE1AiwaKzGiWsxASbABDwjEBVfYwi/7c05Gh8fF9nI7VhN4MvZ7HwDnRsYTdx1UM8W2mZDcj1UIr1VmkaU8aKF86m/v6BSXdT52OJr6QmNWKX8YAwqzlk4XyTEs1uMksvptSPtRLLpFNVd/nPTRDqZuMxJtLEU9yA6Q0CsxWJHTAZrRBRX23MgchzR2EbR2m64QuyF9YmTfabt18gSJXPksEhOiOSMRons9BIxYlx9m7cZHkroCdBuOEThWRy+QUBEFLDf/sNav2O39hdRYBeVMUjR3y7TpIjHmMfFMxqjshw8DibABJgAE6hRAiwa1+jC87SZABMIj8C5ASTRqYQ2AK1PrhvrA2Qxh5cgonmGR8ObT2ggPepYux4Q4cseeTK+cPA5us3AxsBs6IdeOkadXXM9ml10mnEqGkPAQxQyopHH8+2GE0JEHJJHyteDnlWAjCDVS5aHhs2ijWXitawQDtUPAoJaATuCbhBjEskHV66OXxLAyy6jk3/1lKEobMXOKBL9zJ6nRYK/i25YpNtEkoRjRP821mfETRi7SUOt+Jr9HFYKMjlb32Ap0L7djDuKz4JlR0uOCi6SDsrP1oZsWhyMx+33FNhTzWjNRXF5eExMgAkwASZQQwRYNK6hxeapMgEmEA0CYfkaeyUWaykGcf03Gqvm/SjADiIjxA034r3RyFg0nkrGyBdWdWWlX/DIzUuFiCwjPeVroDpC3Ei8k5HLetHGaBv+s1H33FVlFna9qAnZZjyk3/LYvfdSw4c+QHajK7VtG0Wy923ZRo27dlLHujW6Q0EEMw5Jzt/VHfbSOepfvhZxKNs/FF7ugIZcitqacuJwmP2O7S+lTFroleiPA+625iylUylXryv7M3H3BPsZu+PHTzMBJsAEmIA3BFg09oYjt8IEmAATUCZQLI/RmUJwXsB+iMXayeIK5ay2ehotjYX6RV15ASJQUetbPDRa8SUizalo/OOj/0YXve/SCFDydgh6ifDc9ACRb/TX7qDGGz9Bvb/4cRpubJ3SnJE4B5sJkYxt105qeGqvmyHwswkjgGh2HBrA3iSVqqNSeYzGqjKsQdi1KrDHqLblwDPS4qR100bTCGxpo2LVT5R+DqEWPvtRufmitUjAmN4+eYZeOXqYOjvnUls+T3mTWwtR4hr0WPyMEtdGgg8MlQm/i0W5sJ9xlFeHx8YEmAATqB0CLBrXzlrzTJkAE4gQgSB8jbWRrMOjZfJLnJRY25uzQujoHSxyJnmDvZZJ19GM1nryyrfYbEuf6DlOi66Zb2vXt7Xl6bXX36DG5rbEHgAgAhi+s+WuLmE50bjvScK/wSvYje0DrCeKi68j/I3ih2eurcXkykxAh4D0SzYTjvG6OH3gUGz4+Sk0uoXwvcf+QiQjffPNN6c0Bf/4L67fQB9ffJ3bLhLxPET2fFMwv0NAPIa1VmVsjKIqHrOfcSK2NU+CCTABJpAIAiwaJ2IZeRJMgAnEjYDfvsYykjUIcVLLHl/e4cOH+QXpJRn19ddGe+PadFCe1nd3r6HHH92pjOfOtZ+n3/uDB0TEXjZTR7Xky+nWvkIZMldkAiETePvMkBjBRdcvouzRw9NGg2jmky8fC3mU1t3jfbW9JUul8ngkbSC+vmmjEIzNyoObt9HylausJ5vgGlhHePdO2HmUA5spfk+CUD1SqgjxOEq/szTVZ8Te5sIEmAATYAJMIGwCLBqHvQLcPxNgAjVJAFG/8Kz0uoQlFmvn4bUfodeMgmxPXlH2y7fYai6vHDlMNxokvqp+9tLOLnrmwKHJa9MysVvhfCny13itOKj8XE9AQ3KwdM9x11HIKv1zHSYQFAEpGhsdlMiEjUGNx0k/MloUOQLwJ2pFRTCWY/729t100y1LPZ0CbprADkNriYHo5qjZYoSdF0FrIzI0Whb2JlWOMJ6ui2pj7GesSorrMQEmwASYgN8EWDT2mzC3zwSYABPQIeC1r7EUixEpAzE67IgZmfkcVhVR9w30a4PKNUH0FESNsNYE3sa/vnoF9fcXDKcKwfg72x+jK65aMKUOEgh1tNYT7E2CjADza03M2n3f5RdPs6dA0jq67DKa2VZPxX95iUp/9w/Chzh75LArK4sw5hdEn/B5Hl65mpq3brHsDoI8bBDaNnyZMid6LOtHpQLmiOLGyiTMuWD8sJ5AIkcciMxctmQKf/z87J79VKp6LwhzzNV9R9mOAmO1aw2E999/fPlVTxAXCn1074b1ujdMYD8ES4zPRSTRofw9oTBUpJFiuP7CUROPZ7c3EOysuDABJsAEmAATCJsAi8ZhrwD3zwSYQM0SONk74lpInLiemyP83Xe+SMVSuF+8tIspI4iiGgnm18aT8w7aGsRsPog4/uwdy+ktHXEO0We4It3ZpZ9gC1+mO1pyhL9hOxKFKCyv1w7i2Zxq/+f2dhp8+7SwWxkYLtHwaGWyWyTVu/gDl3g9jNi3V7h/kxAjZ9yxQmkuECjjJr6WO7vo3PbHqOnRHdSy9WGleWorYc7nduwmbUK73MHnqWPdGsO2wFWKuPDjRmlpyhAkpcHh6ZGRSISHgsMNvWSLEOzxBwV7HyI/bCowJvw71jCKBe+tiMBEcsCo2QloedmJMpbPPbRlG912uzubCgjGty27SUQXmxUIx1+6sP5hrXNUbyRJK6mGLN73w4lixxjmdDSEtTTcLxNgAkyACTCBKQRYNOYNwQSYABMIiQAigmFT4aRoPXKrBS0n7fn1TFhehX7Nx6zdOKwJIuBePPg8QVyASHzFlQsMxeLqucov+b0Do1SqjIeB2Lc+kQRvmtB59dU0cPCfpkVYQ2SDwKYqjPo2aJ2GIWgiGZ8sUjzE/0uxEf8N0dsPsXb45qXUt2Wr8MqNU/RwNUrJUSRN1DloQYT0mT1Pi32Q37Be1xfYaN2NrB8g8CLq12hdejdvo2GN9y0OceA9jkMNfJYY3ejQs6DA/E55FNka1P4O28bAzjxvXbZEvM/aKffeey+t/+17CHZATg/m7PQbpnAc9UhxrBtu2bQ1ZymdSpm+vuyssWpd9jNWJcX1mAATYAJMIAgCLBoHQZn7YAJMgAnoEHDiaxwHYbJ6qjJSdWxsnApDzr8QR3kTyS/BURbwveCH68SI9MPejaKPqNM5Nu3aSe1VkZ5Dt6+iwbXdlDlxnCAeQiCMui0Fxty3ZZslBq3gOLz/76j1v91o+YxKBbdRuCp9aOtAvMWfJhvJHs3E3JGbl9Lo4uuofMGaAQcEEMD1hFwpHI/n26l100bxR7VoI321z+jZRWh/rvecFLcgNMIOqFpw1I2iJ6LezVuFlUgcinx/jcuBlR3xVvJffvsq+ta3v0MQDJ1469qNbvbSEkN1D+F9B4nnUqk63b2q2k6Q9fCZ19qUEV0iuj0Iuy3c7IG9FRcmwASYABNgAlEgwKJxFFaBx8AEmEBNEihXxuhU36jS3CEWI9ITUWVx9Zdta8pSfTZFZ/pHHUdSKcEKsFIUEg8GOF3R1YQlSpZK5XFh2+A0Ki7ocZv1B19dJ1YDUZoDxmJXCJTJxDKZVNSmEsh4IBIP3vV5ITxD/NUrZhHAWuEY4iwOHuoVI0wH136e+jc+MK1LJ8IxGsHnQ0tDRiTyqj7QiWu0sRAZRbRnHfUNllzbOQWyqYjIqWj84JZtwgZIJYJcOxfcHPmwA7ucBzdvpeUBHRzE/daRfK+sjI35Lh6/r6NBCOtcmAATYAJMgAlEgQCLxlFYBR4DE2ACNUtAxddYRllFySPX6YLF4VqqytzkF+Dy2Dj1n4+PmKEyN9U68hAAPsdhJflTHatZPXHtHcnAnn/Oi+amtAH/WnjRQlyEbUS5cy6l+vuEsIjoZVWBUWVgRiKk1bMQqYSdxBFzH1SrduL4c6zP+bu6CeyMRGPMy0w4hvAMj2JZwBJR6SrFKDIc9iGzlt1k2I7Rc/JAB31rRdY4RhvHyY6ieq3v7l6jm4jObE989f5NUxLUaSNc8RljZglkN8pYjiMoi4o4r2X1muGgGNHSI6WKL77a7Ges8s7JdZgAE2ACTCBIAiwaB0mb+2ICTIAJVBEw8zVOahQr5oWIOMw9bt64cbQH8fNF15BLUb4pR4WhIo0Uo5OEUWXOEEuxD5tPvkWpyy9XecS0DoRhiMKwNoBvrVn0qmwI4mDjvieFgAxfZTc+w7LPkVuWTvE1VplYx+oV1PjU3ilV/U5Sh/aHVq4iWIO4mbfZ/FTnIMdyfm23YRI4CMcX3bBItzsp4up6Y1ssgJlwDL9kI+sNrPe57bt1xW68LtuacuJWCiKPcRsgTtHGiJpuqp9IQBm39xUsN7zjF1Un1jTZB21teTr08jHK60S7y7UcKVYMb3Y4iWzGcIIQjSF+w24hjp8RRksmPzucWomYvSVg7yO6ngsTYAJMgAkwgagQYNE4KivB42ACTKAmCej5GidVLNYuMHw421tyQtAYdpgMMOgNgyhp2IMkzc/XLUcZdT1aGqP+oZLb5gJ5Xr7GIKoN/9sbNHvhPOV+tdHDlc65k5HEZpGqqo3PWTiftMnrVJ+rrocxwpu3uPhagohc6Zpr2lTzN7dQ/p71Trtz/NzbZ4ZEUr6O7rXUUCVaO2lUJrCDoIrIbgiudryG0af0ssZ/V7q6poiyjbt2/v/svQuUZVV57/vVflbtrmfTrSh2k5uYcZqIBMjFEBs4JA6b1iuX9spLD41tJOKVhpirctrTxBwJnXQQI9qNEdIeOkB4idfuQY427VC50sSOJi0BDH1GMAmND7QfVXvvql2133f8V/UsVu1ae6/32uvxX2MUBbXnnGvO3zf3Luo/v/X/ZKLD+1rNE/2cCv/oW9x2u6EA3Ms6BQcTEI6N4ttpcyD/35Na9nLnhYJ++uKJTrh72QdPMOBz9nipGuknGP5k6ydk1913WULz5fsekfXvvLRrW71IaWQ/ElbRWBVPjXosuwXGD/F4+UhO2/+8SIAESIAESCAsBCgahyUSnAcJkEAiCeh9jXPZlIwvy2l/KCPDqlaPVuam3QBG5ZHVJIj4dmPX2V4JVNlMuL1H9ZniSsjo9ug+1qgEYohq+kxit7y69TfKBvXiXhC3Z9/5Lk1A7syAVlnO/fB0hrjrVXFBo4zdXrG1yrWz+Fwv4dhoTKvZznp/5M5xehXag1B+fO8TXQ8GVPFKHOrk171NsgcW27AgBujf7ysqvw/scLJiG2E12xe+xYf/5Tl5w6krZGJiQsZXvH6hKJtT0fgre/fJW9deZGdJltvGxYrKyoLV75XBLLLjl3qKWxlDtaGfsR1abEsCJEACJBAEAYrGQVDmPUiABBJN4IUXj8gZb1zdlQE8YSFMZtMpTSyOSuatF0GF2LhiNC9hzFKd9wfNacuElUaUfXu9iJWVMdRj5cWZeiBV5q3MSbVRhSTxmLe+UFg3SwGnHsF25tTZ1qwIGvxzIfK6sXNQQjju7ZVg62bNXvaFAApGsL1Qmd9eCPGdBQatCseYCzKINc/sl4+YLrWXcNwrGxzC8eR9j2pZ790uiHjLHvlbSf3+B5Y0+cWhF0yz0U0n76KBsiyK0pMnVpf711/aKX95+zYplYqLuvzGmWfJx27e2jPDGB32ff1x2XX3TvleR4HF8fFx+eTWP5b3f/AjcuNH/sC2h/KbzjxL9j950OoyLLfTihcWsloht8npWiwKpVpdPJ6gGtUKN6a0/2eoNewd/CNxAP8/xIsESIAESIAEwkSAonGYosG5kAAJxIrAT185Jlu37xJ8/+bDd3RdG8RIPNafJLG4E8Y4/tBKDwgEdPhv9vOib7E7+vjDeWIkrwmzenHW3ajOe6sMxm6FJI3EuNl3XCqTuuJmzu9uvyfsGpBZapT5O7XjHhnvYo9g/07x7aE8ijVrjlWny2tt+MsaUTHKxu2V/YsxIOQeffKgJl7bEa57CccQq8e2fsLw0ABrRkG+XlYT2nvhN//TEgG7m69yEDskKRmp8Dl++eWXNKQQbI38izt5P/rQA/JHJu/397///XLzJ2+RN635dcvhgocyBONVJrY1lgc82VBZFc37Lzfsdo9Ne30Rw3KlYVk8pp9xbLYAF0ICJEACsSJA0ThW4eRiSIAEwkAAIvEXd++RPfsOyIb1F8hHNm2Q005d0XVq+AMLYmnSrzCIB8q3OOl/9Lrdi8g2Q/EjXP3KNlN+k0P5TM8MfiNBr3jb7TLz4c1uMbjqD5/lzuxUiJf5joxDVzex0FllJiML2ihbFuKolSxaC7daaALhVMsaPlnUb+XF50v2+WftDLHQFuN0m7vVASE8/+KHLyxp3ks41meqm2WQdw7cy3IC2eHIXO6WbT654x6Zfe81XZc29ND9MnHj9UteDzrbWO+Fjids+n1YaHUvBNUOGcYfvPYqS7e76aY/FGQe33rrpy21/9yOe+TKHnvE0iAdjeJoL+KEg74PxGM8rdRstcSKeLxiLC/ow4sESIAESIAEwkSAonGYosG5kAAJxILA26/+uLaO3Xdu6SkWq8W2Wm15ZXIuFmt3uwhVOGeyXJV6M7iUY/oWu42ccf9+xxOF7vDIey9BamLjVTLUUYQNxcUgWPbzMstkDWpuyEJF9mrtzLPkNb97/pLbei0aQzDGPfUWE8te+YmMvWudyH/8R1DLXnSfTl9j9aJZAUF9PwjHiClE/8bq1TJz/WYZKBa7FtbrJRybidDd5qvmbXQgEWS2sRLTwvI0Ql82lclN7foU/+CfD8v/++jfyp9v+9OeI1v1ULbDBPHEIWGxUpO5mj1LBjv3iWpb/P8FLDvm6k1NPDayusIh52vHBzVbD14kQAIkQAIkECYCFI3DFA3OhQRIIBYEkGF81+49mmiM6wfPHJafvXJMzjt7jfZldB2dmgtUJA0zaPUHKDJU7XoC2l0XsqPgQZhJzVtj0LfYLkHz9qoQV6W62EvYvKf9FkaF7sxGee05Z0j65GPjqm3QWZdGcwyLaGzGz6/XVYZzc+P7JXf5/yVTP/2lLL/wt135OTuZq95mQt8fwi0yoM38pc0E3F6Zw34Jx92yjYPIsA/DEyVO9kGQff7+6e/KFZett3XLK66+Ru7ceY/08lD+g+tvkCvfu9HWuGaN1cGgKixq1j6pr6snXwr5jFQMDjPpZ5zUncF1kwAJkED4CVA0Dn+MOEMSIIEIElDZxuXyzMLsyzOz8tiuWw2L4qFwWBj8X8OCWj3q6lcmGn2Lg430fFHBrNQbbc0qwo9H0VUxLTviNPyDX/drr18C4+c//tlCIbVgSb16N7MsVqfzghiLy0zsdDq+H/2UgNweHZfBjqxwP+6HMZF5i2zzbhnndiwz/BKOsX+XX3tVV8uSbtnDvTKVzebqlDc+A8aWZaXVbgt+3/nxGeB0bmHr99nbt2nF8+xcb1h1uvyDzkLl6Cs/kRO//Kl28Porb/wNGTn5vrczpllbHgCYEVr6ejfxeKSQFfDkRQIkQAIkQAJhI0DROGwR4XxIgARiQUBlG9+waYPma4zrPdd9SkaGCwsZyPqF0td4adj9KqqjMqNgXZDkYj39eKONFrKSz6Y8zeo2K3TXa52Z555dYrnQzb82CF4QAeHdO/j1xzUh0KmPr36uyFatn/mbUlt7oVTXXiT5p78rY7fcHMRyBGJvlMTpTm7H9z4hTYNiYd2ywGGt0S1mZlm8TjOOMedehfa6FdYzsmXR1v8rvyLV7/+jTGWWefbkhSqOyc9ca287L0Rj3AkC5chQVgZzaSl5aB2BcWG3ACuFfnnWWyMZ3lbq4Howm9b+PwSHnvQzDm+8ODMSIAESSDIBisZJjj7XTgIkYItAaboiDzy2X7514JAm/m7Z/D5Z88bVXcdA+9HhwsLrKI73tW88Jd985LNL+tDX2BijKqgGPsWKu+w0+hbb2u6+NUYcRoeynvhfqkw3ZC/PVpu251x46AEZv/FDi/rNvuNSmbz/EdtjOekAkRjicO7p72pio5dF7iDYHtv7hDTefJY2Ndxr+O67NF/doC4rojH8o7F+xMIvgdnKPIyYGNlDQNxd2cXb+eiTB3syNitS1ysDGHOZvO9RqZ+MZ+d8e9mZGK2jl9A8/cK/ytCv/5rmB+72CRj1Hg3apz6oPe7HfbwSjdXcINrDhgmXlYJsvdbk12GuHxyjMCaE4pFCRvLZdBSmyzmSAAmQAAkkkABF4wQGnUsmARJwRmDTR8iDn8sAACAASURBVLfLT185JsgehnD87QOH5Ku7bu0pHKs7od9Nt3xBXn/qCtlx202GE6BFRfe4uMlQdeJz62yHsJdVAio7GBn2pUrdareFduoAAP2V3QWyc4c04XFKkF2JQmNGWaL6mxlZQExff4OUtn3G9pysdNCLxF5lEve67+SOu2X2vRs1odgvsXhKRJ5BgioyXk9+WWGh2hzbu08rtKeJiwcPyNyjX/VcQEZMkUEOawu7wrxecEX8YEuRefnIkiUe/c7BBUG3lyDrRjiG+I3sZy+E426+xrjHL374gqQmJjQ7CRzclWbqtj33tWzUZVlJDQxodhT0i7f+rnDiafw7ay+Ux/Y+0fMmqgCh/nPT+qxE1Oc2M8btUDNvSz9jc0ZsQQIkQAIk0D8CFI37x553JgESiBABiL7rrv74Ik/irdt3yfefOSzffPiOriu5/7H9mtAMkRkXiuOdduqKru2npmsCT1ZeSwnY9U+kb3G4d5F6dDqbGZCpaWuiUrcDAAjG8HbVXxD74EfbgDXDmWdJc/XqJT7FRuKemY2AHapBiMTVtRcKMlSNhEwwgEftxI3X25l2z7YQ5HG/+0pF+bSI/EdH6/8sIv9dRC62eMfiA49K4ar3SL3Z0rIglbiI7GPE1asMZCWgO/GKhpBaee81kioWpfDwA0tWZuQD3Es4RnZ1N69kDN4r49hMOMbByURH9ryasFoH7g0R/ZTLLlmybzr3vxIaIRQi89iKFzHFRYubv0ez3z5njfzE4HCiW5ev7N0nb117kemNOz11rVo0qQK1RQ9tLkwnm5AGOFyBbRYvEiABEiABEggjAYrGYYwK50QCJBA6AkaisfrZti3XLfgWY+J6W4rtOx+Uwy8e0V5X3sZmi8MfcWUH2Zdm48bhdWVtcKJc7Zn5pjJR7QgdceATxTXgj+VCPq1lI6JoU7erV6E7q0XJIJQpARli8rK7dy7xoDUT9HoxhtgHmwkInkFkEmMuEI1R8KybMOzUmkEvNEJkxH2QEYzsbSuPz98rIpusbMjxcWn9n5dJ6by1MvvOdxkWIPRCQAYH2Edg/q85Z42hyG5lup1tIKJjXKOrm3BsJvxiLDPh+MT9j2jxMLrAa/nGq3rafUDoxr4Z3Xqz5J5/VhqrV2v/jcz0zkvvjYuDzV7vU+UZb9bOCesk9dn39cflgx0HYd3Wf931N8inbT4doTLBc5m0mMVKxfR4qcqMcR824YqxPP2MfeDKIUmABEiABLwhQNHYG44chQRIIAEE3n71x+UtZ68RiMTq6sw2RgE8/Gz/w3f0zCg2w0XhuDsh+DOOD+e0rLdOH1sU/IGVRa3RXJS1aMabr/eXgCqUBf/UTg9VK4XuXr/iVe9wtytBpiUKxhllJneOrURiZMRCLPaqcJ0SZ61aSvzi0AuaN7Nd6wWrrH7+458tiLlWBGM17tdEZIPVm5xsB3EaQiyEaiNR1I2ADLFWZfgaZQzbnKrWXFlfwDLCaL7dDjTcCse4dy+rC3gvT1x7ZU9xHPvGzMJFzwTZpsiKRFY4Dnn0WcdKWPa60KWTmMSlz6MPPSB/1CVrXK3xiquvkU9vu13GxmAOY/9SnrroafTEh90nfOzPINk98L553fKhZEPg6kmABEiABEJNgKJxqMPDyZEACYSJgJEg/MKLR+Ty6z4l9965RROUkX0M7+M/23KdnHf2GlfTp3DcHV/n489624KpmZrU6t0zVl0FhZ19I4A/npeP5DQhanK6pn23WujOy8xR/QI7M5ORjQmLAi9FYgikSiTFdyXiQZB+7blnWOLtNpsYNhYQPCGoQqjuFL+V7/DLR16S8y3OCROHz/G/W1qBcSOsCwJ+be2F2tw6BU43ArLRHVEEEfdy4n2M8YxsKmBRsuKy9YYHCn4Lx72ylTWRcMc9mu2G3QuZp8ODmYVCebSjsEvQenv4G//l7dvke08/tajTG1atlo/dvFWuNMgMtz76qy3xJMdYIavZY8EnHhf+O5UaWPg8djIu+/QmgINu/N7jRQIkQAIkQAJhJUDROKyR4bxIgARCR0AJwvpsY1hR/M67PrLI69jLiVM47k4TIuOK0by02vMFevCHbmfmsZex4FjBEFBCMe6Ggk3IPDYrouXEpzaY1Sy9SzeRuLOlHdHYyVqQ0Tv3DthOXCSNN5+1MMTExqtk6BuPLxpS+dz+ydZPyK6777J1O8s2FRZGhYgPCwsIyODY1mVXenVwoLJve3kD95qqEtj1bXoJx/pCe93G7dUffXr5cBv5fav7uLJiSeGJj6w2FIrdGT35YSGkbGKRQLE4JT85ckSKpSlZtep0WbX6dIs9rTfT+x23RYQF76yzc9qSfsZOybEfCZAACZBAUAQoGgdFmvchARKIJAEIxbCbUJ7EKtt44+Xr5LL1F8h3DhyS+77yhOx/5LMyOuzdI/J6WMj8gecgr8UElG9x++Qz0sdKVUtFmsgxvAT0GeMDePTfwK6i2+whHA/ffZekX35J89+FIIp/Tx85onm24t/7cemzePWZxFbm4qXthrJm0HsTG83BSIBHBu7k/Y/Ib59zhvzEJsc/OVkYz8p67bTBemAJgThDRIbdhFU7j173UZyQgZt7+ikZvX2bnWkZZhtjAAi/sKroVrDw+N4nelpFmAnHRlnOauJGgjr2JbyY9cK7rYXKq08C4L1aqTbEalE1u/dh++AIqKxx/F5ttduazVMvD+vgZha/O4H1yrG8ls3NiwRIgARIgATCSoCicVgjw3mRAAn0lQDE4i/u3iPff+awvHv9BZpAfNqpK7Q53f/Yfrnr3q9JeWZWs6CAx7F6za9JQzguzsw/sp/0K5dNyfiy3CLfYvouRn9XqEJ3yC6G+IQ/qPHYbrXe0rLI3e59iG5KQM48/8+axYSRgOcHSSVwaqLxqtM1sbMzU1bdVxXRU9+9nI8VD1vcF3YK+ksVe/NKNH5SRPaIyD+fvAlyJs8+WTjPmTOrl5TcjQWP41KXomS97CK8yDjuJhzjvnrPa8QTWcZ2/Iz1VJSwiPdqqVIXO4Xy3NFlbz8JwN94YjgnxUpN5motrTgbMmEhHhv5Hfs5l7iPPf8eykkmnYr7Urk+EiABEiCBiBOgaBzxAHL6JEAC3hJQYjEyipFd/JFNG7oKwrCm8Cu72GhVjWZbjhbnXItn3hILbjR9FiqECggW+ktVeJ8sV6XepLoeXGTc3UmJwyiuhay2TisKFDb0o7iWkQ2Du5XY760XkyFo55/+rqRKRfsDneyhsoi7ZdzidWS09rogrr/u116/pMnPjlU8yTT+qIh8vssEIBj/xdoL5ZpVp2uivhsWjiG67GhkT6Ef0q1wjLHGN39Iy6w2unplHCO2uNxkFw/mUjIyNO9921m0EiIjipTOH/y4P+hxGQp2t0FA/f48Xqou+QxWHtbIJsfTH24P8GxMK5ZNKRjHMqxcFAmQAAnElgBF49iGlgsjARKwSwBZxTdt/by87cLf6ikW2x3Xy/ZJFI6Vz+JQPmPqW9yZKeUle47lPQGrhe6QhTw6lF3IgPNiJl5aP3gxHy/GmNxxt8y+d6Occtklku8onKXGV2163e/UX33dEsH2l985KJvv3ilf6SJWdhvvcyICoRjXJhH5GwsL/dyOe+RKzR7iu9o6vMy6Vhm9sCspPPSAK3EaIrye8+SOe2TWQmG5fgrHFvB3bWLliQ71eQ2hEUVJkbHKK9wErMYVhwUo3Mb6Ac7jScHYOTv2JAESIAES6A8Bisb94c67kgAJhJQAMo39tppwu/RGsyXHSzXT4mBu7xOG/sq32GpBNMxZPTqNLLjOTLgwrIlzEE14QAaxk7iqR+LdcrQqGkMYxOP8+uJrEP0gFs57Jr/6727n5LY/BNFf/vBwT9FYtel1LyPRGXYG/3rmWXL+uWdYniYyh/8dmbEnfY0/bbmnyMFDLywq9oUs2aGv/50mILvJQkZ2N7x8lTWDm4KDyCqG3Qj2QTe7kW5LjpJwjM9UFL3DUwDFGWsZxKoP1k9rAxsbP8CmEPjHClnNU3dy2pr9VTY9IKPL5gsg0u/YXrAoGNvjxdYkQAIkQALhIEDROBxx4CxIgARIwBaBuAvHmTT8bPOLfIvtAFKWB8of105ftvWPgN5ixOgxaLM7K5EjnR5wJUT1EgqNRGKzeanXMS4EzbFbbrbaxfN28NRNFYtd7QtwQ7Ns49Gtn9CKCuov5dX7J1s/Ibs6Xuu2iO+IyMUQDUXkfzv53eqCr7j6Grlz5z1dm2eee1az8xj8xuOSfe5ZW1YWnf7Bvewees3XzIrCbK1eCMewIulmR4KYwa7CjR0FRMKJkbzMOix0p6wN7BS1NOPG190TcPs7UlmR1Bqot2DtIMH9rKM7Qjad0jyMWfQuujHkzEmABEggqQQoGic18lw3CZBA5AnEUTjWi4puH4FVAiMCXazwj9p+b3iVNe5UfNLPX/lvTk3XpNaw//g7hN3l1161BEnl6mtkqodQaYVhL2sIK/2DaGOWbWzER++H/Nnbt8lf3r6t51T/5GR2MRrtFpEP2FzYG1atln/44WFLvZCFnH3+Wc3r12pxQ1XcDzdwmm388x//zJUgq+6NPWM0b8wRwrSZ6NtLOMY9ELupHffYLnxnxbbASoDwWYwCa/jO7FQrxPxto57GcftZrKxICvmM0O+4e8woGPu7nzk6CZAACZCAvwQoGvvLl6OTAAmQgK8EIBxPluuCImJRv6z629pdp1+F1OzOI6ntzQrdOeWiMiCd2JAYZdJaKRJnNldkv77md883a7bkdYiD+ILwCQEziAJw6p74DqsG9R2TM1oHbB1e+befL8z9r7+0U+68489kamq+uJq6fuPMs2TLOy+VjTpR2YlojPF+OTlrq6gl2I3f+KGufs6d4FX2NH7eS+yffcelMvSNxxd1L952u8x8eLPtWBt1wLxXXny+Ydy9Eo7NDgr088J7duykBQGySDuLUzpdNAvlOSXnXT98bqJYIQ5lvfKb1g5ol2Ull0mL04M871YYrpEK+bTGmxcJkAAJkAAJRJUAReOoRo7zJgESIIGTBFqttuZxHFXhWGWg4jFXZKF5JVDoN0ivyvDcSP4R8OsgQM0YYsXykZy022LZk7ObsGtHVOtGDH67Ky5bbwoU96qtvUjLAMV35a+rOkJEhIC87O6dlgVQ05taaABhWAnIBYOCd7849IL2unoiAN+f/dGL8tKR/9BGf9OZZ8nYGByMRfTF9JyKxvVGS/Mlt+tN3i2T3AgB7Bvw1S1bVwnLGBNfrbExzd8acfPygsUGhGujAwOvhGMrdhpeZaF2Y4P3rCqoRoHRyx1kPpbfvwdxKDBSyGgTKc3gMLttPqkYt6BgHOPgcmkkQAIkkCACFI0TFGwulQRIIL4EIByXKnWpVJuRWaQSJyB24w9MP8RiPQyI06NDWTlRrib+j1m/N4kqdOfnQYB+DXYeoy889ICWjWp0WRHVzNi95pw1hlYDEIjn3nGpVNdeJI03n2U2jMBy4bXnnGEoIirfYgjL+ArqQsYt5j70n35N5t56oZRWntb11hMbr1rIzt0jIu+2OcnR0TE5/O8/X7A1sFtMrVscjKYB0XjZl3YasvYiA93q0nsJx7BOqbz3GlOxupc/s9n+dmv7YnWdaKcKqtk58LEzPtsuJmDnM9ItO30BW2Q0I8ZJu0YKWQFzXiRAAiRAAiQQdQIUjaMeQc6fBEiABHQEkLkVduHYS99iu8FXlgZu/ZLt3jcp7d0WunPDCVlu8E01K7jVKwv1l985aEnQ7TXPoYcekIkOUdqJV3KvrGX400JAxNVNJETWcBA2F81Vp2sZ08hAxr/XNLuL1VpW7sSN1y+gQiG8+Xxka9eVV18jnzvpL+2kmNrQQ/cvur+1uxq3UhnWbsaw2hfC8coeFidmWcfdMumxH37xwxcM/ZGVvQC8V0+Ua74f4OlZOImtVZZsN08AFk0oLjs5XQtMwNX7HZt9JsctThSM4xZRrocESIAEkk2AonGy48/VkwAJxJAAPCjtPs4dFAaV7eS2AI+b+fr9+LWbuUW5r5eF7pxyUP7J1XpL8+w0ynDr5h/rhT2FmjcEX4imqWJRE1Rn37vR9pKsisbISEZRv/zTT2n3wDom73tU6m8+S/NHVj7J+K7NqVS0PRcnHTpFazsWFcgy3v/kQVm1+vSFWyO248NZ7b8hbJplL3bL1AYfq8Xy1M2diP5OmKk+RgcP+vHM5mNktdHNgzkMn4f62NrNKHfDOe591efhXK0p5dlGX5ar/LHxHf9v4qRwaV8m7vCmFIwdgmM3EiABEiCB0BKgaBza0HBiJEACJOCcAP5ALFfqzgfwuGcQvsV2pqy8cOuNeVsPXs4J+FXozvmM5jPr8tnuWZOdNgAQEo/vfWKJt7CbOXjR18hioVvGKERSXO2TnsJG9+/m24sMYfT3W1DeJCJ/YwHM53bcI1eezKTubK4yU5E1aSZAGWVhawX/Vp0ugx2F7cymFWS2MeZiJhz/7Fil55SteDCDJXxXvSyKZsax1+uDuZSML8tph57ITjU7GHBzr7j3DcNhgJ6x3u84rgcDFIzj/q7i+kiABEggmQQoGicz7lw1CZBAAgiEQThWgmKrLVpVdb99i+2GFeJiNjNgKXPR7thJaO93oTs3DJWHdTdxESJp+sgR7RZWPIbdzMVpX2QKoziayoyFuD218x5TX9te9zMSopVvL5hoPsnPPSv5nx6Rwb/a6XTqXft9VEQ+3+XVXxGR2888S95+/eYFmwtkayOLGgXoME+I4lYyynGLblYN8PaFoGwn49gsu9dzUCJa7FUGuX58HBy88m8/d3VLfPbBe/x4qRqqz2UWynMVVq0zbJjGh3OhOQzQr0gd+lSq8ToYoGDsft9yBBIgARIggXASoGgczrhwViRAAiTgCYF+Ccf99C22Cy7IAkF25xbW9sgagygRVKE7pxzClm3nZB1K3E6VpgRZsr0yia2M383rd3LH3Qs2Guo9IeecrQmv+gvF8HDlnn9W0i+/ZOWWS9o8KSL4ekZEYJYBE4qLT35BOO52dWaEK+ETB1Ldso6NhFdwxFfh4QdszT/4bGNjX2YUVDxx/yO25q4aq/cELAvC/JSF+oyZt1ZIZjE1JwFWxQzDdhigX4s6GECWe7FSl9kIFfA1igl+F2ItvEiABEiABEggjgQoGscxqlwTCZAACegIoDAeRJWgLghOyGDrp4+i3bUq+4zJclXqzQSWercITH8YcKJclUYEWGlFvgpZSacHJK6PRVsM30Izo2xjTZD95/8lp4zmFw4DRv/LlTLUYeOg98ZVgjYE5Mzz/6xlbrsRk62sQ2VFq7Z6cdFIBPWyIF4/so07LUXMCuH1YojPueHBjGb9EBWhDr9PCvmMlGajLy5a2d9u2kTtAFTvZV2uNEztZtyw8asvBWO/yHJcEiABEiCBsBCgaByWSHAeJEACJOAjgSCE47D5FtvFCfFpYjgnxUpN5motu91j3z4Mhe7cQFYZeL2yUt2MH6W+3YTUxpf/h5Sv/C8LgqKRB7IV4VQvJg/ffpstGwgrHDszflXmInysEV/9wQ/m8rpfe72VYU3b9Mv7GtneEOMbq1c7tiaJmqCoDwYL5ZluTc3HPZMeENjxRM0LOipPruijgM+clWODGnNeJEACJEACJBBnAhSN4xxdro0ESIAEdASQFXq0OOf5H5Tzf9DnNJ/RMD8Sa2UzqEe3UYgJX7xEi+v4cFbgS12aqYfK/9RufOD1OTGS12Kb9PiuvPh8zb9Yf0EU/eUPDy/8KPf0d2XFZesXtenM9DWLgVExOrM+Zq93s4lQBz/IpFXxhS/0a889w2zIJa9P7rhHJm78kMHPX7XxsD1oHzpY9X/uw9Rs31LvhwvrJV7zn8/LR3KRerKnW9xUVnnY/Y4pGPOdRwIkQAIkkCQCFI2TFG2ulQRIIPEEvBSOo+RbbCfwcfoj3M66jdqGudCd07XhD36ILM1mW/PTjFpWntN1d/brViSufPNWwReublm6PztWsTyNwa8/LsuvvcpyexR5q669qKvNhZlojfjiiQF8hx1Ja3JSXnvOGZIqwT3Z+MI91esQzss33yKz771GK5bX6XvcKaxbXlgfGqoMzjgdkmh2M8uykk2npDhTj6SlgVdbIQ6e7Z0s9IUQSyF86meeeU4y6ZRXYeQ4JEACJEACJBBqAhSNQx0eTo4ESIAEvCfQaLbkeKnmKmNUPeo/W21IHDO+lA8u6CdRWIzi48J23ylRflzf7lo726sDn8EPXSep+/5m0cudFgyn/urrlgiuv/zOQWm8+SxL03BiD6F8kzvtMezYQ6isVGQdp279tGAsowuC8dEnD0prbExSxaI0V6Ms3/zVLUtZXzTQEoQ+NIr7/k56oTw8NYEnfFAkMI52SojvSCGjvXPC4ndMwbgPH2S8JQmQAAmQQN8JUDTuewg4ARIgARIInoBT4TjqvsV2SauififK7kR2u/ftV/soFrpzw0rZGSSpyJbem7ryv35saN2g9y0+5bJLJP/0U4swn7jvEZl756WW0HfLaO7VWQm5EHAh3OL+Tvx8lbUKssnTv3XuEjsOzEFf2M9oTlHLNsaakYnbarc1sa0JX5mYXjjcQ2G/IRTKC2FWql/Y1aFt1O2grPAZzKVktKDsN/r3ZAgFYyvRYhsSIAESIIE4EqBoHMeock0kQAIkYIGAHeEYfzCNnnwk+ES5KrC5SMqVlD/Qo17ozul+1Hu+lip1p8OEvp/+QEAvNnXzHFa+waNbPyHDd9+1aH3T198gpW2fsbRmI19kKx3NbCisjKHaTHz5r2Tov35sSRcr94hStrHy7I7rEyDdYo514/cTLliSxFkoj3sGuVGM1eFAIZ8R+B0H/XQTBWM7n7ZsSwIkQAIkEDcCFI3jFlGuhwRIgARsEIBwPFmuS73ZMuwVV99iG4i0psh2GivktMr0tYYxK7tjhqW9ysZMguDSjbny0cxnUxLHrHL1KL+RmAhRFEXxOj1/VbaxkSexFbFVsXZaiA799f7KTt8v3daHbOZf/PAFaY+Nmw49sfEqGfrG44vahc3bWImJk+Wq1BN0qKcPit6SJI6FLkcLWcmkB7TfQ0n0YldZ9PATngrodzEFY9OPRzYgARIgARKIOQGKxjEPMJdHAiRAAmYEWq225nHcKRzrM0/hC5rEP1L17FQWHzwkZ6tNM6yReD2Ohe7cgFeiU5wOByA0DebS0utR9k7vYMUQ2cYDxaK85nfPX4QVgusr//Zzy6i7jW9lAJXxbKWtURsjew1NkH7wUSmve5elYbtlS0M8h1WHFeHZ0o0cNFKF4SBuxT3L1goe/SFYaQYHotF/KobFWRdHXu937OeeR7FFFL1LpQasbD22IQESIAESIIFYEqBoHMuwclEkQAIkYI8AhOOpGRTUaUrSfIvtkIpLtXpkqy0fyUut0Yy976md+KJtXGKs1oH3tJntBorVIds48/KRRbhURvHrVxSWYPz5j39mSywdeuh+zZsYmcudWc29YuQmo3fZl3bK2C03Lxm+8uHNktv5Be3zzoyN6txNfJ59x6Uyef8jdreZJ+3jslc9gdExiNNCeS8feUl+9Pyz2tdPjrwkv3HmWbJq9emy3qKHt9drYYy7E8UhHw4+kVXu9cE2BWOvdzLHIwESIAESiCoBisZRjRznTQIkQAI+EICIoj36OVOTWj1eNgxe4UJm3/KRnNQbbcuCk1f3djuO3m4kqMd73c65H/0R44nhnOA77CqilmWvMsjtxBii7sSN1y/BPbnjbik8/MCSYnjH9u6T2tqLbIcHdhGjW2+W3PPPSvrllyz1d2JT0c2WAiL00ScPioyPy8hQVqxaknQToLEApywsLb5LI+W1nqQCcHZ5KdsZZNpbeS989vZt8uhD98tPOg5PcN/R0TF5bO8T8qY3n2V3Go7b4+mW8eGc4OmWuRp/HxuBVH7HeD/A69gLW5JCPq1x50UCJEACJEACJCBC0Zi7gARIgARIYBGB4kzdkz+84o4Vj/1nMwORERWTWujOzT5UwlxUfGJVVqLTDPLXnLNmSbYxRFaIwxCO9Rd+fnzvE9JcfbpjxKf+6ussZx3btanolhncKfAqv3JkKvYSnAoPPSDjN37IcK1BisZ6IbSX5YjjoMSwI7KOx5ZlNQsm/H4zOgSCYPyXt2/rufogheOkFGD1arvpbUnKlYbj2gMUjL2KCMchARIgARKICwGKxnGJJNdBAiRAAh4SQMZOuVL3cMR4DhWFSvb4Y3p0WVZgy+in/2M8IyyiHnOHoOhFFptfnLzwp+6WbQyBuNO6AutQxfKcrsmOaGzHpqJbVvD09TdIadtnlkxXPT2AF7q9R7r5GqOPXasOp7xoVeCU3Hw/vEcK+YxmZaB/L+/7+uPywWuvsjQ4hOP9Tx7ULCv8uqLwe8WvtbsdV31eo8gvDgiaLeue1iOFrLZHeJEACZAACZAACbxKgKIxdwMJkAAJkIAhAQrH1jaGyuANYzaqF0KiNQrxbqWy2JrNthQrxpmK/SKwMLdW27U/9d8//V15buNV8lKpKOMi8isicraIXNxlccrz2MnaM889u6TAnhqnfuZZkn3+2SXDWrGpyD73rKzsKNyHgZQtRa+idaoQYres49Gtn5Dhu+9aNC8rc3LCp7MPPmdGh7JSilEhTi+42B1Dn5GqDgguv+wS+d7TT1ke6oqrr5E7d95jub2dhniCBZ7zKMYZNVscO+v0u616L1eq1vyOKRj7HRGOTwIkQAIkEFUCFI2jGjnOmwRIgAQMCJSmK/LtA4dkw/oLPOFD4dgaRnhPorBcWAQdFrqzFje7rSDowB81LLYASkg0s1YwW2exOCV/tPl6eeIbjxs2/c8iskdEE5L1l5sicL0yd6d23CPDt99mmN189DsHpd7FVxYF/VZctt5QcLZqIaFERQh2RsLdyO3bBII3rrl33at2DwAAIABJREFUvktm37vRDK/r15l56hrhkgHUe+cf/vGQrD3/f7d1gzesWi3/8MPDtvqYNca+g1c+6grg9y4v9wT0Vi7whZ6tNg0HpWDsnjVHIAESIAESiC8BisbxjS1XRgIkkEACe/YdkK3bd8n+h++Q005d4QmBSrWpFRHi1ZtAGB4dZ6E7/3ep8sDt5wGBijO+u7UcefnIS4JMS6PiX3qavykiT3YIx8XbbpeZD292BB2F6uA7bGR7Af9iXK8994wlY/fKGDbKBMYA3Wwpek1cecpaKaDmCICFTuozZV5IDFeGu4Xph74JRMVD339a3vWOt9ue60+PVWz36dYhDL87PFtMCAeCZcVIYd52otPvmIJxCAPGKZEACZAACYSKAEXjUIWDkyEBEiAB5wR++soxuemWL8jhF49omcbbtlznfLCOnhSOraFU2WLVektKAXtCs9CdtRh50SpOcbbzaP77RWT3SYBe2DIMPfSATHQUl9ML0cjqxVfnZSQCd8tchtXF0ScPOgo7niCYGMmfzP4MVrTF4cTIUFbw2RtmL21HYEPUyY6fsX7aBw+94ImvMfbY+HBOOxSYq7VCRCZ+U8F7arSQExQKhd/x8BA9jOMXZa6IBEiABEjAawIUjb0myvFIgARIoE8EfvDMYYFwjAvZxo/tulXOeONqz2ZTa7S0x/Lps9gbKbLXxgpZrVEQ/req0F0mNSAnyjVbhX882xwJHEg9+pzPpgLhrs8i98oeAx7GV1y23lb0frB3n7x+7UW2+vRqjIzjwa/P22LMvfNSaXYUGHvNOWsMs5End9y9YA0BW4qVF59v287CyiL0j7gHlXVMOworkZlv86PnnpViaUpWrTrdkYjrVDT+lx//TMbGOg1brM8bLVU2u1fvZ3t3T2ZrvJ+HBzOCDGNeJEACJEACJEAC5gQoGpszYgsSIAESiBwBiMbff+awfPPhOzyde6PZlqPFOQrHFqhC+IH/rZ9CLgvdWQiEz01UwSX43+JgxY8Lj1cjG3G22vDU7/T3N17V1ce42zquu/4G+fS2z/ixTMMxISpDEE6Vioteh03F8b1PaCJzN1sKN/YZnZNRMYBVhF9PEeiLGiITkgd0xtsMHtx/svVm+d7T311iq/I7ay+Uz+24x5aA/NvnrDG1Z9HPBPd4bO8Trt4DPBhwhc9VZ3yWFvJpV2OwMwmQAAmQAAkkhQBF46REmuskARJIFAFkHK+7+uOaRYVXRfEUwEYTGcfMaLWyofzKJGOhOyv0g2ujbAy8FnWxAj+L79mxplA0r7z6GvncznuCg4uMzC/tlLFbbl5yz8rV10jlvddoxe86r+raCzVR2cvLz+xyP/eQlwz6PRYEY2TH/+j5+WKERhcK1f2P+x6VN3UpmNjZ56+/tFP+u8H+6jb+V/buk7e6yLbHexqf4UaFFvvNN873x/t35digxp4XCZAACZAACZCANQIUja1xYisSIAESiByB7TsflG8dOCS779wisK447+w1nhXHo3BsfTuowmleZKLqLQqQ7YisR17hIABBYmI4J/iO7HK3WaJBFEGLimiMCC/feJUMfmPexkJ/tUbHlmQh42fwMe60uvBqp6j39PRcwxO/YZV1OlmuSr3Z9mqasRxn3cXn9xSM1aJHR8dk/5MHLWUcWxGi1bj/z81b5WM3b3XEVnmhzxc2bDgag52cEaBg7Iwbe5EACZAACZAARWPuARIgARKIOAFkFd//2H7Zsvl9i1aCn7/ng3+s/WzNr5+uZR2fduoKz1ZL4dg6SpVFiIJWTotasdCddd79bKmyy90IgEpE9NtDN0qiMWwqTrnsEkPf4s54e2lL0W0vKSsJvD41XXfkJa4OgVIDA1phrmaLgnGv965d/+Errr5G7rSRFf/RzR+Srzz8QNcp/LdbPiWb/2iLowMhdQjkx9MI/fy8i8K959nnJJNORWG6nCMJkAAJkAAJhIoAReNQhYOTIQESIAHrBCAKf3H3Htmz74DcsGmDfGTThoXOpemK/MXOBzVfY7zmtUWFuhGE48lyXepNf7xcrdMIf0unooESlrLpYAquhZ9k+Geo/G/tHhKoPVJrNKVcafguIj760P3yRzdebwso/GKvfO81tvp41XjooftlwmS+fthS9Jq/8rQuzdZltmo989/p54FXLKM4jpNDjoOHXrCUbax44D3xvaefkr9/+intR6NjY/LWtRfKJe+8VNa//W2aT73dwxwcGsJHtzyLp0P4uzLIvUfBOEjavBcJkAAJkEAcCVA0jmNUuSYSIIHYE0Bm8X2P7Ze3nL1GE4uNMoghJvslFusBt1ptzeOYwrH5tsMjsstHctJstmVqpm7agYXuTBGFtsFCUbNmW4oV86Jm/Yq1nSJgbzrzLIGf69jYeN+4j2/+kBS6ZIP6bUvRbdEq1rAkseJTq7LR7YqPfYMekhuftqJgeyZeH3LgQGhsWVY70LGSHe6Xr71tEAnsQME4gUHnkkmABEiABDwnQNHYc6QckARIgAT8I/DtA4fkz3c+qN0AXsVe2k24mTWE4xPTNanVmUVlhSMKIeWzKTlWqho+6hx0xqmVObONMwJmhewWxOVWO5Ds4s5V/Oi5Z+X3r71SfvLykZ4LtOMR64yUtV6wqVh58flLfIzRu3zzVu2rX5eZrYifhfT6teYg7xsG0VitV2WY9/K1VvvheKnq+1MDQcYhCvfyUjDGk1t79x2Qy9ZfIKPD9g8uosCLcyQBEiABEiCBbgQoGnNvkAAJkECECCDDeGS4EEgGsRMsyJyr2HhE28k94tLHSFDQF7rDo8x2HnePC5c4rkMVTuu0MIBP9fBgRnvPOPW69oLXy0deEjz63004fsOq1fLY3idsPebvxbyMxlj2pZ0ydsvNhsMHbU1hNAnlXz5f7OzVDHPaUbjfEWESjbEava91aQY2Ta96UuOwKJMesJR57p4MR9AT8FIwxriwAtu6fZf2/c+2XKcVFeZFAiRAAiRAAkkhQNE4KZHmOkmABEggIAJ4ZLefAlhAy/TkNqq4HYqmZTIpGRnKCgsleYI2dINAyIA1SbXe0t4fI4WMhMmnulickkcfekDzc/3R889qXq6rVp0u69/5LvmdtReFQjDulWWsAh5EETyzzaUyipX/bTo9oB0OICuVB0Fm9Lq//vaLz5d/ef5ZWwPATuWtay+y1cduYxwKjS/Lae/r2VpTJoZzMn9o0LA7FNu7JIDPVBS9S6UGXI60tDssv+7avUd7wgu1IozEY2Ql4ypPV7QDfmYmex4GDkgCJEACJBAwAYrGAQPn7UiABEggCQTwx3K5Yu7ZmwQWZmuEsDS+LKs1O1rkY8xmvKL8OsTEFaN5yWZSMj3bkBLfI7bCecpll0j+ZIGybh375WtsNB/43+KgAALWLybnaFFgK9pLG9st3Pg7ay/UMuSDuPDeHitkpTCY0YTjyXItiNvyHjoCfgrG6jYQhfHE1/1feUI2vONCraaEXhjGa3fd+zUpz8zKxsvXyZbN72OMSIAESIAESCDSBCgaRzp8nDwJkAAJhJcAhWPz2CiLCmSowSOTWcbmzKLaQm89gjgX8hnt0fVagz7gVmLay5ais39j1Wr55Q8PWxnWtzbKjgIZp0h6RLbx1HSdwrFL4usuPl/LhDe7gvbghi3J+MkM46F85mSmsXkBTLN18HVrBAr5tMASxI8MY6MZwKpi+84H5drL1y3JOIaVxbee+if56pf/NDR1J6xRZCsSIAESIAESWEqAojF3BQmQAAmQgG8EKBwbozUqdKe3L2AGqm9bsi8DI+MUgpL+UEB53/KgwDwk3WwpIA7X1l4khYcfWDJIP4viwa4AVjN6r2pY0YwOZTWLCtr3mMe8WwvYqFxx2fqewjEE4y/f/4jvthRqjjjwwxdshuBrjKxj2JHgYIjxdh5rqz0hGOPzNQwXMpHXXfUx2XjFJZqFBS8SIAESIAESiDoBisZRjyDnTwIkQAIhJwCBBD7HvOYLJ8HLNpdJa0WyOv1N1SPOyJZCFmr71bpKxBdRAkYFD9VSEG/4n+L7iTLj3S3EKy8+X7IG2aXH9u6T+plnCV7PvHxkSfdfHHpBmqtPD3Tn9Iq3vnAas46dhwXC8a6775JdX9oppVJx0UBXXH2NfOzmrYF5cDPezuPoRU+I9WMn7Z28GM/tGMg+/taBQ/LVXbfSz9gtTPYnARIgARIIBQGKxqEIAydBAiRAAvEmgIy7qelkezyqondWMkshRMDrGEJis0XlOIrvDr09AQ4Ieh0AKOFJZSpGcb1+zXnk9m2Cr85r+vobpLTtM9qPkYn82nPPWNImSJsK9aRAvdnSDsl6xRtCFzJRi5WazNVoT+Jm77x85CV5+eWXtCH8LnjXOU/YIWQzA6YHPirelWqDxfHcBLuj70ghK/jsDMt1+MUj8p7rPiU7brtJfu+Cc8MyLc6DBEiABEiABFwRoGjsCh87kwAJkAAJWCUA79bjpWrismf12cVYv1URWD3ybKeP1Viwnb8ElAhslE3e7c7KwgKZ+bQvmKeUfe5ZWfm75xuKwUefPCjtsfGF17qJy9W1F8rM9Ztl7p2X+hZ0J7FbEJkbLSlW6H3rW3B8GNiJlZB6qgB9cahAL3N3gQmTYLxn3wFNJL7pli9oi9p95xZ3i2NvEiABEiABEggRAYrGIQoGp0ICJEACcSfQaLblaHEuMcKxyhjWe5vaiTG8UccKORZMswOtj22NvKrtTEfZF9Qbbc2+JMn2JAPFqa62E7ClgJdx5/Wac9YY2lSg3Yn7HvFFOO5lT2Al9qo/nsSgkGiFWH/bqPe4lSdGjGaqDhhQIDHp73GnkQyTYAwP47+AJcVT/yTlmVlNMD7v7DVOl8Z+JEACJEACJBA6AhSNQxcSTogESIAE4k2g0UTGcbxtF9yKh/odoAqmMQM13O8LJ9nF3VaEx95hT5LkLPPRrZ+Q4bvvWoKoV4G7bjYVGATex8hO9urCe1x5qSJz1OoTBBQSvYpA8OPgsxgF11DcrtOP3s5skHWMQol4j5doUWIHnYRJMNZP/AfPHJa7du/RfrRty3Vy2qkrbK2LjUmABEiABEggrAQoGoc1MpwXCZAACcSYQFyFYwhJsJWAGGDHmsAs1G6z28zG5+vOCajsYIiG5UrDlXionwU8sEeHslIyKJjofLbR6Jl7+ruy4rL1SyZrRfg95bJLJP/0U0v6NledLr/44QueAPDj/agXEult7UmYPB1E2QV5GRuI0KMni7ixMKJ5uCDYF/Jp84Z9bHH/Y/s1qwqKxn0MAm9NAiRAAiTgKQGKxp7i5GAkQAIkQAJWCcRNONYXukMmmtfWAhCVlo/kpNlsy9RM3SpmtvORAGKOgmZO7UfMpqYvpleqJCPm3WwpWqNjWqZwc/XpPbGNb/6QFB5+YEkbeBsf3/uEGXLT1/22k3Dij2w6aTZwRcCtBYnZzVWhPPzeoJ+5Ma0oCMZmcebrJEACJEACJBBFAhSNoxg1zpkESIAEYkIgDsKx00J3TkMI64J8NiXHElhU0Ckzr/sFGXOVgZrNDEgSshG72VIUb7tdZj682TSUsKhYefH5kioVF7Xt5oNsOuDJBogD7CgQe7/joIqm4bvf97K6/qS2w+ct3nsnyjXPDwL1TNUTC/hZaaYu9WY7qcgXrRvvgVNG84LDFF4kQAIkQAIkQALBE6BoHDxz3pEESIAESEBHoNVqax7H9WYrclzcFrpzumC/M9+czisJ/fQZ5eXZRmBLVo/Hx7lgWjdbCrtZwtnnnpXh27dJ7vlnpbF6tcxcv9lVETw/7CisbBxmoFqh5E8bxBxPdlTrLQkyyx/FT0cLOWGhPBEIxivHBiWTHvAnyByVBEiABEiABEjAlABFY1NEbEACJEACJOA3AQjHJ6ZrUqtHQzj2stCdU7bKGgEiIrPSnFK03k9lmuYy/StQp4oizlYbEqRgbZ2S85ZubSmc37l3Twi38FGFR/lcLfjPJ30GKrOO/Yry4nH7dUigZqH3t47zIVGvaKoYUDAOZs/zLiRAAiRAAiTQjQBFY+4NEiABEiCB0BDAH8jwhw3r5VehO6frhYi4fCSfyGJpTpk56ad8ZsMg1ipva6zD70fmnbBy2mf5xqtk8BuPL+lu1ZbC6X179YM1AYpaHi9VPStw6HSeKuu4WKn1Rbx2Ou+o9cNnKvxz4S882+ffRfjcgSUKimxOTvtrjxGmOM0LxjnJpGlJEaa4cC4kQAIkQALJJEDROJlx56pJgARIILQEijP1UBYDUrYEYXtsuN9ZcaHdSB5NTFmBTJarocroDuu8nGAf/Prjsvzaq5Z0tWtL4eTeRn3CWoBQb5mAzGevi216xS+q4ygLmDC+1wv5jCZkx71QHgXjqL57OG8SIAESIIG4EqBoHNfIcl0kQAIkEGECePS+XKmHYgVBFj1zuuB++W86nW8U+umFw7AKdMhEnDiZFRlVMalb4brW6JgcffKgNFefHuh2weHQ6FA21Nn7KgM6qdYFfmyIsPvEJ8GmhIKxHzubY5IACZAACZCAOwIUjd3xY28SIAESIAGfCIRBOI5SISrNc7eQlXR6IFa2BT5tr57DKgEJYnG/H1E3W3/Us09PuewSyT/91JJlnrjvEVfF68y4Gb0eduFQP2dlmRK2Jx+ccO93H4jw2Uw0PjfV76RKtaFlHscl25yCcb/fBbw/CZAACZAACRgToGjMnUECJEACJBBaAv0SjsNQ6M5pUCB8wYcVfrfwwuRlnUCU4w7hK59NRSruy760U8ZuuXlJgObecamcuP8R64Fz2TKqwru+YFrYLBVchiSQ7lF9QkNflDMO2ebZdErzME6lBgKJO29CAiRAAiRAAiRgnQBFY+us2JIESIAESKAPBPDYPXyOg7j0IkwUsky7MVHenGEo4BVE3Ly4h2IW5bgra4UoFEvrZkvRWLVas6Voj417EVbTMQZzKRkt5DSv2KhafCDrePlITnDIFtU1mAbK4wZx8IKPQ7Y5BWOPNzaHIwESIAESIAGPCVA09hgohyMBEiABEvCeQKXaFGRU+XmFtdCd0zUrv9vJ6ZrUGi2nw8S+n/IKxWPeOJyIenZ2WIu4dW6kbrYUx/buk9raiwLZd1GyozADggMv+Fvj+9R09Pex2XrdvJ5ND8j4SS/wsNvPmK0T8R4ezAgOvaZmajJXi85nfQH+4YUsM4zNgszXSYAESIAESKCPBCga9xE+b00CJEACJGCdAIRPZM567eEYhUJ31iktbglxZGIkH+ksSqdrt9IPBwUQXHAoEacMTb2/dRgFxG62FNPX3yClbZ+xEjpXbdRBAQ4IypVG5A8K9DCi5MPuKogOO6snCuJm54HP+tFlWY1KGN/zneGCYAzhnhcJkAAJkAAJkEC4CVA0Dnd8ODsSIAESIAEdgUazLUeLc54Jx/qiQni0O46X8u2cL5gVzzXajVucDwo6BUQtAzFE2eb9tqVQBymz1UZs3w9KFI+KgGj3/eu0fZwyy7sxiMKhAeY4dlLgdhpL9iMBEiABEiABEgiGAEXjYDjzLiRAAiRAAh4RgHDs1qs3ygXPnGBE5ik8T5vNthQrdc9Edydz6XcfZUMSZ9FQzzhs2eYrLz5fss8/u2QbBGFLoUTDuGWZmgmIUfC49vtzATYI2cyAVijS66dV/J673fHx+w2iLL7DcidM9kQjhazgfciLBEiABEiABEggGgQoGkcjTpwlCZAACZCAjkCjCauKmu3HyuNS6M7pZoBwks+mNOEk6t69dhlolg3LspLLpF0fOti9d7/bq0MDiGXwuO6XaDa69RMyfPddS3D4bUuhMsvxPQqP7nu5X5R/b7XeEhR57FfsvVyTnbHUkxZYf6kSTEFVO/Pzs23YCuVRMPYz2hybBEiABEiABPwhQNHYH64clQRIgARIwGcCdoVjfaE7+NcmTTRV4UjCI9qdW0+JJ0nJLu721utnpm3u6e/KisvWL5laY9VqOfrkQWmPjfvyiaGeKkh67HFgNJhLh8qqxJeA6wZl7EUrjDgy1P/YUzD2e7dzfBIgARIgARLwhwBFY3+4clQSIAESIIEACFgRjpPiX2sHNwT00aGsnChXpd5s2+kaubZKKA2Tr28/IUJAnxjOyfRcI7DifwPFKYEtReblI0uWfvQ7B6X+5rN8QaKKnpUqNZmrtXy5R5QGDVvmqZ/sVIY19vlstennrSIxNmKPJy1wWArLiiAPTSkYR2KLcJIkQAIkQAIkYEiAojE3BgmQAAmQQKQJtFrwOK5JvblUFEpCoTunwYu7qKKyDOcLACbvsfxe+0L/yH4QbLrZUpRv3ir48vpS2ZVJtWLpxVPPBgcpcTw0UocFSfGutvP+wSFaIZ8J7NBofDgnhXzazhTZlgRIgARIgARIIEQEKBqHKBicCgmQAAmQgDMCEI5PTNekVp8XjpNW6M4ZtVc5xe3RfZVdDEGUWYbdd0cQHtfdbCmqay+U43ufcLp1u/ajJYE1pIO5lIwvy0l5NriMc2szc9cqifY7donhPTI+nNW6lWbqvh0cUDC2Gxm2JwESIAESIIHwEaBoHL6YcEYkQAIkQAIOCeCx29SAyFA+o2WXUjA0B4nMwxWjeYlDoSgeFpjHu7OFsiop+mDh0M2WojU6pvkYN1efbn/CPXqotZT43rfEVRVIROM4FAgM4hDEEtiINML7ZayQ1WxqYOPhVZFE7KtTRvMCSwxeJEACJEACJEAC0SZA0Tja8ePsSYAESIAEOgjUGy05Ua4F6tkY9SDgj3yIB+n0gMbOK/EgSC7qkXQeFtinrrfyKFXq9gfo0qObLUXxtttl5sObPbsPBlKF3o6Xqnzv2ySrbHyC9Lm2OcWezfV2K17uXy/nGNaxvC6Uh/FWjg1KJj0Q1iVzXiRAAiRAAiRAAjYIUDS2AYtNSYAESIAE+kPgp68ck00f3S7XXr5ONl6+znQSeOS67KH4ZXrDmDSI4qPd+ket45At2a+tpD84cMsxfeQlOeWySwwL33ltS0Hvam92jHof4cBocjo6B0e0I/Em/l4USVSxoGDsTUw4CgmQAAmQAAmEgQBF4zBEgXMgARIgARIwJACx+Iu798iefQfkhk0b5CObNlgmReHYMqpFDaNURAqPV48MzT9ejS9e7gmo+KNIWq2xtLiklTtAMM4//dSSpl7bUsCXF/GvVJuMv5XAWGiD+OPwCE8cOI2/hdt40gTFPCdG8nz/e0JTBAdHw4MZwR6w63U9LxjnJJOmJYVH4eAwJEACJEACJBAKAhSNQxEGToIESIAESKCTgMouxs9337lFTjt1hW1IFI5tI9M6IOtsYjgnfvjcOpvR4l4QKEYKGcll0kI7Ai+ILh7DjRiHLOPXnnuG4aSmr79BSts+48mEo5gV78nCAxhExX+u1tS84cNoVxOlw60AQubpLew+vUHB2FP8HIwESIAESIAEQkWAonGowsHJkAAJkAAJKAJKNH7L2Wtk25brpDRdkX985rDg55etv0BGhwuWYCEDFQXyeNkjoB41DlsWr8ounq02tGw4Xv4QcGpX0Es0Lt+8VfDl5lL+tfVmS3tfh1HQdLO+sPT12uvWy3XxwMBLmt3HUl7XlR6ftRSMg4kF70ICJEACJEAC/SJA0bhf5HlfEiABEiABUwKwpdi6fZds2fw+ue+x/VIuz0h5ZlZef+oKW9nHeHwdj9vzskdACXTzGYf9FWj1Ihazi+3F0U1rJdBNlqtSb7YtDfWac9YY+hkf27tPamsvsjSGUSPlu8oDA8cIbXfUe92GocgcCh7msykWO7UdSWcd8LmLp07wuwCHNHrLEgrGzpiyFwmQAAmQAAlEiQBF4yhFi3MlARIggQQSgGgM8RjCMYrgdWYgW0UyV2vJ5HSVmYlWgZ1sp0SDVqstxUp/MjspFtoMmsfNlV3JtEXvaKNCeG6zjJ2I1x5jSOxw6sAGYi0O36weHngJTB1gVestCYN47eXaojBWZ6G8TColEyNZehhHIXicIwmQAAmQAAm4IEDR2AU8diUBEiABEvCfAERiXHpP4+07H5QfPHNYvrrrVlsTaDTbcrQ4R+HYFrX5xv3K8FNioZvCbA6Wyy4dBPSinRWf24HilAx9/e+0UaprL5Tm6tMdMcV9x5Zltb7IdGy2rGU7O7oZO/UkgMKDY4WcWD088AqnssphhrlXRJ2Now4PYBE0ICKpFP7JiwRIgARIgARIIM4EKBrHObpcGwmQAAmEmMAXd++R+77yhIwMF+TaKy7RsoitXPA2/sBHt8uaN67WvI7tXhCOaW9gl9p8+yC9RJVQVGs06V3rLFye99JnnJ4o13wXcCkWeh5C1wPaLZLm9oZuijK6vTf7LyUwmEvL+LIsBWNuDhIgARIgARJICAGKxgkJNJdJAiRAAmEicOMtX5DDLx7RRN9vHzgk9z+2X27YtEE+smlD12l+/5nD8rNXjsldu/dobXbfuWVR9rGd9TWaLTle8l/0sjOnqLRFltnoUFZO2PC4tbs2JU4jo3W22rTbne19JqAKZBUrNYHtix8XM8z9oOrdmGoP+Jl1jHvgy46ftncr5EidBAr5tIwP5wiGBEiABEiABEggQQQoGico2FwqCZAACYSFwJsu3iQ7brtJfu+Cc7UpIesYYvD+h+/oKgTD2xjC8bWXr7OcldxrvRSOne8Glf3ntairzy4uVxq+Z7I6J8CeKlYokuilxyyymWFHkU2z2FnYd5nKOm63RSana57a/gT5VEPYOYdhfhDvlU1MGObDOZAACZAACZAACQRDgKJxMJx5FxIgARIgAR2BTtEYL7396o9rgjEyiHHByxhiMrKP9X7GXoKkcOycptfWARAlkMmGzEVmFzuPS5A9VZFEfJ+adu837PWeCpJFku+lMoK98h3vl396kmPYa+0jhaxmTcSLBEiABEiABEggeQQoGicv5lwxCZAACfSdgMoa/ubDdyzMBSLxuqs/vpDufGXkAAAgAElEQVSBrP57w/oLHHkXW11kqwWP45rUm/48Zm91HlFsB7FwxWheqvWW42zToD1So8g57HP2QjTkoUHYo9x7furpA2SeWymUaDSavtiil9nr0Sbb39nbFYxhNYV6A+edvaa/E+fdSYAESIAESIAEPCFA0dgTjByEBEiABEjADgElCG/Z/L5FVhObTha4w89xwY7iLQH88Unh2E70lrZFYaR0ekBQHA2Pqlu94I88MpSV2WpDyrMNq93YLoQEcpmU5nc6M9fQvuxcyCxFgS0WqLRDLXxtVaFExNJu1jGzzMMXT7uCMVYA0fiue78mb7vwt+S/bn6fjA4XwrcwzogESIAESIAESMAyAYrGllGxIQmQAAmQgJcEtu98UPZ84yn56pf/dMF+olM09vJ+VsaC0FFh4TUrqJa0seNBCoFopJCRXIZCoSPYIe1k1+PWL1/kkOJJzLTUAYJVv2uVpezkwCExUANeqBPBWE2xNF2Rv9j5oHzrqX+SGz7wbsMaBDg43rvvgKDtxsvX+WZBFTA23o4ESIAESIAEYkeAonHsQsoFkQAJkEB4CezZd0B+9soxzacYF3yMcd2waYMcfvGIlqX01V23ao+39uuicOycvLIpmCxXpd40TjlmdrFzvlHpqTKHzfbB8GBGO6Sxm5kcFQ5JnqdW0LCQlWymd0FDK58ZSebYj7Wj4B3i4vb6wTOH5b9t36UJwtu2XLcgDON3/Y23fEEbHq8d/teX5M8++QcLhXHd3pf9SYAESIAESIAEvCNA0dg7lhyJBEiABEigCwFV1A52ExCI4VOMC1lGEIqRcXza61Yu+sOynzBhlVCu1Ps5hcjeG1mGE8M5KVZqMld71Sda/+g6bQgiG17LEx/MpWSskNMKG3aKwnay0i3fkA1DSYD7IJRh6TopWMygIKlXl/odj8NiCMf47/dc96lFRW/x/wD3PbZf9DUOvLo/xyEBEiABEiABEnBHgKKxO37sTQIkQAIkYEIA2cV37d6jeRMjwxiZRVG4KBw7j5KyHVCPm6vH1eld7JxpFHvqC5uhOFpqYECWj+S0opPFmbot/+sorp9znidgVOwS2ej5bO8sZPILjgAO9SaG8wKR388LRXBhW6G3pfr2gUNa5vGPntzt5605NgmQAAmQAAmQgAMCFI0dQGMXEiABEiABcwLILsYfiPj+yc3vi+SjpxSOzePcrYUSDFvtedHIbmEs53dmzzARUBnmEAgHBgYcFcoL03o4F+cEYHkASxIY11j1O3Z+N/a0SgDv0ZVjg5JJD1jt4qgdbCmQZdxZAFf9f8LuO7c4GpedSIAESIAESIAE/CNA0dg/thyZBEiABBJNAI+clqcrC/7FUYWBbFlkRfKyR0BlG7fbbWm22jI5XWNmqT2EsWmt7CggSWEf1Bqv2pbEZpFciCkB9ZmAho1mi58JpsT8b6Bi4rdgjJWg+C2yjL/5yGcXFgbfYxTA3XHbTZE8WPY/QrwDCZAACZAACfSXAEXj/vLn3UmABEiABCJAAMW6kCnLyxoBJRLCkmC22hQ+im6NW9xaKVuCdlu0g5cUHoEfyQttSuIWafP1ZNMDWuyVZY36jOATCObs/GoxLxjnJJP215JCzR8ZxbjgbawuFMOFZVWvLGMcQKM47nlnr/ELBcclARIgARIgARLoQoCiMbcGCZAACZAACVggAOG4OMNs2V6oVNZardGUcqWhZRiri8XPLGyyGDVRImGnQDzvnZoTfJ+ari/aIzFaPpeiIwBbCnxNlqtSb776maC8zmFVgQMmHC7wCoZA0IIxVqXqGyiB+Iv3fk2+deDQIn/jztWrTGT8fOPl67Qnl0aHC8FA4l1IgARIgARIgASEojE3AQmQAAmQAAlYJNBotuVocY7ihgEv5VdaOpldbIR0KJ+W0aEsLQos7reoNrOSRaqERGaaRjXK1uZtdlikPK8Hc2n6nltD6rpVPwRjNWlYVCBzGNfrT12h2VIgi7jbpTKRb9i0QSuoe/hfX5I/++Qf0MrC9S7gACRAAiRAAiRgjQBFY2uc2IoESIAESIAENAIQjo+XqsyQPLkfIECMLctazhxVGajKuoLbKj4EsBdGCpmThQ/Ns4hVpqmyLIgPCa4EBOzY0uizjksVesj7tYP6KRirNaE4Lr7eorObKE1XlmQQQyT+4u49cu+dWxbaQnBGxjJ+xoxjv3YJxyUBEiABEiCBVwlQNOZuIAESIAESIAGbBFDE6XiplnjhGJnDI0NZ2x61ysaC3rY2N16ImzuNqfI9bjbbUqzQoiDEIbY8NcR0+UhOqvWW2BGAlXUJ+p8o8/PVMnCLDbPplEyMZAPzMLY4LYEFxY1bPy87tv3hIt9i/JzZxVYpsh0JkAAJkAAJ+EOAorE/XDkqCZAACZBAzAkkWThWGaW5TNpx1jUEohWjedvCUsy3VSSXp6wmSpWazNVajtaArFRYFDCL3xG+0HRyenigX4Cyupmea2iF83i5JwDBGEXvUqhGGbILmcPIIO6WPYxsY4jH+x++Qyuax4sESIAESIAESCA4AhSNg2PNO5EACZAACcSMQBKFY6fZxd1CP74sK+n0fGYhC2FF6w2i96P1QuwdzKVkrJCTXr7Y0SKUrNkq6xkv7EZUBjoIsmCiu32Ewxh8zoZRMDZa2dbtu2TblusWvXT+//F/y7VXXKIVwuNFAiRAAiRAAiQQHAGKxsGx5p1IgARIgARiSKDVgsdxTepNZxmWUUHitUCoX7dZsayoMErSPFVG6VytacuCwIyRU2sDs3H5ur8EVLb5ZLkq9Wbbs5tZKbDp2c1iOFAhn5bx4VxkVgZv4/dc9yl52wXnypbN79PmDZuKTR/drhXN+70Lzo3MWjhREiABEiABEogDAYrGcYgi10ACJEACJNBXAnEXjlUGIQRCFLDzIyPYL9GprxsjpjdHtvnoUNa3jGB1QJHPpuhtG4E95PehjzpIaLbaMjnNJxKsbgl8pqJIadQuFMmDSFwuz8h555wh3z5wSPM63n3nlqgthfMlARIgARIggcgToGgc+RByASRAAiRAAmEgAOEYRZ8q1WYYpuPZHJQgNDVdk1rD32zqXCYlE8O0J/AseD4M5LdAqJ+yyjKFUOj33vMBVSKGhBd1UOK+8r0O4rMo6sEbKWQF79WoXsg43rvvgBx+8YgmGG9Yf0FUl8J5kwAJkAAJkECkCVA0jnT4OHkSIAESIIGwEYCgEQfhWNkP1BpNKVcagiy/IC51Xy98UYOYb1Luobej8Cvb3IilynKfrTakPMuiaGHZb/2yEcHBEuwW/HzqISyMnc4j6oKx03WzHwmQAAmQAAmQgPcEKBp7z5QjkgAJkAAJJJwAxK1ypR5ZCiqbFOLgbB8yp/slSEU2YD5PHAXqRgs56ZeQD7sKZKDjOwsm+hxsC8OrA4R+Cfl6f3WvPZQtLD/UTSgYhzo8nBwJkAAJkAAJRI4ARePIhYwTJgESIAESiAKBKArH/couNoqnEgph+1Gs+OOjHIV91O85BmlHYbZWNRcKhWak/HtdZX736wBBvzKVddwv8do/ys5GpmDsjBt7kQAJkAAJkAAJdCdA0Zi7gwRIgARIgAR8IhAl4Vj5x07PNbSM0rBcQXqmhmXNYZgHDhDGh7OaLUmQ9iRma1dCYRhES7O5xu31MBar1GehT03XA7PRCVtsUfAO8eFFAiRAAiRAAiRAAl4SoGjsJU2ORQIkQAIkQAIdBMIuHEMchOAA8SWsokuYsl2TsMHD7iO8IGg3mYUe1H4M+3swrIdeQcQHHs+FfDqIW/EeJEACJEACJEACCSNA0ThhAedySYAESIAEgieAwngokBe2ayiflpGhrETh8W7MdXQoK5PTNak1WmFDGZv5RMkCAlnog7m0HC9VE5thGsTGi0q2vzpMAJOwHoB5Ga/5LOu8wHOcFwmQAAmQAAmQAAn4QYCisR9UOSYJkAAJkAAJdBCAcFycqUm73X80EFdGChnJZaIluIXJT7X/UfR2BlHIODdasTpMKPWpaKO3UQjXaFEtSKmyjouVmszV4nnABMF45digZNID4do0nA0JkAAJkAAJkECsCFA0jlU4uRgSIAESIIEwE2g023K0ONdX4ThK2cVGsVTF+qKQHR3mvaifW9SZqvnP1ZpSqtSjgj3U84z6nsABE2wb6o1W7AppqthQMA71W4iTIwESIAESIIFYEKBoHIswchEkQAIkQAJRIQDhuB+P0yMzDVYUcXicH2tZPpKTZrMtUzMUCd3sfVXcrBTxrEy1v/PZlJwo12hX4WJTxCmjX1mYwB4oDrY284JxTjJpWlK42OLsSgIkQAIkQAIkYJEARWOLoNiMBEiABEiABLwi0Gi25HgpOGFLn4lZnq33NdPZK4YYZ3xZVtLpAU0kDIPth5dr83ssiKwogJhNx0tkhQgOX2bsiTiIhH7vg87x1SHCZLkq9WYIvHQ8AJDLpLSsY2SiR/nzj4KxB5uBQ5AACZAACZAACdgiQNHYFi42JgESIAESIAFvCAQlHKvCZlHPJO1GXa2vH9nb3uyE4EeJuvWAGTGVKUsLEzNSi1+P83tJ/6RFFAVxCsb29jJbkwAJkAAJkAAJeEOAorE3HDkKCZAACZAACdgm4KdwrITBWqMp5Uoj1o/rxzE70vZmsthBFQmLe+E4ZWECLMxEN98csHFIgrXHYC4l48tyUp5tyMxcwxxMCFpQMA5BEDgFEiABEiABEkgoAYrGCQ08l00CJEACJBAOAhCOJ8t1qTdbnk1IZQziUezZatOzccM8EB5BnxjOSdzFUDcxUP6uScrKVu+FKGaXuom11b4QJOEPXq23ElNEUH+gMDVdD/WBGuxjJkay9DC2uqHZjgRIgARIgARIwFMCFI09xcnBSIAESIAESMA+gVYLxfFqroXjJGUXG1GOu+2C/Z013yOuntZWeeBAAcJolLJLra7NTbukv19U1v30XDizjiEYo+hdKjXgJszsSwIkQAIkQAIkQAKOCVA0doyOHUmABEiABEjAOwIQjkuVulQcZgaHXQDxjlTvkZKYOdmLyFA+LcODGW1fReVxfD/2itoX9UZLipX4FIN0ykr5PmNPJH1fjA9nNYxhyjoezKW1Qp8UjJ3ucPYjARIgARIgARLwggBFYy8ocgwSIAESIAES8IjA1HTNlnAMMWykkJFcJi1Jsh3ohRuPn48V5gWXyematNseBSdiw8S5sJnTUCTRoqOTFT3Al+4eMMH7ZWqmJnM176yCnOzTQj4t48M5J13ZhwRIgARIgARIgAQ8JUDR2FOcHIwESIAESIAE3BPAY/TlSt10IGSRjgxlZbba0B6957WYQFKKe3XGfSGrttmS4gyzajv54H0zOpRNpP81DxK6f0qq7Ou5WlPgB9+PwyaI12PL5jOfeZEACZAACZAACZBAvwlQNO53BHh/EiABEiABEjAg0Es4Znax9S2jsiqTkoUN/15kKfIgofce0fs8wxYmCVdSD1HsxBZPKeAgDvYQeOqj1ggu63ikkNWynXmRAAmQAAmQAAmQQFgIUDQOSyQ4DxIgARIgARLoIGAkHDO72P42UZmlsKoIUgSyP1N3PVQW6WS5KvVmQj05bCBUNibZTEpOlGvSbMWTGX2+bWyKk03V4UtQWccUjO3HiD1IgARIgARIgAT8J0DR2H/GvAMJkAAJkAAJOCaghGN9BlxSsmYdQzPoGOfCXxAF1SPtsKOIq/jp5X7Qj6X8bCEcx+1QQWVUM/Pc/u7Rf+b6eRBDwdh+bNiDBEiABEiABEggGAIUjYPhzLuQAAmQAAmQgGMClWpTkPkWVNab44mGvGMcBTQlhlMUdLf54sgxzgcl7qJtr/dgLiXjy3Kab/zMnLfe8RSM7cWCrUmABEiABEiABIIlQNE4WN68GwmQAAmQAAk4IgC7gWPFub4UZ3I04ZB2Qvbg8pGcNJttmZqJtpetsqMI2ns1pKF1PS21NzAQso77UQjN9SJODqC8vP3MkPVqrlEYBwdO48PzBeqmpr3J5sfTAYgTLxIgARIgARIgARIIKwGKxmGNDOdFAiRAAiRAAh0EGs22HKVw7Mm+UEXBjpWqkRMHNS/eZVnJpuPtxetJoB0MEnVvaDV/2tg4CL5JF4i8w4MZmZ5zl3WMYpWFfNr7CXJEEiABEiABEiABEvCQAEVjD2FyKBIgARIgARLwmwCFY+8IR1Fci6PFhncR9W4k2MEgI90PSwLvZrl0JHUYEufCfn7yszK2PuvYbkY6DnwmhvMCywteJEACJEACJEACJBB2AhSNwx4hzo8ESIAESIAEOgg0mi05Xqqx4JkHO2Mon5aRoaxE4TF+ZTlQnq3LbLXpweo5RC8CEAchHNcbLSlW6qHOSFdzrdZbUqpE23YlKrtSFVCcmqnJXK1lOm0IxivHBiWTHjBtywYkQAIkQAIkQAIkEAYCFI3DEAXOgQRIgARIgARsEqBwbBNYj+bIKp0YzkkppGIsxCYI24O5tNBywLu4Wx0J2bthZs/sc6uR9L6dKjZoVqRUxYiCsfcx4IgkQAIkQAIkQAL+EaBo7B9bjkwCJEACJEACvhKgcOwd3rAKb2peEKWYQepdvO2OhIz00aFs6A4WlGg549Jj1y4Ptn+VgP5Qx6go5fx7OCeZNC0puG9IgARIgARIgASiRYCicbTixdmSAAmQAAmQwCICEI4ny3WpN80fjya63gTC9oi/EirdFt1i3L0hEDYBX9mVRMFaxZsIhHsUPLGAAnf6rGMKxuGOGWdHAiRAAiRAAiTQmwBFY+4QEiABEiABEog4gVarrXkcUzh2H0hkDY4VspJKDcjkdK1vPrZRLNLnnn74R1D7I50ekKnpet98xbk/wrlX1P7IZlJaEcXRQoYZxuEMFWdFAiRAAiRAAiRggQBFYwuQ2IQESIAESIAE7BD49oFDcvjFI3Le2Wu0ryAuCMewL6iwQJonuCHKwcf2RDnYgoMqm7XWaEpxJtzF1zwBHdFBVJavkR2B30uCx3I+mwp8b/q9rjiNj/0xtiwbpyVxLSRAAiRAAiRAAgkkQNE4gUHnkkmABEiABPwjsH3ng7LnG0/Jaa9bKT/9+VFZ8+uny+47t/h3w46RIWJROPYGtxIGgyo+N5hLyWghJ/Sn9SZ+fo+i/IRnqw0tq9TvC1msK0bzUq236G/tN2wX42fTKZkYyTLD2AVDdiUBEiABEiABEggHAYrG4YgDZ0ECJEACJBADAj945rDcuPXz8tUv/6mcduoKLdt40x/+uWx4x4WyZfP7AlshMlQhPPJyTwBC7lghp1lV1Br++UbTbsB9rPoxAjLDx4fnM0qRld5u+zOLsBZq9Ge10R0VgjGK3sHehhcJkAAJkAAJkAAJRJ0AReOoR5DzJwESIAESCA0B2FL8tz//azn4P/9qYU579h2Qrdt3ybYt18mG9RcENldkPpYr9cDuF+cbqYxSPzKAlegIsRFif7Plk+oY5wCFYG1K9PejKJ2f+y8E6GIzBdjZjC+b90PnRQIkQAIkQAIkQAJxIEDROA5R5BpIgARIgARCQeCnrxyTdVd/XO69c4u8RedlDNH4+88clm8+fEeg86Rw7B1uPzI9g7Y38I4GRzIikMukZGI4J9NzDc8y/YfyaRkezAhsZ+pNHiiEdecV8mkZH86FdXqcFwmQAAmQAAmQAAk4IkDR2BE2diIBEiABEiABYwI33vIFzZZCLxArMXnHbTfJ711wbqDoKBx7hxuesstHctJstqVYcVekTmWm9qOQmndEOFInARwuYI/Ad7g8680eCcpTm9F0RoBF75xxYy8SIAESIAESIIHwE6BoHP4YcYYkQAIkQAIRIgCBeNNHt8u7118gH9m0YWHmb7/qY3LDB94dqEWFujkK40Gc5OUNgdFCVvLZlBwrVW172EJUHFuWFQjQU9O0o/AmIuEaBbEdGZrfI/A5dmI5ovaY0/7hIhLf2YwUsoIDIF4kQAIkQAIkQAIkEEcCFI3jGFWuiQRIgARIoK8ElI/xDZs2yDWXr5O9+w7I9p0Pyu47t8h5OtuKICdJ4dhb2k4K1/lhceHtqjialwSQgQpriWKlJnM1a0UUVTZ7vdGWEj3JvQyH52NRMPYcKQckARIgARIgARIIGQGKxiELCKdDAiRAAiQQDwL3P7Zf7rr3a1KemZXXn7pCICAHWQjPiGKj2ZajxTnb2bHxiIj3q4DfLDJKrRQ/g4CIr5INAdH7GXPEoAmog4K5WtNUBOahQtDRcX4/CsbO2bEnCZAACZAACZBAdAhQNI5OrDhTEiABEiCBiBEoTVc0f+M1b1wto8OFUMyewrG3YUAxu+UjeSnN1mW22lwyODJHYUeRy6SF3rTeso/KaNgDKJDXy5JEFUWc8bCIXlT4RG2eQQvGeHIFh5Cl8oxce8UlsvHydVFDxvmSAAmQAAmQAAlElABF44gGjtMmARIgARIgAacEGs2WHC8581p1es849+uWIWonyzTOfLi2eQIq27yz+CEy1mFjgZ/Xm23iCjEBHAAhjkFdX9y9R+7avUd7SgXWRvj3t11wrmzZ/L6gpsD7kAAJkAAJkAAJJJgAReMEB59LJwESIAESSC4BCsfexh4C8fKRnFTrLc2GQPnZdstA9vbuHC0qBHKZlIwP50RlFDvxxo7KWuM2T8StkE8HtqwfPHNYK6oKgVhlF3/7wCG58ZYvyI+e3B3YPHgjEiABEiABEiCB5BKgaJzc2HPlJEACJEACCSdA4djbDaBZURSyks2kZGBggHYU3uKNzWg4YBgfzkoKG0ZETpSZ9R/m4M7bi+RlMJcKbJqwNnrPdZ/SrI123HbTwn1hVbF9x9/Kwf/5V4HNhTciARIgARIgARJILgGKxsmNPVdOAiRAAiRAAgLheLJcl3qzRRouCSg7imarLfh3ehi7BBrT7hAhkZUuMqDtEyuFFGOKIvTLQqxWjg1KJj0v8Ad1wYbi/q88Ifsf+ewiP/y3X/1xOe3UFbL7zi1BTYX3IQESIAESIAESSDABisYJDj6XTgIkQAIkQAIg0Gq1NY9jCsfO9wN8aUeGsgu2A8q/loKgc6Zx7Nnpf43s1bFCTqZZAC904VaxClowBgjYUiDLWO9djGJ4d937Nfnql/9UE455kQAJkAAJkAAJkIDfBCga+02Y45MACZAACZBABAhAOJ6aqctcrRmB2YZrit18aZUgODldk1qDmdzhilrws8mmB2RiJL9wsKBmoPfDLs/Wpc1aeMEHp+OO84JxTjLp4Cwp9FOAaAxheNuW67QfG/kb9x0SJ0ACJEACJEACJBB7AhSNYx9iLpAESIAESIAErBOYmq5JpUrh2AoxJfYhQ7tcaQhsKTqvbkKhlfHZJj4EkIk+OpSVbgcIsEFApno+m6LHcZ/D3m/BGMtXBe8+smmD/OyVYwIv4w2XrJVtn/yDPtPh7UmABEiABEiABJJEgKJxkqLNtZIACZAACZCABQLFmbqWDcmrO4FcJiXjwzmZrTakPNubVaclAbkmi0C3THQjCrA1GR7MSLFSk7kas9OD3ilhEIzVmpFdDG/j8nRFNl6+TjasvyBoHLwfCZAACZAACZBAwglQNE74BuDySYAESIAESMCIAITQcqVOOAYElAhox69YFT9rNttSrNCCICkba7RgP3tYZafDKqbE92BgWyVMgnFgi+aNSIAESIAESIAESKAHAYrG3B4kQAIkQAIkQAKGBCgcL8YCUWlsWVYgAE9N1w3tKMy2khMR0WxMvh4+Am4PCdB/Yjjnaq+Fj0p4Z5RNp2RiJNs3D+PwkuHMSIAESIAESIAEkkyAonGSo8+1kwAJkAAJkIAJAQrH84C8tJiwY1fADRo9Al7uFdhV4Ate4yym6M9egGCMonep1IA/N+CoJEACJEACJEACJBBRAhSNIxo4TpsESIAESIAEgiKAwngQrZJ6KZG35KHPLAqjjRWycrxUlXpzaQG9pLKO+rr9KHyo/LPhM06vcW93yGAuLePLshSMvcXK0UiABEiABEiABGJCgKJxTALJZZAACZAACYiUpivyFzsflLddcK783gXnLiA5/OIRuf+x/XLN5evkjDeuJioHBJIoHMMiAHYUyEQ8Ua45sqPohRoC4ymjec3jeLbadBAVdgkTARwEjA5lZdKHrGBkL48PZ6XdFm18fOfljkAhn9aKWfIiARIgARIgARIgARIwJkDRmDuDBEiABEggVgTefvXHZXS4IF/ddevCurbvfFD2fOMp2f/IZ7XXeDkjgMfjkRmbBMHKS4uBXrSDuo+ziLOXVQJBWY7AExvZsXaKMFpdQ5LawfIDB0K8SIAESIAESIAESIAEuhOgaMzdQQIkQAIkECsCe/YdkK3bd8lju27VsoqRfbzuqo/JxisukRs2bYjVWvuxmEazLUeLc7EWjiEoDQ9mpDQbTAYwhOPlIzmp1ltSqtT7EVbe0wWBoIsbDuZSMlbIyTTtKhxFbaSQFYj8vEiABEiABEiABEiABHoToGjMHUICJEACJBArAj995Zisu/rjsmH9BbJty3Vy1+498sXde+R7f/dFZhl7FOlGExnH3ts1eDQ9V8OoTE5kVDdbwXkAaFYYhayk0wOaFUYSsrldBSoEnREziP3NZluzGAkyZvqDhvJssPcOAXrHU6Bg7BgdO5IACZAACZAACSSQAEXjBAadSyYBEiCBuBNApjEyjvc/fIds+uh2Oe3UFbL7zi1xX3ag64ubcKxsIuZqTemnCBeUzUGgmyWGNwuDrQhE65GhrOSz/nhuxy1sFIzjFlGuhwRIgARIgARIwG8CFI39JszxSYAESIAEAiegso1RDO/bBw5pgvF5Z68JfB5xv2FchGNVwCwsj/vDHgNf9K0N5zsIBQwnRvIyExJ7CGWnUqzUZK7WCie0Ps+KgnGfA8DbkwAJkAAJkAAJRJIAReNIho2TJgESIAESMCOADOMfPHNYE4uZZWxGyzkHY9oAACAASURBVPnrEI4ny3WpN6MpVoU1s1f51lIIdL43/eipDhgmp2uCwpBhuZSQjUx5+mIvjgoK3kFY5+WOAKyeUFB29+c/qT29g+vwi0fkxq2fl2uvuEQ2Xr7O3Q3YmwRIgARIgARIIHQEKBqHLiScEAmQAAmQgBcE7n9sv2zf+aBs2fw+/jHrBdAeY7Rabc3jOErCsfKExZyLM+H0hA1bRqvP2yj0w4f1gEGBUx7L+O+p6XqgntxhDd74cE4K+XRYpxepeeEJHhzG4sJB7MhwQd5z3ado/xSpKHKyJEACJEACJGCPAEVje7zYmgRIgARIICIEIBgjK2r/I59lAbwAYgbh+ASyL+vhyb7stmxk8Y4WcjJbbUh5thEAHee3CIN3rvPZx6cnCiRGxTtYidtTIcuGDnI3QECfGM4L3uu8vCMA4fg9H/xjOe+cM7RBkWkMAVllHnt3J45EAiRAAiRAAiQQBgIUjcMQBc6BBEiABEjAUwKl6Yqsu+pjsvGKS+SGTRs8HZuD9SYAoapSbYYWkxLUouQXrDJIm822FCvhzIoObcBdTiyq7HOZlCDLNiy+yy7DYKs7YrZybFAy6QFb/djYGgH1FM/IsiHNqmLNG1db68hWJEACJEACJEACkSNA0ThyIeOESYAESIAEzAjAe/GLu/fI/ofvYAaUGSwfXofdA8SqMF3I2B0fzkq7LZodRbPVDtP0LM0lStmulhYU8kZRz/LW73l4MGPvx/1SMaNg7F+k9+w7IFu379Ju8NVdt1I09g81RyYBEiABEiCBvhOgaNz3EHACJEACJEACJBA/ArB9KFfqoViY8gaOgh2FGbCw++qazT8qr8fJTxqHDYO5tEQpu97JPpkXjHOSSdOSwgk/K32UPcWGd1wo3zpwSOtCewor5NiGBEiABEiABKJJgKJxNOPGWZMACZAACZBA6AmEQTiOo7/rUD4to0NZOVGuSr2ZgPTRgHe64ovs3Foj/B7dVvCoNU3PNUL3FICV+Zu1oWBsRsj967B9QuG70eGC3HvnFinjvz/4x7Lm10/XhGNeJEACJEACJEAC8SNA0Th+MeWKSIAESIAESCA0BPolHENEGilkJJtOyYlyLZJ2FL2CiEzYU0bzmsfxbIg9pEOzES1OJM6Z3Mq6Ya7WlPJsfLyxKRhb3Nwum8H26dsHDskXbrtpwfYJVhV33fs1ueED75YN6y9weQd2JwESIAESIAESCBsBisZhiwjnQwIkQAIkQAIxIwB/Y/gIB3VF3YvWKqekrNMqD7ftkuAZjSJxY4WsZDPxOEyhYOx217M/CZAACZAACZAACXQnQNGYu4MESIAESIAESMB3ApVqU6ama77fZ9lgRvCFTMokZOBCNFs+kpNqvSWlkHhI+x5kj28AIRUMm822lrmdhIJxeI8gqxpZ+FG14MBTBBMjWXoYe/x+4HAkQAIkQAIkQAIkoAhQNOZeIAESIAESIAESCIQAxKnjpaovohyEv5Gh+YJfuEezlRyvX5U9mk4PaCJgEkRPrzZskrO1o1wgEoIxit6lUgNebQWOQwIkQAIkQAIkQAIk0EGAojG3BAmQAAmQAAmQQGAEGs22HC3OeSps6r1ak5xtG2c/Xj82qBJNYZ+CryReKssaa5+arkfisAUHQ+PLshSMk7hhuWYSIAESIAESIIFACVA0DhQ3b0YCJEACJEACJNBoIuPYm+J0Q/m0jA5lZTrBwp9+Ryl7jslyVerN5GRb231XqX1TrNRkrtay2z127dWBAyxkwmxXUcinZXw4Fzv+XBAJkAAJkAAJkAAJhJEAReMwRoVzIgESIAESIIGYE/BCOEbhsiTaUZhtjVwmJRPDOSklxNfZjEfn68zINiaGfQNv5/JsODOvcSAytixrN9xsTwIkQAIkQAIkQAIk4JAARWOH4NiNBEiABEiABEjAHQGnwrGyo6g1mlKcSUbhMrukab1gTIwHDb13kiqsWG+0QlUUcKSQ1Qr38SIBEiABEiABEiABEgiOAEXj4FjzTiRAAiRAAiRAAh0E7ArHg7mUjBZymgdtUn1orW6iJBd562SkvHtRJHBymsUCzfZQmMR1CsZm0eLrJEACJEACJEACJOAPAYrG/nDlqCRAAiRAAiRAAhYJtFptzeO43uztLUtbAYtAdc2UWNpstkOVOWp/Jc57UDx3xi4MfuEUjJ3Fjr1IgARIgARIgARIwAsCFI29oMgxSIAESIAESIAEXBGAcHwCRbjqS4Vj9ch8s9XW7CjwnZc9AsgczWdTcqLsTQFCe3f//9u7vxDJrvtO4L+u6qrqqek/MxMJzBr8ZFiZfZENEnlQYEmw7GVfJsRmjYPDBPyyluUYYsgQmbw4iefBD45lex9iY+EQY3DMamGX2F4UFjywi72r6CVkYPOyAYODNOrpP1Pd9beXU1KVZ1Sj7qrue6tu3fpcaCR6bp0/n/PrefjO6XMW97bA+GL2I7/jTj/2W92LNTbjpwXGM4J5nQABAgQIECCQsYDQOGNQzREgQIAAAQLnF7h32IlWuz9uIF3OdWWzHkft3vCCLs/5BVZtp3Y6ymSnWY+9VieOO6fvYj+/avk/mXar7zRrUVuf3z86pAvv0sV3HgIECBAgQIAAgcUJCI0XZ69nAgQIECBA4BECaTdxOq94FHKmILnTE/plUSyjIwfSub5lNl21gDyL2jirjRTiJte0Wz3P2kn/SNRsVM8ajj8nQIAAAQIECBDIWUBonDOw5gkQIECAAIHZBbr9kxgMBnHv0HEUs+ud/oladS2ubjVKe5mgwDjrivlVe6PayWPnf9rRfHWzEWmHuIcAAQIECBAgQGDxAkLjxa+BERAgQIAAAQKPEEjHURzM+RzVVVmIMp71+1boWB8uYdpJfeLo61zKeXS5Ymo87TrOwjm1+fjORqxX13IZs0YJECBAgAABAgRmFxAaz27mEwQIECBAgMCcBATH+UGnoO6x7UZ0e4O4d3++l5xlPasyhuBZG2Xd3mhH9+5BO9JvBpz3Ga2dwPi8gj5HgAABAgQIEMhHQGicj6tWCRAgQIAAgYwE0vnG6ZxjT/YCo0vOqtW1zHaNZj/K01sUGM9b/Ff9pYsqr23Vh5dUpp/TWZ+31q4e61VHUsxq530CBAgQIECAQN4CQuO8hbVPgAABAgQIXFig1e5HuhDPk4/Asp4DnM6/3WnWY6/VieOOyxLzqY6zQ/sUHKcd63ut7tTHVQiMF7Fa+iRAgAABAgQITC8gNJ7eypsECBAgQIDAAgU6vUHc3W9PHUotcKhL2fXljfVIXxc9bmBek1/WoHtePvPuZ7tZi416dfgz2h+cflyFwHjeq6M/AgQIECBAgMDsAkLj2c18ggABAgQIEJhC4Be/fCN+/tqduP7RZ6Z4e7pXev2TeH3vWHA8HdfMb6XjBtJlcvtH3Thq92f+/Lw+IDCel/Rs/VxqVGP7Uu3U+hEYz2bqbQIECBAgQIDAogSExouS1y8BAgQIECixwMs/uh23XvzreO73fzs+9bFnM51pCo6n2c2Yaacr1FiRzwhOZzCnUDs9u4cd/3hQwLoc1c9xpx/7rYfPIq9VK3F1q+YM4wKumyERIECAAAECBN4pIDRWEwQIECBAgECmAt986eX47g9+nEtgPBpor5+Oquic+WvwmU5shRpLwV86p7bdHUwEf4tiKHKYvSiTovY7umCxtl4ZXrCYjqtIgXG69K5SWSvqsI2LAAECBAgQIEDgAQGhsXIgQIAAAQIEMhO48flbcef//r/44be/FO99z2OZtfuohgTHufJGCv5ScNzvn8x0wVkeoxIY56Gaf5vpjOx0lMjBUW/4X4Fx/uZ6IECAAAECBAhkJSA0zkpSOwQIECBAgECkYyleuPWtePFPPxf/+v3vi7TrOH1v6/KlXHYeC47zL7p0wVmj9qsdo/n3+HAPG/VK7DTrsdfqxHFnMO/u9XdBge3LtdjcWL9gKz5OgAABAgQIECAwbwGh8bzF9UeAAAECBEoucOvr34tXbr86nuVzN67HnX/65/irv/lJfOerN+PpJ5/IVGAwSGccd6LbFyhmCvtAY4u6eG5R/ebluGrtpp3GO5drqzZt8yVAgAABAgQIlEJAaFyKZTQJAgQIECBQLIEPf+IL8dsffSY+c+P6eGDpe7/1zIfi5mc/mflgU3D85mEnOl3Bcea4bzd4qVGN7Uu14QV0nV7+zgLjvFZyPu1uNWvDIyk8BAgQIECAAAECyykgNF7OdTNqAgQIECBQaIH9w1ZsbzYfGuPvfPpP4qknn8glNB51dO+wE612v9A2yzy4WnUtrm414v5xb/iVx5POUr66WR82nQLqk5M8etFmngIC4zx1tU2AAAECBAgQmI+A0Hg+znohQIAAAQKlEEhh8P9+7U6k//7mMx+aCIbfbZLpbOPv/uDHc7kgT3Ccb6nleSldnm3nq6L1kYDAWC0QIECAAAECBMohIDQuxzqaBQECBAgQyF3gF798I258/lYcHNwf9rW1dXl44d0T73/fu/adLsV75af/Z/juS1+9Ge99z2O5jzN1cHDUi4NWdy59rWInaTfwY9uN6PYGce9+Ns4C4+WvJIHx8q+hGRAgQIAAAQIERgJCY7VAgAABAgQITCWQAuMUEKczidNO49///K3hf08Lg9MFeOnr+kefmaqPLF8SHGep+ei2rlyuRW29Em/sty90jMRGvRI7zXrstTpx3Mn/vOT8ZVavh3ThXbr4zkOAAAECBAgQIFAOAaFxOdbRLAgQIECAQO4Cv/7v/2PcfP53xwFwCozTOcXp+e/f/8rwv+l7n/vi1+LpJ5946BK83Af3Lh0IjvOXv+iFdRf9fP4z1MNZAlc269FsVM96baY/T7/ZcOvr34u/u/3q8B+r/uzmp0/9rYaZGvcyAQIECBAgQIDAmQJC4zOJvECAAAECBAgkgbTTOB0vkcKb0ZOCnWc/8YV47sb1cUj8/Be/NvzjdHRFEZ50YdteRkcoFGE+RRxD2mGavnYP2tHtT39zncC4iKs5/ZjSMSU7l/MJjNPfN+lJf9/8/LU7kc5F/8n3vzK3I26mV/AmAQIECBAgQKCcAkLjcq6rWREgQIAAgcwFXv7R7UhnFKcQ58HjJtJuwFduv/rQbuPtzWbm/V+kwVa7H+mCPE9+AvX1SlzdrMf+UTeO2v1TO0phY3o3PbuHnQsdbZHfjLR8mkBaw8d3NmK9upYp1Og3GNLfId/56s3xZZsPHo+TaYcaI0CAAAECBAgQeKSA0FhhECBAgAABAlMLjALiB88x/tlrd4bnG//D/3hp6nYW8WI6K3f38GJn7y5i3MvU5zSX2U3zzjLNeRXHmldgnCwf9XdM+v6H/8Mfxu99/CPxqY89u4rk5kyAAAECBAgQmLuA0Hju5DokQIAAAQLLLfDhT3xhOIE/v/npeOrJJ+KFL/9l/OJf7g4vxCv60+ufxOt7x3a25rhQKRS+tlWPdncQ+63uQz0JjHOEn1PTb61hPdarlcx7HB13887fZvirv/nJMEx2PEXm5BokQIAAAQIECLyrgNBYcRAgQIAAAQIzCYwuu0vnjKbnX73nsWFgnM47XoYnBcd399vRH0x/9u4yzKtIY3zU8RMb9UrsNOux1+pE2vXtWT6BPAPjpJGOwLn14l/H//pv/2mMc+ef/jlu/MGX4/q/+424+dlPLh+aERMgQIAAAQIEllRAaLykC2fYBAgQIEBg0QJpV2D6evrJJxY9lJn77/UHcXe/IzieWW62D2w3a9GoVYa7jjfqVWH9bHyFejvvwDhN9u9uvxp//OW/jB9++0vDf4RKf7+MLuA87TcZ0ntbm83x+ceFgjMYAgQIECBAgMCSCgiNl3ThDJsAAQIECBC4mIDg+GJ+037617Ybw+D4jf12dLp2GE/rVqT35hEYj+b7/Be/Fj//+3+Mpz74gUi7jNNz1m8y/M6n/yTSb0Cc9V6RTI2FAAECBAgQIFB0AaFx0VfI+AgQIECAAIHcBATHudHGg0dUpJ3GmxvrsXvYiU5PcJyfevYt16qVuLpVy+UM43cbbTqmIh1/k85Mv/7RZ06dVDrr+OW//Wn81jMfilduvxo3n//dMz+TvZIWCRAgQIAAAQLlExAal29NzYgAAQIECBCYQWAwSGccd6LbF2bOwHbqq4+68K5WXYurW424f9wbfnmKL5AC43TpXaWyttDBpl3EB4etiXPTU7j8wq1vxYt/+rn4zWc+FOnCvG985z87/3ihq6VzAgQIECBAoCwCQuOyrKR5ECBAgAABAucWEByfm27ig48KjEcvnfZn2Y1AS1kI1GuVuLa5+MA4zWW0m3h01vFoft986eX4xksvx3M3rsdnblwffjudb5zC5PQ9DwECBAgQIECAwPkFhMbnt/NJAgQIECBAoGQC9w470Wr3Szar+U1no16JnWY99lqdOO48eud2Orbise1GdHuDuHe/O7/B6WlqgWajGlc261O/n/eL6YK8dL7xKBh+sL90jMXzL/xF/N7HP/LIP897bNonQIAAAQIECJRVQGhc1pU1LwIECBAgQOBcAoLjc7HF1qX1uNRYj7v77egPTs5s5MrlWtTW37og7+Ts189szwvZCBQtMH7nrNJO4v/yo9sPBcSjYyr+53/9ZmxvNrOB0AoBAgQIECBAYMUFhMYrXgCmT4AAAQIECEwKHBz14qBlF+y0tTFrYDxq97yfm3Zc3ptNYKtZG4b/RX5GAfFPvv+V8RnH6SzjdITFg98r8hyMjQABAgQIECCwDAJC42VYJWMkQIAAAQIE5i4gOD6bPB01cfXtYwx2Dzvn2jF8eWM90tfuQTu6fVuOz1bP541lCIxHM09nGX/3Bz+OT338I8Odxenyu6c++IHhhXgeAgQIECBAgACBbASExtk4aoUAAQIECBAooYDg+N0XNctL7errlWH4vH/UjSNnSs/9J2mZAuMRTtpdnILj9Dz9wQ/EH332k46mmHvl6JAAAQIECBAos4DQuMyra24ECBAgQIDAhQXuH/diz4VtDzlmGRiPGs6jzQsv/go0sIyB8QosiykSIECAAAECBBYuIDRe+BIYAAECBAgQIFB0gVa7H+mCPE/ERr0SO8167LU6cdwZZEqSguNrW/Vodwex70zpTG0f1djO5drwaBAPAQIECBAgQIAAgXcKCI3VBAECBAgQIEBgCoEUHO/dP9+5vVM0vxSvzOPiutE5yem/bx6stneeRXFlsx7NRjXPLrRNgAABAgQIECCwxAJC4yVePEMnQIAAAQIE5ivQ65/E63vH57rwbb4jzb63eQTGD456u1mLRq0yDI77AxfkZbWiKYzfuSwwzspTOwQIECBAgACBsgoIjcu6suZFgAABAgQI5CKQguO7++2VCTJHO38T5u7hfHf+zjuozqVgCtRoWsvHdzZivbpWoFEZCgECBAgQIECAQBEFhMZFXBVjIkCAAAECBAot0OsP4u5++XfAFuFyukuNamxfqg0D604v2zOUC11kGQ9OYJwxqOYIECBAgAABAiUXEBqXfIFNjwABAgQIEMhHoOzBcREC49HK1aprcXWrEfePe8Mvz2wCb61lPdarldk+6G0CBAgQIECAAIGVFRAar+zSmzgBAgQIECBwUYGyBscb9UrsNOux1+rEcacYu3uLFGJftG7m+XmB8Ty19UWAAAECBAgQKI+A0Lg8a2kmBAgQIECAwAIEBoN0xnEnuv1ihKsXJSjyOcLpiIVrW/Xo909ir9VdyQsJZ1lfgfEsWt4lQIAAAQIECBB4UEBorB4IECBAgAABAhcUKEtwXOTA+MElunK5FrX1Srx5UP5zpc9bmgLj88r5HAECBAgQIECAQBIQGqsDAgQIECBAgEAGAik43m91o9XuZ9DafJtIO3ivbtaHnaYL505O5tv/eXpbloD7PHO76Gdq1Upc3ao5w/iikD5PgAABAgQIEFhhAaHxCi++qRMgQIAAAQLZC9w77CxVcLzMZwVf3liPFB7f3W9Ht78ESXf25TbRYgqM06V3lcraHHrTBQECBAgQIECAQFkFhMZlXVnzIkCAAAECBBYmcHDUi4NWd2H9T9vxMgfGoznW1yvDXdL7R904WsJd3tOu1TTv1WuVuLYpMJ7GyjsECBAgQIAAAQKnCwiNVQgBAgQIECBAIAeBogfHG/VK7DTrsdfqxHFnuS/xK0P4fdESbDaqceXtI0Yu2pbPEyBAgAABAgQIEBAaqwECBAgQIECAQE4CRQ2Oy3gecAqOr23Vo90dDM+WXqVHYLxKq22uBAgQIECAAIH5CAiN5+OsFwIECBAgQGBFBYoWHJcxMB6VVrrQb6dZi2p1Ld48WI4L/S76Y7HVrA3PdfYQIECAAAECBAgQyFJAaJylprYIECBAgAABAo8QaLX7kS7IW+STAtV09m96dg/LHahuN2uxUa8OL8jrD8p7QZ7AeJE/UfomQIAAAQIECJRbQGhc7vU1OwIECBAgQKAgAik43ru/mLB2Fc/8He2o3j1oR7dfvuBYYFyQH2zDIECAAAECBAiUVEBoXNKFNS0CBAgQIECgeAK9/km8vnccJ3PMMFcxMB6t/KVGNbYv1Upx2d+D1SwwLt7PthERIECAAAECBMomIDQu24qaDwECBAgQIFBogRQcz+vYhI16JXaa9dKFprMscK26Fle3GnH/uDf8WvZHYLzsK2j8BAgQIECAAIHlEBAaL8c6GSUBAgQIECBQIoFefxB39zu5nrdb5gvvZi2Fsuy2vrJZj2ajOuv0vU+AAAECBAgQIEBgZgGh8cxkPkCAAAECBAgQuLhAnsGxwHhyfdJFgNe26tHvn8ReqzvXI0IuXi0RAuMsFLVBgAABAgQIECAwrYDQeFop7xEgQIAAAQIEMhbIOjhOwejVzfpwlLuHi7l0L2OizJvbbtaiUavEmwf57vTOauBpTR/f2Yj16lpWTWqHAAECBAgQIECAwJkCQuMzibxAgAABAgQIEMhPIAXHuwfd6PYHF+qkLEcwXAhhyg8vy05sgfGUC+o1AgQIECBAgACBzAWExpmTapAAAQIECBAgMJvAYJAux+ucOzgWGM/mnd6+1KjGTrM2vJSw2z+ZvYGcP/HWmtZjvVrJuSfNEyBAgAABAgQIEJgUEBqrCgIECBAgQIBAAQRScLzf6kar3Z9pNBv1Suw067HX6sRx52K7lWfquAQv19crw3OO0xnHRzO65zl9gXGeutomQIAAAQIECBCYRkBoPI2SdwgQIECAAAECcxK4d9iZOjhelmMW5kR3rm6KtktbYHyuZfQhAgQIECBAgACBjAWExhmDao4AAQIECBAgcFGBg6NeHLS6pzYjML6o8q8+n4LatOO43R0Md3sv6hEYL0pevwQIECBAgAABAu8UEBqrCQIECBAgQIBAAQXeLThOl6Nd3awPR7x72ImT4h3HW0DNs4eUXNMZx9XqWrx5MH9XgfHZa+QNAgQIECBAgACB+QkIjednrScCBAgQIECAwEwC7wyOi3aUwkyTWZKXF7GDu1atDC+9q1TWlkTJMAkQIECAAAECBMouIDQu+wqbHwECBAgQILDUAqPgWGA8v2W8vLEe6Wv3oB3dfr5buQXG81tXPREgQIAAAQIECEwvIDSe3sqbBAgQIECAAIGFCBx3BlGrrsVeqxPp/z35C1xqVGP7Ui1X82ajGlfePmok/xnpgQABAgQIECBAgMD0AkLj6a28SYAAAQIECBBYmEAKi3cP284wnuMKpKD+6lYj7h/3hl9ZPgLjLDW1RYAAAQIECBAgkLWA0DhrUe0RIECAAAECBHIS6PVP4vW9Y8FxTr6PajaPY0G2mrVIZyd7CBAgQIAAAQIECBRVQGhc1JUxLgIECBAgQIDAIwQEx/Mvi7W1iGtb9ej3T2Kv1b1QaC8wnv/66ZEAAQIECBAgQGB2AaHx7GY+QYAAAQIECBBYqECvP4i7+53oD/K9pG2hkyxg59vNWjRqlXjz4Hz2AuMCLqohESBAgAABAgQIPFJAaKwwCBAgQIAAAQJLKCA4XsyipWMlLjXW4+5+e6bQXmC8mPXSKwECBAgQIECAwPkEhMbnc/MpAgQIECBAgMDCBQTHi1mCS41q7DRrwx3Hnd7gzEEIjM8k8gIBAgQIECBAgEDBBITGBVsQwyFAgAABAgQIzCKQguPdg250+2eHl7O0693TBWrVtfi17cbwjOOjdv9dX76yWY9mo4qTAAECBAgQIECAwFIJCI2XarkMlgABAgQIECAwKTAYnAzPOBYcz7c6qpW3guOjdi8OjnoTnQuM57seeiNAgAABAgQIEMhOQGicnaWWCBAgQIAAAQILE0jB8X6rG61Tdr0ubHAl7jgFx9e26tHuDob+6Vlbi3h8ZyPWq2slnrmpESBAgAABAgQIlFlAaFzm1TU3AgQIECBAYOUE7h12BMdzXvUUEqczjqvVtbh32B3uPhYYz3kRdEeAAAECBAgQIJCpgNA4U06NESBAgAABAgQWL7B3vxv3jyePS1j8yMo9gu3LtdjcWC/3JM2OAAECBAgQIEBgJQSExiuxzCZJgAABAgQIrJpAOmP34O3jElZt7ouY71vnG9djvVpZRPf6JECAAAECBAgQIJCpgNA4U06NESBAgAABAqsu8LPX7sTTTz5RCAbB8XyWQWA8H2e9ECBAgAABAgQIzE9AaDw/az0RIECAAAECKyDwb/7tjXjuxvX4zI3rhZit4DjfZRAY5+urdQIECBAgQIAAgcUICI0X465XAgQIECBAoIQCv/jlG/HsJ74wnNnNz34yPvWxZwsxy1a7H+mCPE+2AgLjbD21RoAAAQIECBAgUBwBoXFx1sJICBAgQIAAgSUXeP6LX4sPvP99w1l846WX46Wv3oynCnJUheA42+KqVSvDM4wrlbVsG9YaAQIECBAgQIAAgQIICI0LsAiGQIAAAQIECJRP4NbXvxcv/+1P44ff/lK89z2PvUotYQAADCdJREFUFWKCvf5JvL53HCcnhRjO0g5CYLy0S2fgBAgQIECAAAECUwoIjaeE8hoBAgQIECBAYFaBG5+/FenIirTj+OCwNfxa9M5jwfGsq/jw+81GNa5s1i/WiE8TIECAAAECBAgQKLiA0LjgC2R4BAgQIECAwPIKpMA4BccHB/eHk3jxz/5g4aFxGkevP4i7+53oD2w5nqW6BMazaHmXAAECBAgQIEBgmQWExsu8esZOgAABAgQIFF4gHVPxyu1Xh7uNi3JMheB49rLZatZi69L67B/0CQIECBAgQIAAAQJLKCA0XsJFM2QCBAgQIEBgOQR+9tqdeOHWtwoXGI/07Diero4ExtM5eYsAAQIECBAgQKA8AkLj8qylmRAgQIAAAQIEZhZIwfHuQTe6/cHMn12FDwiMV2GVzZEAAQIECBAgQOCdAkJjNUGAAAECBAgQWHGBweBkeMax4PjhQhAYr/gPhukTIECAAAECBFZYQGi8wotv6gQIECBAgAABAgQIECBAgAABAgQIEHingNBYTRAgQIAAAQIECBAgQIAAAQIECBAgQIDAWEBorBgIECBAgAABAgQIECBAgAABAgQIECBAQGisBggQIECAAAECBAgQIECAAAECBAgQIEBgUsBOY1VBgAABAgQIECBAgAABAgQIECBAgAABAmMBobFiIECAAAECBAgQIECAAAECBAgQIECAAAGhsRogQIAAAQIECBAgQIAAAQIECBAgQIAAgUkBO41VBQECBAgQIECAAAECBAgQIECAAAECBAiMBYTGioEAAQIECBAgQIAAAQIECBAgQIAAAQIEhMZqgAABAgQIECBAgAABAgQIECBAgAABAgQmBew0VhUECBAgQIAAAQIECBAgQIAAAQIECBAgMBYQGisGAgQIECBAgAABAgQIECBAgAABAgQIEBAaqwECBAgQIECAAAECBAgQIECAAAECBAgQmBSw01hVECBAgAABAgQIECBAgAABAgQIECBAgMBYQGisGAgQIECAAAECBAgQIECAAAECBAgQIEBAaKwGCBAgQIAAAQIECBAgQIAAAQIECBAgQGBSwE5jVUGAAAECBAgQIECAAAECBAgQIECAAAECYwGhsWIgQIAAAQIECBAgQIAAAQIECBAgQIAAAaGxGiBAgAABAgQIECBAgAABAgQIECBAgACBSQE7jVUFAQIECBAgQIAAAQIECBAgQIAAAQIECIwFhMaKgQABAgQIECBAgAABAgQIECBAgAABAgSExmqAAAECBAgQIECAAAECBAgQIECAAAECBCYF7DRWFQQIECBAgAABAgQIECBAgAABAgQIECAwFhAaKwYCBAgQIECAAAECBAgQIECAAAECBAgQEBqrAQIECBAgQIAAAQIECBAgQIAAAQIECBCYFLDTWFUQIECAAAECBAgQIECAAAECBAgQIECAwFhAaKwYCBAgQIAAAQIECBAgQIAAAQIECBAgQEBorAYIECBAgAABAgQIECBAgAABAgQIECBAYFLATmNVQYAAAQIECBAgQIAAAQIECBAgQIAAAQJjAaGxYiBAgAABAgQIECBAgAABAgQIECBAgAABobEaIECAAAECBAgQIECAAAECBAgQIECAAIFJATuNVQUBAgQIECBAgAABAgQIECBAgAABAgQIjAWExoqBAAECBAgQIECAAAECBAgQIECAAAECBITGaoAAAQIECBAgQIAAAQIECBAgQIAAAQIEJgXsNFYVBAgQIECAAAECBAgQIECAAAECBAgQIDAWEBorBgIECBAgQIAAAQIECBAgQIAAAQIECBAQGqsBAgQIECBAgAABAgQIECBAgAABAgQIEJgUsNNYVRAgQIAAAQIECBAgQIAAAQIECBAgQIDAWEBorBgIECBAgAABAgQIECBAgAABAgQIECBAQGisBggQIECAAAECBAgQIECAAAECBAgQIEBgUsBOY1VBgAABAgQIECBAgAABAgQIECBAgAABAmMBobFiIECAAAECBAgQIECAAAECBAgQIECAAAGhsRogQIAAAQIECBAgQIAAAQIECBAgQIAAgUkBO41VBQECBAgQIECAAAECBAgQIECAAAECBAiMBYTGioEAAQIECBAgQIAAAQIECBAgQIAAAQIEhMZqgAABAgQIECBAgAABAgQIECBAgAABAgQmBew0VhUECBAgQIAAAQIECBAgQIAAAQIECBAgMBYQGisGAgQIECBAgAABAgQIECBAgAABAgQIEBAaqwECBAgQIECAAAECBAgQIECAAAECBAgQmBSw01hVECBAgAABAgQIECBAgAABAgQIECBAgMBYQGisGAgQIECAAAECBAgQIECAAAECBAgQIEBAaKwGCBAgQIAAAQIECBAgQIAAAQIECBAgQGBSwE5jVUGAAAECBAgQIECAAAECBAgQIECAAAECYwGhsWIgQIAAAQIECBAgQIAAAQIECBAgQIAAAaGxGiBAgAABAgQIECBAgAABAgQIECBAgACBSQE7jVUFAQIECBAgQIAAAQIECBAgQIAAAQIECIwFhMaKgQABAgQIECBAgAABAgQIECBAgAABAgSExmqAAAECBAgQIECAAAECBAgQIECAAAECBCYF7DRWFQQIECBAgAABAgQIECBAgAABAgQIECAwFhAaKwYCBAgQIECAAAECBAgQIECAAAECBAgQEBqrAQIECBAgQIAAAQIECBAgQIAAAQIECBCYFLDTWFUQIECAAAECBAgQIECAAAECBAgQIECAwFhAaKwYCBAgQIAAAQIECBAgQIAAAQIECBAgQEBorAYIECBAgAABAgQIECBAgAABAgQIECBAYFLATmNVQYAAAQIECBAgQIAAAQIECBAgQIAAAQJjAaGxYiBAgAABAgQIECBAgAABAgQIECBAgAABobEaIECAAAECBAgQIECAAAECBAgQIECAAIFJATuNVQUBAgQIECBAgAABAgQIECBAgAABAgQIjAWExoqBAAECBAgQIECAAAECBAgQIECAAAECBITGaoAAAQIECBAgQIAAAQIECBAgQIAAAQIEJgXsNFYVBAgQIECAAAECBAgQIECAAAECBAgQIDAWEBorBgIECBAgQIAAAQIECBAgQIAAAQIECBAQGqsBAgQIECBAgAABAgQIECBAgAABAgQIEJgUsNNYVRAgQIAAAQIECBAgQIAAAQIECBAgQIDAWEBorBgIECBAgAABAgQIECBAgAABAgQIECBAQGisBggQIECAAAECBAgQIECAAAECBAgQIEBgUsBOY1VBgAABAgQIECBAgAABAgQIECBAgAABAmMBobFiIECAAAECBAgQIECAAAECBAgQIECAAAGhsRogQIAAAQIECBAgQIAAAQIECBAgQIAAgUkBO41VBQECBAgQIECAAAECBAgQIECAAAECBAiMBYTGioEAAQIECBAgQIAAAQIECBAgQIAAAQIEhMZqgAABAgQIECBAgAABAgQIECBAgAABAgQmBew0VhUECBAgQIAAAQIECBAgQIAAAQIECBAgMBYQGisGAgQIECBAgAABAgQIECBAgAABAgQIEBAaqwECBAgQIECAAAECBAgQIECAAAECBAgQmBSw01hVECBAgAABAgQIECBAgAABAgQIECBAgMBYQGisGAgQIECAAAECBAgQIECAAAECBAgQIEBAaKwGCBAgQIAAAQIECBAgQIAAAQIECBAgQGBSwE5jVUGAAAECBAgQIECAAAECBAgQIECAAAECYwGhsWIgQIAAAQIECBAgQIAAAQIECBAgQIAAAaGxGiBAgAABAgQIECBAgAABAgQIECBAgACBSQE7jVUFAQIECBAgQIAAAQIECBAgQIAAAQIECIwFhMaKgQABAgQIECBAgAABAgQIECBAgAABAgSExmqAAAECBAgQIECAAAECBAgQIECAAAECBCYF7DRWFQQIECBAgAABAgQIECBAgAABAgQIECAwFhAaKwYCBAgQIECAAAECBAgQIECAAAECBAgQEBqrAQIECBAgQIAAAQIECBAgQIAAAQIECBCYFLDTWFUQIECAAAECBAgQIECAAAECBAgQIECAwFhAaKwYCBAgQIAAAQIECBAgQIAAAQIECBAgQEBorAYIECBAgAABAgQIECBAgAABAgQIECBAYFLg/wNvxU0s5EFE9QAAAABJRU5ErkJggg==",
+ "text/html": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"layout = go.Layout(\n",
" autosize=False,\n",
@@ -239,6 +8169,14 @@
"metadata": {},
"outputs": [],
"source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "f1cd7183-c514-4f87-a8cc-e14228228e24",
+ "metadata": {},
+ "outputs": [],
+ "source": []
}
],
"metadata": {
diff --git a/notebooks/visualize_encoders.ipynb b/notebooks/visualize_encoders.ipynb
index b09536150..644a999ca 100644
--- a/notebooks/visualize_encoders.ipynb
+++ b/notebooks/visualize_encoders.ipynb
@@ -9,24 +9,13 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 1,
"metadata": {},
- "outputs": [
- {
- "data": {
- "application/javascript": "\n setTimeout(function() {\n var nbb_cell_id = 6;\n var nbb_unformatted_code = \"import torch\\nimport mediapy as media\\nfrom pyrad.nerf.field_modules import encoding\";\n var nbb_formatted_code = \"import torch\\nimport mediapy as media\\nfrom pyrad.nerf.field_modules import encoding\";\n var nbb_cells = Jupyter.notebook.get_cells();\n for (var i = 0; i < nbb_cells.length; ++i) {\n if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n nbb_cells[i].set_text(nbb_formatted_code);\n }\n break;\n }\n }\n }, 500);\n ",
- "text/plain": [
- "
"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
+ "outputs": [],
"source": [
"import torch\n",
"import mediapy as media\n",
- "from pyrad.nerf.field_modules import encoding"
+ "from pyrad.fields.modules import encoding"
]
},
{
@@ -39,7 +28,7 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 2,
"metadata": {},
"outputs": [
{
@@ -79,16 +68,6 @@
},
"metadata": {},
"output_type": "display_data"
- },
- {
- "data": {
- "application/javascript": "\n setTimeout(function() {\n var nbb_cell_id = 7;\n var nbb_unformatted_code = \"num_frequencies = 4\\nmin_freq_exp = 0\\nmax_freq_exp = 6\\ninclude_input = True\\nresolution = 128\\n\\nencoder = encoding.NeRFEncoding(\\n in_dim=2,\\n num_frequencies=num_frequencies,\\n min_freq_exp=min_freq_exp,\\n max_freq_exp=max_freq_exp,\\n include_input=include_input,\\n)\\n\\nx_samples = torch.linspace(0, 1, resolution)\\ngrid = torch.stack(torch.meshgrid([x_samples, x_samples], indexing=\\\"ij\\\"), dim=-1)\\n\\nencoded_values = encoder(grid)\\n\\nprint(\\\"Input Values:\\\")\\nmedia.show_images(torch.moveaxis(grid, 2, 0), cmap=\\\"plasma\\\", border=True)\\nprint(\\\"Encoded Values:\\\")\\nmedia.show_images(torch.moveaxis(encoded_values, 2, 0), cmap=\\\"plasma\\\", border=True)\";\n var nbb_formatted_code = \"num_frequencies = 4\\nmin_freq_exp = 0\\nmax_freq_exp = 6\\ninclude_input = True\\nresolution = 128\\n\\nencoder = encoding.NeRFEncoding(\\n in_dim=2,\\n num_frequencies=num_frequencies,\\n min_freq_exp=min_freq_exp,\\n max_freq_exp=max_freq_exp,\\n include_input=include_input,\\n)\\n\\nx_samples = torch.linspace(0, 1, resolution)\\ngrid = torch.stack(torch.meshgrid([x_samples, x_samples], indexing=\\\"ij\\\"), dim=-1)\\n\\nencoded_values = encoder(grid)\\n\\nprint(\\\"Input Values:\\\")\\nmedia.show_images(torch.moveaxis(grid, 2, 0), cmap=\\\"plasma\\\", border=True)\\nprint(\\\"Encoded Values:\\\")\\nmedia.show_images(torch.moveaxis(encoded_values, 2, 0), cmap=\\\"plasma\\\", border=True)\";\n var nbb_cells = Jupyter.notebook.get_cells();\n for (var i = 0; i < nbb_cells.length; ++i) {\n if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n nbb_cells[i].set_text(nbb_formatted_code);\n }\n break;\n }\n }\n }, 500);\n ",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
}
],
"source": [
@@ -127,7 +106,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 3,
"metadata": {},
"outputs": [
{
@@ -159,7 +138,7 @@
{
"data": {
"text/html": [
- ""
+ ""
],
"text/plain": [
""
@@ -167,16 +146,6 @@
},
"metadata": {},
"output_type": "display_data"
- },
- {
- "data": {
- "application/javascript": "\n setTimeout(function() {\n var nbb_cell_id = 8;\n var nbb_unformatted_code = \"num_frequencies = 8\\nscale = 10\\nresolution = 128\\n\\nencoder = encoding.RFFEncoding(in_dim=2, num_frequencies=num_frequencies, scale=scale)\\n\\nx_samples = torch.linspace(0, 1, resolution)\\ngrid = torch.stack(torch.meshgrid([x_samples, x_samples], indexing=\\\"ij\\\"), dim=-1)\\n\\nencoded_values = encoder(grid)\\n\\nprint(\\\"Input Values:\\\")\\nmedia.show_images(torch.moveaxis(grid, 2, 0), cmap=\\\"plasma\\\", border=True)\\nprint(\\\"Encoded Values:\\\")\\nmedia.show_images(torch.moveaxis(encoded_values, 2, 0), cmap=\\\"plasma\\\", border=True)\";\n var nbb_formatted_code = \"num_frequencies = 8\\nscale = 10\\nresolution = 128\\n\\nencoder = encoding.RFFEncoding(in_dim=2, num_frequencies=num_frequencies, scale=scale)\\n\\nx_samples = torch.linspace(0, 1, resolution)\\ngrid = torch.stack(torch.meshgrid([x_samples, x_samples], indexing=\\\"ij\\\"), dim=-1)\\n\\nencoded_values = encoder(grid)\\n\\nprint(\\\"Input Values:\\\")\\nmedia.show_images(torch.moveaxis(grid, 2, 0), cmap=\\\"plasma\\\", border=True)\\nprint(\\\"Encoded Values:\\\")\\nmedia.show_images(torch.moveaxis(encoded_values, 2, 0), cmap=\\\"plasma\\\", border=True)\";\n var nbb_cells = Jupyter.notebook.get_cells();\n for (var i = 0; i < nbb_cells.length; ++i) {\n if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n nbb_cells[i].set_text(nbb_formatted_code);\n }\n break;\n }\n }\n }, 500);\n ",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
}
],
"source": [
@@ -207,7 +176,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 4,
"metadata": {},
"outputs": [
{
@@ -239,7 +208,7 @@
{
"data": {
"text/html": [
- ""
+ ""
],
"text/plain": [
""
@@ -247,16 +216,6 @@
},
"metadata": {},
"output_type": "display_data"
- },
- {
- "data": {
- "application/javascript": "\n setTimeout(function() {\n var nbb_cell_id = 9;\n var nbb_unformatted_code = \"num_levels = 8\\nmin_res = 2\\nmax_res = 128\\nhash_table_size = 2**4 # Typically much larger tables are used\\n\\nresolution = 128\\nslice = 0\\n\\n# Fixing features_per_level to 3 for easy RGB visualization. Typical value is 2 in networks\\nfeatures_per_level = 3\\n\\nencoder = encoding.HashEncoding(\\n num_levels=num_levels,\\n min_res=min_res,\\n max_res=max_res,\\n hash_table_size=hash_table_size,\\n features_per_level=features_per_level,\\n hash_init_scale=0.001,\\n)\\n\\nx_samples = torch.linspace(0, 1, resolution)\\ngrid = torch.stack(torch.meshgrid([x_samples, x_samples, x_samples], indexing=\\\"ij\\\"), dim=-1)\\n\\nencoded_values = encoder(grid)\\n\\ngrid_slice = grid[slice, ...]\\nencoded_values_slice = encoded_values[slice, ...]\\n\\nprint(\\\"Input Values:\\\")\\nmedia.show_images(torch.moveaxis(grid_slice, 2, 0), cmap=\\\"plasma\\\", border=True)\\n\\nprint(\\\"Encoded Values:\\\")\\nencoded_images = encoded_values_slice.view(resolution, resolution, num_levels, 3)\\nencoded_images = torch.moveaxis(encoded_images, 2, 0)\\nencoded_images -= torch.min(encoded_images)\\nencoded_images /= torch.max(encoded_images)\\nmedia.show_images(encoded_images.detach().numpy(), cmap=\\\"plasma\\\", border=True)\";\n var nbb_formatted_code = \"num_levels = 8\\nmin_res = 2\\nmax_res = 128\\nhash_table_size = 2**4 # Typically much larger tables are used\\n\\nresolution = 128\\nslice = 0\\n\\n# Fixing features_per_level to 3 for easy RGB visualization. Typical value is 2 in networks\\nfeatures_per_level = 3\\n\\nencoder = encoding.HashEncoding(\\n num_levels=num_levels,\\n min_res=min_res,\\n max_res=max_res,\\n hash_table_size=hash_table_size,\\n features_per_level=features_per_level,\\n hash_init_scale=0.001,\\n)\\n\\nx_samples = torch.linspace(0, 1, resolution)\\ngrid = torch.stack(\\n torch.meshgrid([x_samples, x_samples, x_samples], indexing=\\\"ij\\\"), dim=-1\\n)\\n\\nencoded_values = encoder(grid)\\n\\ngrid_slice = grid[slice, ...]\\nencoded_values_slice = encoded_values[slice, ...]\\n\\nprint(\\\"Input Values:\\\")\\nmedia.show_images(torch.moveaxis(grid_slice, 2, 0), cmap=\\\"plasma\\\", border=True)\\n\\nprint(\\\"Encoded Values:\\\")\\nencoded_images = encoded_values_slice.view(resolution, resolution, num_levels, 3)\\nencoded_images = torch.moveaxis(encoded_images, 2, 0)\\nencoded_images -= torch.min(encoded_images)\\nencoded_images /= torch.max(encoded_images)\\nmedia.show_images(encoded_images.detach().numpy(), cmap=\\\"plasma\\\", border=True)\";\n var nbb_cells = Jupyter.notebook.get_cells();\n for (var i = 0; i < nbb_cells.length; ++i) {\n if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n nbb_cells[i].set_text(nbb_formatted_code);\n }\n break;\n }\n }\n }, 500);\n ",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
}
],
"source": [
@@ -309,7 +268,7 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 5,
"metadata": {},
"outputs": [
{
@@ -387,16 +346,6 @@
},
"metadata": {},
"output_type": "display_data"
- },
- {
- "data": {
- "application/javascript": "\n setTimeout(function() {\n var nbb_cell_id = 10;\n var nbb_unformatted_code = \"levels = 4\\n\\nheight = 100\\nwidth = 150\\n\\nencoder = encoding.SHEncoding(levels=levels)\\n\\ntheta = torch.linspace(-torch.pi, torch.pi, width)\\nphi = torch.linspace(0, torch.pi, height)\\n[theta, phi] = torch.meshgrid([theta, phi], indexing=\\\"xy\\\")\\n\\ndirections = torch.stack([torch.cos(theta) * torch.sin(phi), torch.sin(theta) * torch.sin(phi), torch.cos(phi)], dim=-1)\\n\\nencoded_values = encoder(directions)\\nencoded_values = torch.moveaxis(encoded_values, 2, 0)\\n\\nfor level in range(levels):\\n print(f\\\"Level: {level+1}\\\")\\n media.show_images(encoded_values[level**2 : (level + 1) ** 2, ...], cmap=\\\"plasma\\\", border=True)\";\n var nbb_formatted_code = \"levels = 4\\n\\nheight = 100\\nwidth = 150\\n\\nencoder = encoding.SHEncoding(levels=levels)\\n\\ntheta = torch.linspace(-torch.pi, torch.pi, width)\\nphi = torch.linspace(0, torch.pi, height)\\n[theta, phi] = torch.meshgrid([theta, phi], indexing=\\\"xy\\\")\\n\\ndirections = torch.stack(\\n [\\n torch.cos(theta) * torch.sin(phi),\\n torch.sin(theta) * torch.sin(phi),\\n torch.cos(phi),\\n ],\\n dim=-1,\\n)\\n\\nencoded_values = encoder(directions)\\nencoded_values = torch.moveaxis(encoded_values, 2, 0)\\n\\nfor level in range(levels):\\n print(f\\\"Level: {level+1}\\\")\\n media.show_images(\\n encoded_values[level**2 : (level + 1) ** 2, ...], cmap=\\\"plasma\\\", border=True\\n )\";\n var nbb_cells = Jupyter.notebook.get_cells();\n for (var i = 0; i < nbb_cells.length; ++i) {\n if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n nbb_cells[i].set_text(nbb_formatted_code);\n }\n break;\n }\n }\n }, 500);\n ",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
}
],
"source": [
@@ -434,7 +383,7 @@
"hash": "024fe9dea615e4e34961116ff517c7e9f5910440e3d2c8eb4560299f11aaf2e7"
},
"kernelspec": {
- "display_name": "Python 3.9.11 ('pyrad')",
+ "display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -448,10 +397,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.9.12"
- },
- "orig_nbformat": 4
+ "version": "3.8.13"
+ }
},
"nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
}
diff --git a/pyrad/nerf/__init__.py b/pyrad/__init__.py
similarity index 100%
rename from pyrad/nerf/__init__.py
rename to pyrad/__init__.py
diff --git a/pyrad/structures/cameras.py b/pyrad/cameras/cameras.py
similarity index 85%
rename from pyrad/structures/cameras.py
rename to pyrad/cameras/cameras.py
index 2ccd69e09..86468835e 100644
--- a/pyrad/structures/cameras.py
+++ b/pyrad/cameras/cameras.py
@@ -9,22 +9,20 @@ import torch
from torch.nn.functional import normalize
from torchtyping import TensorType
-from pyrad.structures.rays import RayBundle
-
-
-@dataclass
-class Rays:
- """Camera rays. Can be arbitrary dimension"""
-
- origin: TensorType[..., 3]
- direction: TensorType[..., 3]
+from pyrad.cameras.rays import RayBundle
+from pyrad.utils.misc import is_not_none
class Camera:
"""Base Camera. Intended to be subclassed"""
- def __init__(self, camera_to_world: Optional[TensorType[3, 4]] = torch.eye(4)[:3]) -> None:
+ def __init__(
+ self,
+ camera_to_world: Optional[TensorType[3, 4]] = torch.eye(4)[:3],
+ camera_index: int = None,
+ ) -> None:
self.camera_to_world = camera_to_world
+ self.camera_index = camera_index
@abstractmethod
def get_num_intrinsics_params(self) -> int:
@@ -98,7 +96,7 @@ class Camera:
"""
return
- def generate_camera_rays(self, device=None) -> RayBundle:
+ def get_camera_ray_bundle(self, device=None) -> RayBundle:
"""Generate rays for the camera.
Returns:
@@ -114,6 +112,8 @@ class Camera:
camera_to_world = self.camera_to_world.unsqueeze(0).repeat(height, width, 1, 1).to(device) # (num_rays, 3, 4)
coords = self.get_image_coords().to(device)
ray_bundle = self.generate_rays(intrinsics, camera_to_world, coords)
+ if is_not_none(self.camera_index):
+ ray_bundle.set_camera_indices(camera_index=self.camera_index)
return ray_bundle
@@ -121,9 +121,15 @@ class PinholeCamera(Camera):
"""Pinhole camera model."""
def __init__(
- self, cx: float, cy: float, fx: float, fy: float, camera_to_world: Optional[TensorType[3, 4]] = torch.eye(4)[:3]
+ self,
+ cx: float,
+ cy: float,
+ fx: float,
+ fy: float,
+ camera_to_world: Optional[TensorType[3, 4]] = torch.eye(4)[:3],
+ camera_index: int = None,
):
- super().__init__(camera_to_world)
+ super().__init__(camera_to_world, camera_index)
self.cx = cx
self.cy = cy
self.fx = fx
@@ -209,8 +215,15 @@ class PinholeCamera(Camera):
class SimplePinholeCamera(PinholeCamera):
"""Simple Pinhole Camera model."""
- def __init__(self, cx: float, cy: float, f: float, camera_to_world: Optional[TensorType[3, 4]] = torch.eye(4)[:3]):
- super().__init__(cx, cy, f, f, camera_to_world)
+ def __init__(
+ self,
+ cx: float,
+ cy: float,
+ f: float,
+ camera_to_world: Optional[TensorType[3, 4]] = torch.eye(4)[:3],
+ camera_index: int = None,
+ ):
+ super().__init__(cx, cy, f, f, camera_to_world, camera_index)
@classmethod
def fx_index(cls):
@@ -224,8 +237,14 @@ class SimplePinholeCamera(PinholeCamera):
class EquirectangularCamera(Camera):
"""Equirectangular (360 degree) camera model."""
- def __init__(self, height: int, width: int, camera_to_world: Optional[TensorType[3, 4]] = torch.eye(4)[:3]):
- super().__init__(camera_to_world)
+ def __init__(
+ self,
+ height: int,
+ width: int,
+ camera_to_world: Optional[TensorType[3, 4]] = torch.eye(4)[:3],
+ camera_index: int = None,
+ ):
+ super().__init__(camera_to_world, camera_index)
self.height = height
self.width = width
@@ -308,3 +327,11 @@ def get_camera_model(num_intrinsics_params: int) -> Type[Camera]:
if num_intrinsics_params == 4:
return PinholeCamera
raise NotImplementedError
+
+
+def get_camera(intrinsics, camera_to_world, camera_index):
+ assert len(intrinsics.shape) == 1, "The intrinsics object should be a flat tensor."
+ num_intrinsics_params = len(intrinsics)
+ camera_class = get_camera_model(num_intrinsics_params)
+ camera = camera_class(*intrinsics.tolist(), camera_to_world=camera_to_world, camera_index=camera_index)
+ return camera
diff --git a/pyrad/structures/rays.py b/pyrad/cameras/rays.py
similarity index 94%
rename from pyrad/structures/rays.py
rename to pyrad/cameras/rays.py
index 1df0b226a..6df16a730 100644
--- a/pyrad/structures/rays.py
+++ b/pyrad/cameras/rays.py
@@ -40,12 +40,13 @@ class Frustums:
Returns:
Frustums: A size 1 frustum with meaningless values.
"""
+ device = cls.origins.device
return Frustums(
- origins=torch.ones((1, 3)),
- directions=torch.ones((1, 3)),
- frustum_starts=torch.ones((1, 1)),
- frustum_ends=torch.ones((1, 1)) + 1,
- pixel_area=torch.ones((1, 1)),
+ origins=torch.ones((1, 3), device=device),
+ directions=torch.ones((1, 3), device=device),
+ frustum_starts=torch.ones((1, 1), device=device),
+ frustum_ends=torch.ones((1, 1), device=device) + 1,
+ pixel_area=torch.ones((1, 1), device=device),
)
def apply_masks(self, mask: TensorType) -> "Frustums":
@@ -185,6 +186,7 @@ class RayBundle:
nears: Optional[TensorType["num_rays"]] = None
fars: Optional[TensorType["num_rays"]] = None
valid_mask: Optional[TensorType["num_rays"]] = None
+ num_rays_per_chunk: int = None
def move_to_device(self, device: torch.device) -> None:
"""Move bundle data to a device.
@@ -277,9 +279,10 @@ class RayBundle:
Returns:
RaySamples: Samples projected along ray.
"""
+ device = self.origins.device
num_samples = bins.shape[-1] - 1
- valid_mask = torch.ones((bins.shape[0], num_samples), dtype=torch.bool, device=bins.device)
+ valid_mask = torch.ones((bins.shape[0], num_samples), dtype=torch.bool, device=device)
dists = bins[:, 1:] - bins[:, :-1] # [N_rays, N_samples]
deltas = dists * torch.norm(self.directions[:, None, :], dim=-1)
@@ -292,9 +295,9 @@ class RayBundle:
frustums = Frustums(
origins=self.origins.unsqueeze(1).repeat(1, num_samples, 1),
directions=self.directions.unsqueeze(1).repeat(1, num_samples, 1),
- frustum_starts=bins[:, :-1, None],
- frustum_ends=bins[:, 1:, None],
- pixel_area=self.pixel_area.unsqueeze(1).repeat(1, num_samples, 1),
+ frustum_starts=bins[:, :-1, None].to(device),
+ frustum_ends=bins[:, 1:, None].to(device),
+ pixel_area=self.pixel_area.unsqueeze(1).repeat(1, num_samples, 1).to(device),
)
ray_samples = RaySamples(
diff --git a/pyrad/nerf/dataset/__init__.py b/pyrad/data/__init__.py
similarity index 100%
rename from pyrad/nerf/dataset/__init__.py
rename to pyrad/data/__init__.py
diff --git a/pyrad/nerf/dataset/colmap_utils.py b/pyrad/data/colmap_utils.py
similarity index 100%
rename from pyrad/nerf/dataset/colmap_utils.py
rename to pyrad/data/colmap_utils.py
diff --git a/pyrad/data/dataloader.py b/pyrad/data/dataloader.py
new file mode 100644
index 000000000..55d620ee0
--- /dev/null
+++ b/pyrad/data/dataloader.py
@@ -0,0 +1,118 @@
+"""
+Data loader.
+"""
+
+import random
+from typing import Dict, List, Tuple, Union
+from omegaconf import ListConfig
+
+from torchtyping import TensorType
+
+from pyrad.cameras.cameras import get_camera
+from pyrad.cameras.rays import RayBundle
+from pyrad.data.image_dataset import ImageDataset
+from pyrad.data.image_sampler import ImageSampler
+from pyrad.data.pixel_sampler import PixelSampler
+from pyrad.utils.misc import get_dict_to_torch
+
+
+class TrainDataloader:
+ """Training dataloader base class."""
+
+ def __init__(self, image_sampler: ImageSampler, pixel_sampler: PixelSampler):
+ self.image_sampler = image_sampler
+ self.pixel_sampler = pixel_sampler
+ self.iter_image_sampler = iter(self.image_sampler)
+ self.count = 0
+
+ def __iter__(self):
+ self.count = 0
+ return self
+
+ def __next__(self) -> Tuple[TensorType["num_rays", 3], Dict]:
+ self.count += 1
+ image_batch = next(self.iter_image_sampler)
+ batch = self.pixel_sampler.sample(image_batch)
+ ray_indices = batch["indices"]
+ return ray_indices, batch
+
+
+class EvalDataloader: # pylint: disable=too-few-public-methods
+ """Evaluation dataloader base class"""
+
+ def __init__(
+ self, image_dataset: ImageDataset, intrinsics, camera_to_world, num_rays_per_chunk: int, device="cpu", **kwargs
+ ):
+ super().__init__()
+ self.image_dataset = image_dataset
+ self.intrinsics = intrinsics
+ self.camera_to_world = camera_to_world
+ self.num_rays_per_chunk = num_rays_per_chunk
+ self.device = device
+ self.kwargs = kwargs
+
+ def get_data_from_image_idx(self, image_idx) -> Tuple[RayBundle, Dict]:
+ """Returns the data for a specific image index."""
+ intrinsics = self.intrinsics[image_idx].to(self.device)
+ camera_to_world = self.camera_to_world[image_idx].to(self.device)
+ camera = get_camera(intrinsics, camera_to_world, camera_index=image_idx)
+ ray_bundle = camera.get_camera_ray_bundle(device=self.device)
+ ray_bundle.num_rays_per_chunk = self.num_rays_per_chunk
+ batch = self.image_dataset[image_idx]
+ batch = get_dict_to_torch(batch, device=self.device)
+ return ray_bundle, batch
+
+
+class FixedIndicesEvalDataloader(EvalDataloader):
+ """Dataloader that returns a fixed set of indices."""
+
+ def __init__(
+ self,
+ image_dataset: ImageDataset,
+ intrinsics,
+ camera_to_world,
+ num_rays_per_chunk: int,
+ image_indices: Union[List[int], ListConfig],
+ device="cpu",
+ **kwargs
+ ):
+ super().__init__(image_dataset, intrinsics, camera_to_world, num_rays_per_chunk, device, **kwargs)
+ self.image_indices = image_indices
+ self.num_rays_per_chunk = num_rays_per_chunk
+ self.count = 0
+
+ def __iter__(self):
+ self.count = 0
+ return self
+
+ def __next__(self):
+ if self.count < len(self.image_indices):
+ image_idx = self.image_indices[self.count]
+ ray_bundle, batch = self.get_data_from_image_idx(image_idx)
+ ray_bundle.num_rays_per_chunk = self.num_rays_per_chunk
+ self.count += 1
+ return ray_bundle, batch
+ raise StopIteration
+
+
+class RandIndicesEvalDataloader(EvalDataloader):
+ """Dataloader that returns random images."""
+
+ def __init__(
+ self, image_dataset: ImageDataset, intrinsics, camera_to_world, num_rays_per_chunk: int, device="cpu", **kwargs
+ ):
+ super().__init__(image_dataset, intrinsics, camera_to_world, num_rays_per_chunk, device, **kwargs)
+ self.count = 0
+
+ def __iter__(self):
+ self.count = 0
+ return self
+
+ def __next__(self):
+ if self.count < 1:
+ image_indices = range(len(self.camera_to_world))
+ image_idx = random.choice(image_indices)
+ ray_bundle, batch = self.get_data_from_image_idx(image_idx)
+ self.count += 1
+ return ray_bundle, batch
+ raise StopIteration
diff --git a/pyrad/nerf/dataset/format/__init__.py b/pyrad/data/format/__init__.py
similarity index 100%
rename from pyrad/nerf/dataset/format/__init__.py
rename to pyrad/data/format/__init__.py
diff --git a/pyrad/nerf/dataset/format/blender.py b/pyrad/data/format/blender.py
similarity index 83%
rename from pyrad/nerf/dataset/format/blender.py
rename to pyrad/data/format/blender.py
index f436f8bc2..b5d3739c5 100644
--- a/pyrad/nerf/dataset/format/blender.py
+++ b/pyrad/data/format/blender.py
@@ -10,12 +10,16 @@ import numpy as np
import torch
from torchtyping import TensorType
-from pyrad.nerf.dataset.structs import DatasetInputs, SceneBounds
+from pyrad.data.structs import DatasetInputs, SceneBounds
from pyrad.utils.io import load_from_json
def load_blender_data(
- basedir: str, downscale_factor: int = 1, alpha_color: Optional[TensorType[3]] = None, split: str = "train"
+ basedir: str,
+ downscale_factor: int = 1,
+ alpha_color: Optional[TensorType[3]] = None,
+ split: str = "train",
+ scale_factor: float = 0.33,
) -> DatasetInputs:
"""Processes the a blender dataset directory.
Some of this code comes from https://github.com/yenchenlin/nerf-pytorch/blob/master/load_blender.py#L37.
@@ -25,6 +29,7 @@ def load_blender_data(
downscale_factor (int, optional): How much to downscale images. Defaults to 1.0.
alpha_color (TensorType[3], optional): Sets transparent regions to specified color, otherwise black.
split (str, optional): Which dataset split to generate.
+ scale_factor (float): How much to scale the camera origins by.
Returns:
DatasetInputs
@@ -54,7 +59,8 @@ def load_blender_data(
intrinsics *= torch.tensor([cx, cy, focal_length])
# in x,y,z order
- scene_bounds = SceneBounds(aabb=torch.tensor([[-2, -2, -2], [2, 2, 2]], dtype=torch.float32))
+ camera_to_world[..., 3] *= scale_factor
+ scene_bounds = SceneBounds(aabb=torch.tensor([[-0.5, -0.5, -0.5], [0.5, 0.5, 0.5]], dtype=torch.float32))
dataset_inputs = DatasetInputs(
image_filenames=image_filenames,
diff --git a/pyrad/nerf/dataset/format/friends.py b/pyrad/data/format/friends.py
similarity index 97%
rename from pyrad/nerf/dataset/format/friends.py
rename to pyrad/data/format/friends.py
index 344947f5b..cf24d84a6 100644
--- a/pyrad/nerf/dataset/format/friends.py
+++ b/pyrad/data/format/friends.py
@@ -7,8 +7,8 @@ import os
import numpy as np
import torch
-from pyrad.nerf.dataset.colmap_utils import read_cameras_binary, read_images_binary, read_pointsTD_binary
-from pyrad.nerf.dataset.structs import DatasetInputs, PointCloud, SceneBounds, Semantics
+from pyrad.data.colmap_utils import read_cameras_binary, read_images_binary, read_pointsTD_binary
+from pyrad.data.structs import DatasetInputs, PointCloud, SceneBounds, Semantics
from pyrad.utils import profiler
from pyrad.utils.io import load_from_json
diff --git a/pyrad/nerf/dataset/format/instant_ngp.py b/pyrad/data/format/instant_ngp.py
similarity index 97%
rename from pyrad/nerf/dataset/format/instant_ngp.py
rename to pyrad/data/format/instant_ngp.py
index d645d9a94..bb692ef4b 100644
--- a/pyrad/nerf/dataset/format/instant_ngp.py
+++ b/pyrad/data/format/instant_ngp.py
@@ -10,7 +10,7 @@ import imageio
import numpy as np
import torch
-from pyrad.nerf.dataset.structs import DatasetInputs, SceneBounds
+from pyrad.data.structs import DatasetInputs, SceneBounds
from pyrad.utils.io import load_from_json
diff --git a/pyrad/nerf/dataset/format/llff.py b/pyrad/data/format/llff.py
similarity index 100%
rename from pyrad/nerf/dataset/format/llff.py
rename to pyrad/data/format/llff.py
diff --git a/pyrad/nerf/dataset/image_dataset.py b/pyrad/data/image_dataset.py
similarity index 99%
rename from pyrad/nerf/dataset/image_dataset.py
rename to pyrad/data/image_dataset.py
index fcdbf56e9..4b2d72bdb 100644
--- a/pyrad/nerf/dataset/image_dataset.py
+++ b/pyrad/data/image_dataset.py
@@ -12,7 +12,7 @@ import torch
from PIL import Image
from torchtyping import TensorType
-from pyrad.nerf.dataset.structs import Semantics
+from pyrad.data.structs import Semantics
from pyrad.utils.misc import is_not_none
diff --git a/pyrad/nerf/image_sampler.py b/pyrad/data/image_sampler.py
similarity index 92%
rename from pyrad/nerf/image_sampler.py
rename to pyrad/data/image_sampler.py
index adbd29f3d..aeb9e866a 100644
--- a/pyrad/nerf/image_sampler.py
+++ b/pyrad/data/image_sampler.py
@@ -38,13 +38,15 @@ class CacheImageSampler(ImageSampler):
def __init__(
self,
dataset: torch.utils.data.Dataset,
- num_samples_to_collate: int,
+ num_images_to_sample_from: int,
num_times_to_repeat_images: int = 0,
device: Union[torch.device, str] = "cpu",
):
super().__init__()
self.dataset = dataset
- self.num_samples_to_collate = num_samples_to_collate
+ self.num_images_to_sample_from = (
+ len(self.dataset) if num_images_to_sample_from == 0 else num_images_to_sample_from
+ )
self.num_times_to_repeat_images = num_times_to_repeat_images
self.device = device
@@ -57,7 +59,7 @@ class CacheImageSampler(ImageSampler):
def _get_batch_list(self):
"""Returns a list of batches from the dataset attribute."""
- indices = random.sample(range(len(self.dataset)), k=self.num_samples_to_collate)
+ indices = random.sample(range(len(self.dataset)), k=self.num_images_to_sample_from)
batch_list = [self.dataset.__getitem__(idx) for idx in indices]
return batch_list
diff --git a/pyrad/nerf/pixel_sampler.py b/pyrad/data/pixel_sampler.py
similarity index 85%
rename from pyrad/nerf/pixel_sampler.py
rename to pyrad/data/pixel_sampler.py
index fc053c43c..a3eb5f1f9 100644
--- a/pyrad/nerf/pixel_sampler.py
+++ b/pyrad/data/pixel_sampler.py
@@ -13,7 +13,7 @@ def collate_image_dataset_batch(batch, num_rays_per_batch, keep_full_image: bool
Returns a collated batch which is input to the Graph.
It will sample only within the valid 'mask' if it's specified.
"""
-
+ device = batch["image"].device
num_images, image_height, image_width, _ = batch["image"].shape
# only sample within the mask, if the mask is in the batch
@@ -23,16 +23,17 @@ def collate_image_dataset_batch(batch, num_rays_per_batch, keep_full_image: bool
indices = nonzero_indices[chosen_indices]
else:
indices = torch.floor(
- torch.rand((num_rays_per_batch, 3)) * torch.tensor([num_images, image_height, image_width])
+ torch.rand((num_rays_per_batch, 3), device=device)
+ * torch.tensor([num_images, image_height, image_width], device=device)
).long()
c, y, x = [i.flatten() for i in torch.split(indices, 1, dim=-1)]
- pixels = batch["image"][c, y, x]
+ image = batch["image"][c, y, x]
if "mask" in batch:
mask = batch["mask"][c, y, x]
if "semantics" in batch:
semantics = batch["semantics"][c, y, x]
- assert pixels.shape == (num_rays_per_batch, 3), pixels.shape
+ assert image.shape == (num_rays_per_batch, 3), image.shape
# Needed to correct the random indices to their actual camera idx locations.
local_indices = indices.clone()
@@ -40,7 +41,7 @@ def collate_image_dataset_batch(batch, num_rays_per_batch, keep_full_image: bool
collated_batch = {
"local_indices": local_indices, # local to the batch returned
"indices": indices, # with the abs camera indices
- "pixels": pixels,
+ "image": image,
}
if "mask" in batch:
collated_batch["mask"] = mask
@@ -48,7 +49,7 @@ def collate_image_dataset_batch(batch, num_rays_per_batch, keep_full_image: bool
collated_batch["semantics"] = semantics
if keep_full_image:
- collated_batch["image"] = batch["image"]
+ collated_batch["full_image"] = batch["image"]
return collated_batch
diff --git a/pyrad/nerf/dataset/structs.py b/pyrad/data/structs.py
similarity index 95%
rename from pyrad/nerf/dataset/structs.py
rename to pyrad/data/structs.py
index 74518c0ee..3be74c363 100644
--- a/pyrad/nerf/dataset/structs.py
+++ b/pyrad/data/structs.py
@@ -88,3 +88,7 @@ class DatasetInputs:
def load_from_folder_name(self, data_directory: str):
"""Load the saved dataset inputs."""
raise NotImplementedError
+
+ def as_dict(self) -> dict:
+ """Returns the dataclass as a dictionary."""
+ return vars(self)
diff --git a/pyrad/nerf/dataset/utils.py b/pyrad/data/utils.py
similarity index 92%
rename from pyrad/nerf/dataset/utils.py
rename to pyrad/data/utils.py
index c6f00bc28..d9b9033e3 100644
--- a/pyrad/nerf/dataset/utils.py
+++ b/pyrad/data/utils.py
@@ -7,11 +7,11 @@ from typing import Optional, Union
from omegaconf import ListConfig
-from pyrad.nerf.dataset.format.blender import load_blender_data
-from pyrad.nerf.dataset.format.friends import load_friends_data
-from pyrad.nerf.dataset.format.instant_ngp import load_instant_ngp_data
-from pyrad.nerf.dataset.structs import DatasetInputs
-from pyrad.structures.colors import get_color
+from pyrad.data.format.blender import load_blender_data
+from pyrad.data.format.friends import load_friends_data
+from pyrad.data.format.instant_ngp import load_instant_ngp_data
+from pyrad.data.structs import DatasetInputs
+from pyrad.utils.colors import get_color
from pyrad.utils.io import get_absolute_path, load_from_pkl, make_dir, write_to_pkl
from pyrad.utils.misc import get_hash_str_from_dict
diff --git a/pyrad/nerf/fields/__init__.py b/pyrad/engine/__init__.py
similarity index 100%
rename from pyrad/nerf/fields/__init__.py
rename to pyrad/engine/__init__.py
diff --git a/pyrad/nerf/field_modules/field_losses.py b/pyrad/engine/base.py
similarity index 100%
rename from pyrad/nerf/field_modules/field_losses.py
rename to pyrad/engine/base.py
diff --git a/pyrad/nerf/trainer.py b/pyrad/engine/trainer.py
similarity index 64%
rename from pyrad/nerf/trainer.py
rename to pyrad/engine/trainer.py
index 56507b5bd..a59559caf 100644
--- a/pyrad/nerf/trainer.py
+++ b/pyrad/engine/trainer.py
@@ -1,7 +1,6 @@
"""
Code to train model.
"""
-import copy
import logging
import os
from time import time
@@ -12,14 +11,14 @@ import torch.distributed as dist
from omegaconf import DictConfig
from torch.nn.parallel import DistributedDataParallel as DDP
-from pyrad.nerf.dataset.utils import DatasetInputs, get_dataset_inputs_from_dataset_config
-from pyrad.nerf.image_sampler import CacheImageSampler
-from pyrad.nerf.optimizers import Optimizers
-from pyrad.nerf.pixel_sampler import PixelSampler
+from pyrad.cameras.rays import RayBundle
+from pyrad.data.dataloader import EvalDataloader, TrainDataloader
+from pyrad.data.utils import DatasetInputs, get_dataset_inputs_from_dataset_config
+from pyrad.optimizers.optimizers import Optimizers
from pyrad.utils import profiler, writer
from pyrad.utils.callbacks import update_occupancy
from pyrad.utils.decorators import check_main_thread
-from pyrad.utils.misc import get_dict_to_torch, instantiate_from_dict_config
+from pyrad.utils.misc import instantiate_from_dict_config
logging.getLogger("PIL").setLevel(logging.WARNING)
@@ -40,12 +39,8 @@ class Trainer:
self.local_rank = local_rank
self.world_size = world_size
# dataset variables
- self.train_image_dataset = None
- self.train_image_sampler = None
- self.train_pixel_sampler = None
- self.val_image_dataset = None
- self.val_image_intrinsics = None
- self.val_image_camera_to_world = None
+ self.dataloader_train = None
+ self.dataloader_eval = None
# model variables
self.graph = None
self.optimizers = None
@@ -57,51 +52,45 @@ class Trainer:
def setup(self, test_mode=False):
"""Setup the Trainer by calling other setup functions."""
- dataset_inputs_train = get_dataset_inputs_from_dataset_config(**self.config.data.dataset, split="train")
- if test_mode:
- dataset_inputs_eval = get_dataset_inputs_from_dataset_config(**self.config.data.dataset, split="test")
- else:
- config_data_dataset_val = copy.deepcopy(self.config.data.dataset)
- config_data_dataset_val.downscale_factor = self.config.data.val_downscale_factor
- dataset_inputs_eval = get_dataset_inputs_from_dataset_config(**config_data_dataset_val, split="val")
+ dataset_inputs_train = get_dataset_inputs_from_dataset_config(
+ **self.config.data.dataset_inputs_train, split="train"
+ )
+ eval_split = "test" if test_mode else "val"
+ dataset_inputs_eval = get_dataset_inputs_from_dataset_config(
+ **self.config.data.dataset_inputs_eval, split=eval_split
+ )
self.setup_dataset_train(dataset_inputs_train)
self.setup_dataset_eval(dataset_inputs_eval)
self.setup_graph(dataset_inputs_train)
- @profiler.time_function
- def setup_dataset_eval(self, dataset_inputs: DatasetInputs):
- """Helper method to load test or val dataset based on test/train mode"""
- self.val_image_dataset = instantiate_from_dict_config(
- self.config.data.image_dataset,
- image_filenames=dataset_inputs.image_filenames,
- downscale_factor=dataset_inputs.downscale_factor,
- semantics=dataset_inputs.semantics,
- alpha_color=dataset_inputs.alpha_color,
- )
- self.val_image_intrinsics = dataset_inputs.intrinsics
- self.val_image_camera_to_world = dataset_inputs.camera_to_world
-
@profiler.time_function
def setup_dataset_train(self, dataset_inputs: DatasetInputs):
"""_summary_"""
- self.train_image_dataset = instantiate_from_dict_config(
- self.config.data.image_dataset,
- image_filenames=dataset_inputs.image_filenames,
- downscale_factor=dataset_inputs.downscale_factor,
- semantics=dataset_inputs.semantics,
- alpha_color=dataset_inputs.alpha_color,
- ) # ImageDataset
- self.train_image_sampler = CacheImageSampler(
- self.train_image_dataset,
- num_samples_to_collate=len(self.train_image_dataset)
- if self.config.data.image_sampler.num_images_to_sample_from == 0
- else self.config.data.image_sampler.num_images_to_sample_from,
- num_times_to_repeat_images=self.config.data.image_sampler.num_times_to_repeat_images,
- device=self.device if self.config.data.image_sampler.move_to_graph_device else "cpu",
- ) # ImageSampler
- self.train_pixel_sampler = PixelSampler(
- num_rays_per_batch=self.config.data.pixel_sampler.num_rays_per_batch, keep_full_image=False
- ) # PixelSampler
+ # ImageDataset
+ image_dataset_train = instantiate_from_dict_config(
+ self.config.data.image_dataset_train, **dataset_inputs.as_dict()
+ )
+ # ImageSampler
+ image_sampler_train = instantiate_from_dict_config(
+ self.config.data.dataloader_train.image_sampler, dataset=image_dataset_train, device=self.device
+ )
+ # PixelSampler
+ pixel_sampler_train = instantiate_from_dict_config(self.config.data.dataloader_train.pixel_sampler)
+ # Dataloader
+ self.dataloader_train = TrainDataloader(image_sampler_train, pixel_sampler_train)
+
+ @profiler.time_function
+ def setup_dataset_eval(self, dataset_inputs: DatasetInputs):
+ """Helper method to load test or val dataset based on test/train mode"""
+ image_dataset_eval = instantiate_from_dict_config(
+ self.config.data.image_dataset_eval, **dataset_inputs.as_dict()
+ )
+ self.dataloader_eval = instantiate_from_dict_config(
+ self.config.data.dataloader_eval,
+ image_dataset=image_dataset_eval,
+ device=self.device,
+ **dataset_inputs.as_dict(),
+ )
@profiler.time_function
def setup_graph(self, dataset_inputs: DatasetInputs):
@@ -110,14 +99,7 @@ class Trainer:
Args:
dataset_inputs (DatasetInputs): The inputs which will be used to define the camera parameters.
"""
- self.graph = instantiate_from_dict_config(
- self.config.graph.network,
- intrinsics=dataset_inputs.intrinsics,
- camera_to_world=dataset_inputs.camera_to_world,
- scene_bounds=dataset_inputs.scene_bounds,
- stuff_classes=dataset_inputs.semantics.stuff_classes,
- stuff_colors=dataset_inputs.semantics.stuff_colors,
- )
+ self.graph = instantiate_from_dict_config(self.config.graph.network, **dataset_inputs.as_dict())
self.graph.to(self.device)
self.setup_optimizers() # NOTE(ethan): can this be before DDP?
@@ -188,12 +170,10 @@ class Trainer:
"""_summary_"""
train_start = time()
num_iterations = self.config.graph.max_num_iterations
- iter_train_image_sampler = iter(self.train_image_sampler)
+ iter_dataloader_train = iter(self.dataloader_train)
for step in range(self.start_step, self.start_step + num_iterations):
data_start = time()
- image_batch = next(iter_train_image_sampler)
- image_batch = get_dict_to_torch(image_batch, device=self.device)
- batch = self.train_pixel_sampler.sample(image_batch)
+ ray_indices, batch = next(iter_dataloader_train)
writer.put_time(
name=writer.EventName.ITER_LOAD_TIME,
start_time=data_start,
@@ -202,14 +182,14 @@ class Trainer:
avg_over_iters=True,
)
iter_start = time()
- loss_dict = self.train_iteration(batch, step, _callback=[update_occupancy])
+ loss_dict = self.train_iteration(ray_indices, batch, step, _callback=[update_occupancy])
writer.put_time(
name=writer.EventName.RAYS_PER_SEC,
start_time=iter_start,
end_time=time(),
step=step,
avg_over_iters=True,
- avg_over_batch=batch["indices"].shape[0],
+ avg_over_batch=ray_indices.shape[0],
)
writer.put_time(
name=writer.EventName.ITER_TRAIN_TIME,
@@ -225,8 +205,7 @@ class Trainer:
if step != 0 and self.config.graph.steps_per_save and step % self.config.graph.steps_per_save == 0:
self.save_checkpoint(self.config.graph.model_dir, step)
if step % self.config.graph.steps_per_test == 0:
- for image_idx in self.config.data.val_image_indices:
- _ = self.test_image(image_idx=image_idx, step=step)
+ self.eval_with_dataloader(self.dataloader_eval, step=step)
self._write_out_storage(step)
writer.put_time(
@@ -245,10 +224,9 @@ class Trainer:
writer.write_out_storage()
@profiler.time_function
- def train_iteration(self, batch: dict, step: int, _callback: List[Callable] = None):
+ def train_iteration(self, ray_indices, batch: dict, step: int, _callback: List[Callable] = None):
"""Run one iteration with a batch of inputs."""
- ray_indices = batch["indices"]
- _, loss_dict = self.graph.forward(ray_indices, batch=batch, step=step)
+ _, loss_dict = self.graph.forward(ray_indices, batch=batch)
loss = loss_dict["aggregated_loss"]
self.optimizers.zero_grad_all()
loss.backward()
@@ -260,18 +238,16 @@ class Trainer:
return loss_dict
@profiler.time_function
- def test_image(self, image_idx, step):
+ def test_image(self, camera_ray_bundle: RayBundle, batch: dict, step: int = None):
"""Test a specific image."""
self.graph.eval()
- intrinsics = self.val_image_intrinsics[image_idx].to(self.device)
- camera_to_world = self.val_image_camera_to_world[image_idx].to(self.device)
- chunk_size = self.config.data.val_num_rays_per_chunk
- training_camera_index = image_idx # TODO(ethan): change this because training and test should not be the same
- outputs = self.graph.get_outputs_for_camera(
- intrinsics, camera_to_world, chunk_size=chunk_size, training_camera_index=training_camera_index
- )
- batch = self.val_image_dataset[image_idx]
- batch = get_dict_to_torch(batch, device=self.device)
+ image_idx = int(camera_ray_bundle.camera_indices[0, 0])
+ outputs = self.graph.get_outputs_for_camera_ray_bundle(camera_ray_bundle)
psnr = self.graph.log_test_image_outputs(image_idx, step, batch, outputs)
self.graph.train()
return psnr
+
+ def eval_with_dataloader(self, dataloader: EvalDataloader, step: int = None):
+ """Run evaluation with a given dataloader."""
+ for camera_ray_bundle, batch in dataloader:
+ self.test_image(camera_ray_bundle, batch, step=step)
diff --git a/pyrad/sfm/__init__.py b/pyrad/fields/__init__.py
similarity index 100%
rename from pyrad/sfm/__init__.py
rename to pyrad/fields/__init__.py
diff --git a/pyrad/nerf/fields/base.py b/pyrad/fields/base.py
similarity index 96%
rename from pyrad/nerf/fields/base.py
rename to pyrad/fields/base.py
index da229801f..28009ffb7 100644
--- a/pyrad/nerf/fields/base.py
+++ b/pyrad/fields/base.py
@@ -8,9 +8,9 @@ from typing import Dict, Optional, Tuple
from torch import nn
import torch
from torchtyping import TensorType
-from pyrad.nerf.field_modules.field_heads import FieldHeadNames
+from pyrad.fields.modules.field_heads import FieldHeadNames
-from pyrad.structures.rays import Frustums, PointSamples
+from pyrad.cameras.rays import Frustums, PointSamples
from pyrad.utils.misc import is_not_none
diff --git a/pyrad/nerf/fields/instant_ngp_field.py b/pyrad/fields/instant_ngp_field.py
similarity index 82%
rename from pyrad/nerf/fields/instant_ngp_field.py
rename to pyrad/fields/instant_ngp_field.py
index ec9a184bc..7b0619a80 100644
--- a/pyrad/nerf/fields/instant_ngp_field.py
+++ b/pyrad/fields/instant_ngp_field.py
@@ -9,12 +9,11 @@ import torch
import torch.nn.functional as F
from torch.nn.parameter import Parameter
-from pyrad.nerf.field_modules.encoding import Encoding, HashEncoding, SHEncoding
-from pyrad.nerf.field_modules.field_heads import FieldHeadNames
-from pyrad.nerf.fields.base import Field
-from pyrad.nerf.fields.nerf_field import NeRFField
-from pyrad.structures.rays import PointSamples
-from pyrad.utils.misc import is_not_none
+from pyrad.fields.modules.encoding import Encoding, HashEncoding, SHEncoding
+from pyrad.fields.modules.field_heads import FieldHeadNames
+from pyrad.fields.base import Field
+from pyrad.fields.nerf_field import NeRFField
+from pyrad.cameras.rays import PointSamples
try:
import tinycudann as tcnn
@@ -30,6 +29,11 @@ def get_normalized_positions(positions, aabb):
return positions
+def get_normalized_directions(directions):
+ """SH encoding must be in the range [0, 1]"""
+ return (directions + 1.0) / 2.0
+
+
class TCNNInstantNGPField(Field):
"""NeRF Field"""
@@ -38,7 +42,6 @@ class TCNNInstantNGPField(Field):
) -> None:
super().__init__()
- # TODO: make this a parameter that is put to the correct device
self.aabb = Parameter(aabb, requires_grad=False)
self.geo_feat_dim = geo_feat_dim
@@ -92,26 +95,24 @@ class TCNNInstantNGPField(Field):
def get_density(self, point_samples: PointSamples):
"""Computes and returns the densities."""
- # TODO: add valid_mask masking!
- # remap positions to range 0 to 1 based on the aabb
- positions = get_normalized_positions(point_samples.positions, self.aabb)
+ positions = get_normalized_positions(point_samples.frustums.get_positions(), self.aabb)
positions_flat = positions.view(-1, 3)
dtype = positions_flat.dtype
x = self.position_encoding(positions_flat)
- h = self.mlp_base(x).view(*point_samples.positions.shape[:-1], -1).to(dtype)
+ h = self.mlp_base(x).view(*point_samples.frustums.get_positions().shape[:-1], -1).to(dtype)
density_before_activation, base_mlp_out = torch.split(h, [1, self.geo_feat_dim], dim=-1)
density = F.softplus(density_before_activation)
return density, base_mlp_out
def get_outputs(self, point_samples: PointSamples, density_embedding=None):
# TODO: add valid_mask masking!
- assert is_not_none(density_embedding)
- directions = point_samples.directions
+ # tcnn requires directions in the range [0,1]
+ directions = get_normalized_directions(point_samples.frustums.directions)
directions_flat = directions.view(-1, 3)
dtype = directions_flat.dtype
d = self.direction_encoding(directions_flat)
h = torch.cat([d, density_embedding.view(-1, self.geo_feat_dim)], dim=-1)
- h = self.mlp_head(h).view(*point_samples.directions.shape[:-1], -1).to(dtype)
+ h = self.mlp_head(h).view(*point_samples.frustums.directions.shape[:-1], -1).to(dtype)
rgb = torch.sigmoid(h)
return {FieldHeadNames.RGB: rgb}
@@ -145,7 +146,9 @@ class TorchInstantNGPField(NeRFField):
def get_density(self, point_samples: PointSamples):
normalized_point_samples = point_samples
- normalized_point_samples.positions = get_normalized_positions(normalized_point_samples.positions, self.aabb)
+ normalized_point_samples.positions = get_normalized_positions(
+ normalized_point_samples.frustums.get_positions(), self.aabb
+ )
return super().get_density(normalized_point_samples)
diff --git a/pyrad/nerf/field_modules/__init__.py b/pyrad/fields/modules/__init__.py
similarity index 100%
rename from pyrad/nerf/field_modules/__init__.py
rename to pyrad/fields/modules/__init__.py
diff --git a/pyrad/nerf/field_modules/base.py b/pyrad/fields/modules/base.py
similarity index 100%
rename from pyrad/nerf/field_modules/base.py
rename to pyrad/fields/modules/base.py
diff --git a/pyrad/nerf/field_modules/embedding.py b/pyrad/fields/modules/embedding.py
similarity index 93%
rename from pyrad/nerf/field_modules/embedding.py
rename to pyrad/fields/modules/embedding.py
index d265a0dc5..1fc29bb14 100644
--- a/pyrad/nerf/field_modules/embedding.py
+++ b/pyrad/fields/modules/embedding.py
@@ -5,7 +5,7 @@ Code for embeddings.
import torch
from torchtyping import TensorType
-from pyrad.nerf.field_modules.base import FieldModule
+from pyrad.fields.modules.base import FieldModule
class Embedding(FieldModule):
diff --git a/pyrad/nerf/field_modules/encoding.py b/pyrad/fields/modules/encoding.py
similarity index 97%
rename from pyrad/nerf/field_modules/encoding.py
rename to pyrad/fields/modules/encoding.py
index 75c058ecf..b28fb4ddf 100644
--- a/pyrad/nerf/field_modules/encoding.py
+++ b/pyrad/fields/modules/encoding.py
@@ -9,7 +9,7 @@ import torch.nn.functional as F
from torch import nn
from torchtyping import TensorType
-from pyrad.nerf.field_modules.base import FieldModule
+from pyrad.fields.modules.base import FieldModule
from pyrad.utils.math import components_from_spherical_harmonics
@@ -200,11 +200,17 @@ class HashEncoding(Encoding):
"""Hash tensor using method described in Instant-NGP
Args:
- in_tensor (TensorType[..., "num_levels", 3]): Tensor to be hashed
+ in_tensor (TensorType[..., "num_levels", 3]): Tensor to be hashed
Returns:
- TensorType[..., "num_levels"]: Hashed tensor
+ TensorType[..., "num_levels"]: Hashed tensor
"""
+
+ # min_val = torch.min(in_tensor)
+ # max_val = torch.max(in_tensor)
+ # assert min_val >= 0.0
+ # assert max_val <= 1.0
+
in_tensor = in_tensor * torch.tensor([1, 2654435761, 805459861]).to(in_tensor.device)
x = torch.bitwise_xor(in_tensor[..., 0], in_tensor[..., 1])
x = torch.bitwise_xor(x, in_tensor[..., 2])
diff --git a/pyrad/nerf/field_modules/field_heads.py b/pyrad/fields/modules/field_heads.py
similarity index 99%
rename from pyrad/nerf/field_modules/field_heads.py
rename to pyrad/fields/modules/field_heads.py
index 6ea53c6f8..18f558f85 100644
--- a/pyrad/nerf/field_modules/field_heads.py
+++ b/pyrad/fields/modules/field_heads.py
@@ -7,7 +7,7 @@ from typing import Optional
from torch import nn
from torchtyping import TensorType
-from pyrad.nerf.field_modules.base import FieldModule
+from pyrad.fields.modules.base import FieldModule
class FieldHeadNames(Enum):
diff --git a/pyrad/structures/__init__.py b/pyrad/fields/modules/field_losses.py
similarity index 100%
rename from pyrad/structures/__init__.py
rename to pyrad/fields/modules/field_losses.py
diff --git a/pyrad/nerf/field_modules/mlp.py b/pyrad/fields/modules/mlp.py
similarity index 98%
rename from pyrad/nerf/field_modules/mlp.py
rename to pyrad/fields/modules/mlp.py
index 5065ef39d..c464ab3bb 100644
--- a/pyrad/nerf/field_modules/mlp.py
+++ b/pyrad/fields/modules/mlp.py
@@ -7,7 +7,7 @@ import torch
from torch import nn
from torchtyping import TensorType
-from pyrad.nerf.field_modules.base import FieldModule
+from pyrad.fields.modules.base import FieldModule
class MLP(FieldModule):
diff --git a/pyrad/nerf/fields/nerf_field.py b/pyrad/fields/nerf_field.py
similarity index 91%
rename from pyrad/nerf/fields/nerf_field.py
rename to pyrad/fields/nerf_field.py
index faeb5dd0f..63faf25eb 100644
--- a/pyrad/nerf/fields/nerf_field.py
+++ b/pyrad/fields/nerf_field.py
@@ -7,11 +7,11 @@ import torch
from torch import nn
from torchtyping import TensorType
-from pyrad.nerf.field_modules.encoding import Encoding, Identity
-from pyrad.nerf.field_modules.field_heads import DensityFieldHead, FieldHead, FieldHeadNames, RGBFieldHead
-from pyrad.nerf.field_modules.mlp import MLP
-from pyrad.nerf.fields.base import Field
-from pyrad.structures.rays import PointSamples
+from pyrad.fields.modules.encoding import Encoding, Identity
+from pyrad.fields.modules.field_heads import DensityFieldHead, FieldHead, FieldHeadNames, RGBFieldHead
+from pyrad.fields.modules.mlp import MLP
+from pyrad.fields.base import Field
+from pyrad.cameras.rays import PointSamples
class NeRFField(Field):
diff --git a/pyrad/nerf/fields/nerfw_field.py b/pyrad/fields/nerfw_field.py
similarity index 93%
rename from pyrad/nerf/fields/nerfw_field.py
rename to pyrad/fields/nerfw_field.py
index 78fad2162..2a62d7d61 100644
--- a/pyrad/nerf/fields/nerfw_field.py
+++ b/pyrad/fields/nerfw_field.py
@@ -6,9 +6,9 @@ import torch
from torch import nn
from torchtyping import TensorType
-from pyrad.nerf.field_modules.embedding import Embedding
-from pyrad.nerf.field_modules.encoding import Encoding, Identity
-from pyrad.nerf.field_modules.field_heads import (
+from pyrad.fields.modules.embedding import Embedding
+from pyrad.fields.modules.encoding import Encoding, Identity
+from pyrad.fields.modules.field_heads import (
DensityFieldHead,
FieldHeadNames,
RGBFieldHead,
@@ -16,9 +16,9 @@ from pyrad.nerf.field_modules.field_heads import (
TransientRGBFieldHead,
UncertaintyFieldHead,
)
-from pyrad.nerf.field_modules.mlp import MLP
-from pyrad.nerf.fields.base import Field
-from pyrad.structures.rays import PointSamples
+from pyrad.fields.modules.mlp import MLP
+from pyrad.fields.base import Field
+from pyrad.cameras.rays import PointSamples
class VanillaNerfWField(Field):
diff --git a/pyrad/fields/occupancy_fields/base.py b/pyrad/fields/occupancy_fields/base.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/pyrad/nerf/occupancy_grid.py b/pyrad/fields/occupancy_fields/occupancy_grid.py
similarity index 100%
rename from pyrad/nerf/occupancy_grid.py
rename to pyrad/fields/occupancy_fields/occupancy_grid.py
diff --git a/pyrad/graphs/__init__.py b/pyrad/graphs/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/pyrad/nerf/graph/base.py b/pyrad/graphs/base.py
similarity index 75%
rename from pyrad/nerf/graph/base.py
rename to pyrad/graphs/base.py
index f18f9b700..6a090a5c8 100644
--- a/pyrad/nerf/graph/base.py
+++ b/pyrad/graphs/base.py
@@ -11,10 +11,10 @@ from torch import nn
from torch.nn import Parameter
from torchtyping import TensorType
-from pyrad.nerf.dataset.structs import SceneBounds
-from pyrad.nerf.ray_generator import RayGenerator
-from pyrad.structures.cameras import get_camera_model
-from pyrad.structures.rays import RayBundle
+from pyrad.cameras.cameras import Camera
+from pyrad.cameras.rays import RayBundle
+from pyrad.data.structs import SceneBounds
+from pyrad.graphs.modules.ray_generator import RayGenerator
from pyrad.utils.misc import get_masked_dict, instantiate_from_dict_config, is_not_none
@@ -31,12 +31,7 @@ class AbstractGraph(nn.Module):
return self.device_indicator_param.device
@abstractmethod
- def forward(
- self,
- ray_indices: TensorType["num_rays", 3],
- batch: Union[str, Dict[str, torch.tensor]] = None,
- step: int = None,
- ):
+ def forward(self, ray_indices: TensorType["num_rays", 3], batch: Union[str, Dict[str, torch.tensor]] = None):
"""Process starting with ray indices. Turns them into rays, then performs volume rendering."""
@@ -88,16 +83,9 @@ class Graph(AbstractGraph):
def get_outputs(self, ray_bundle: RayBundle):
"""Takes in a Ray Bundle and returns a dictionary of outputs."""
- def forward(
- self,
- ray_indices: TensorType["num_rays", 3],
- batch: Union[str, Dict[str, torch.tensor]] = None,
- step: int = None,
- ):
-
- # get the rays
- original_ray_bundle = self.ray_generator.forward(ray_indices) # RayBundle
- intersected_ray_bundle = self.collider(original_ray_bundle)
+ def forward_after_ray_generator(self, ray_bundle: RayBundle, batch: Union[str, Dict[str, torch.tensor]] = None):
+ """Run forward starting with a ray bundle."""
+ intersected_ray_bundle = self.collider(ray_bundle)
if isinstance(batch, type(None)):
# during inference, keep all rays
@@ -113,6 +101,11 @@ class Graph(AbstractGraph):
aggregated_loss_dict = self.get_aggregated_loss_dict(loss_dict)
return outputs, aggregated_loss_dict
+ def forward(self, ray_indices: TensorType["num_rays", 3], batch: Union[str, Dict[str, torch.tensor]] = None):
+ """Run the forward starting with ray indices."""
+ ray_bundle = self.ray_generator.forward(ray_indices)
+ return self.forward_after_ray_generator(ray_bundle, batch=batch)
+
@abstractmethod
def get_loss_dict(self, outputs, batch) -> Dict[str, torch.tensor]:
"""Computes and returns the losses."""
@@ -128,32 +121,29 @@ class Graph(AbstractGraph):
return aggregated_loss_dict
@torch.no_grad()
- def get_outputs_for_camera(self, intrinsics, camera_to_world, chunk_size=1024, training_camera_index=0):
+ def get_outputs_for_camera_ray_bundle(self, camera_ray_bundle: RayBundle):
"""Takes in camera parameters and computes the output of the graph."""
- assert len(intrinsics.shape) == 1
- num_intrinsics_params = len(intrinsics)
- camera_class = get_camera_model(num_intrinsics_params)
- camera = camera_class(*intrinsics.tolist(), camera_to_world=camera_to_world)
- camera_ray_bundle = camera.generate_camera_rays(device=self.get_device())
- # TODO(ethan): decide how to properly handle the image indices for validation images
- camera_ray_bundle.set_camera_indices(camera_index=training_camera_index)
+ assert is_not_none(camera_ray_bundle.num_rays_per_chunk)
image_height, image_width = camera_ray_bundle.origins.shape[:2]
-
num_rays = len(camera_ray_bundle)
outputs = {}
outputs_lists = defaultdict(list)
- for i in range(0, num_rays, chunk_size):
+ for i in range(0, num_rays, camera_ray_bundle.num_rays_per_chunk):
start_idx = i
- end_idx = i + chunk_size
- original_ray_bundle = camera_ray_bundle.get_row_major_sliced_ray_bundle(start_idx, end_idx)
- intersected_ray_bundle = self.collider(original_ray_bundle)
- outputs = self.get_outputs(intersected_ray_bundle)
+ end_idx = i + camera_ray_bundle.num_rays_per_chunk
+ ray_bundle = camera_ray_bundle.get_row_major_sliced_ray_bundle(start_idx, end_idx)
+ outputs = self.forward_after_ray_generator(ray_bundle)
for output_name, output in outputs.items():
outputs_lists[output_name].append(output)
for output_name, outputs_list in outputs_lists.items():
outputs[output_name] = torch.cat(outputs_list).view(image_height, image_width, -1)
return outputs
+ def get_outputs_for_camera(self, camera: Camera):
+ """Get the graph outputs for a Camera."""
+ camera_ray_bundle = camera.get_camera_ray_bundle(device=self.get_device())
+ return self.get_outputs_for_camera_ray_bundle(camera_ray_bundle)
+
@abstractmethod
def log_test_image_outputs(self, image_idx, step, batch, outputs):
"""Writes the test image outputs."""
diff --git a/pyrad/nerf/graph/instant_ngp.py b/pyrad/graphs/instant_ngp.py
similarity index 88%
rename from pyrad/nerf/graph/instant_ngp.py
rename to pyrad/graphs/instant_ngp.py
index 56165f986..68ea4250e 100644
--- a/pyrad/nerf/graph/instant_ngp.py
+++ b/pyrad/graphs/instant_ngp.py
@@ -9,16 +9,15 @@ from torch.nn import Parameter
from torchmetrics import PeakSignalNoiseRatio, StructuralSimilarityIndexMeasure
from torchmetrics.image.lpip import LearnedPerceptualImagePatchSimilarity
-from pyrad.nerf.colliders import AABBBoxCollider
-from pyrad.nerf.field_modules.field_heads import FieldHeadNames
-from pyrad.nerf.fields.instant_ngp_field import field_implementation_to_class
-from pyrad.nerf.graph.base import Graph
-from pyrad.nerf.loss import MSELoss
-from pyrad.nerf.occupancy_grid import OccupancyGrid
-from pyrad.nerf.renderers import AccumulationRenderer, DepthRenderer, RGBRenderer
-from pyrad.nerf.ray_sampler import PDFSampler, UniformSampler
-from pyrad.structures import colors
-from pyrad.structures.rays import RayBundle
+from pyrad.fields.modules.field_heads import FieldHeadNames
+from pyrad.fields.instant_ngp_field import field_implementation_to_class
+from pyrad.graphs.base import Graph
+from pyrad.optimizers.loss import MSELoss
+from pyrad.fields.occupancy_fields.occupancy_grid import OccupancyGrid
+from pyrad.renderers.renderers import AccumulationRenderer, DepthRenderer, RGBRenderer
+from pyrad.graphs.modules.ray_sampler import PDFSampler, UniformSampler
+from pyrad.utils import colors
+from pyrad.cameras.rays import RayBundle
from pyrad.utils import visualization, writer
@@ -32,9 +31,6 @@ class NGPGraph(Graph):
self.field = None
super().__init__(intrinsics=intrinsics, camera_to_world=camera_to_world, **kwargs)
- def populate_collider(self):
- self.collider = AABBBoxCollider(self.scene_bounds)
-
def populate_fields(self):
"""Set the fields."""
# torch or tiny-cuda-nn version
@@ -112,8 +108,8 @@ class NGPGraph(Graph):
def get_loss_dict(self, outputs, batch):
device = self.get_device()
- pixels = batch["pixels"].to(device)
- rgb_loss = self.rgb_loss(pixels, outputs["rgb"])
+ image = batch["image"].to(device)
+ rgb_loss = self.rgb_loss(image, outputs["rgb"])
loss_dict = {"rgb_loss": rgb_loss}
return loss_dict
diff --git a/pyrad/graphs/modules/__init__.py b/pyrad/graphs/modules/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/pyrad/nerf/ray_generator.py b/pyrad/graphs/modules/ray_generator.py
similarity index 95%
rename from pyrad/nerf/ray_generator.py
rename to pyrad/graphs/modules/ray_generator.py
index 23516695a..0d76e1711 100644
--- a/pyrad/nerf/ray_generator.py
+++ b/pyrad/graphs/modules/ray_generator.py
@@ -3,8 +3,8 @@ Ray generator.
"""
from torch import nn
from torchtyping import TensorType
-from pyrad.structures.rays import RayBundle
-from pyrad.structures.cameras import get_camera_model
+from pyrad.cameras.rays import RayBundle
+from pyrad.cameras.cameras import get_camera_model
class RayGenerator(nn.Module):
diff --git a/pyrad/nerf/ray_sampler.py b/pyrad/graphs/modules/ray_sampler.py
similarity index 98%
rename from pyrad/nerf/ray_sampler.py
rename to pyrad/graphs/modules/ray_sampler.py
index 64b1a03e2..575e67ff9 100644
--- a/pyrad/nerf/ray_sampler.py
+++ b/pyrad/graphs/modules/ray_sampler.py
@@ -9,8 +9,8 @@ import torch
from torch import nn
from torchtyping import TensorType
-from pyrad.nerf.occupancy_grid import OccupancyGrid
-from pyrad.structures.rays import RayBundle, RaySamples
+from pyrad.fields.occupancy_fields.occupancy_grid import OccupancyGrid
+from pyrad.cameras.rays import RayBundle, RaySamples
class Sampler(nn.Module):
diff --git a/pyrad/nerf/colliders.py b/pyrad/graphs/modules/scene_colliders.py
similarity index 97%
rename from pyrad/nerf/colliders.py
rename to pyrad/graphs/modules/scene_colliders.py
index 818291e21..a4ef6fb78 100644
--- a/pyrad/nerf/colliders.py
+++ b/pyrad/graphs/modules/scene_colliders.py
@@ -4,8 +4,8 @@ Ray generator.
import torch
from torch import nn
from torchtyping import TensorType
-from pyrad.nerf.dataset.structs import SceneBounds
-from pyrad.structures.rays import RayBundle
+from pyrad.data.structs import SceneBounds
+from pyrad.cameras.rays import RayBundle
class SceneBoundsCollider(nn.Module):
diff --git a/pyrad/nerf/graph/nerfw.py b/pyrad/graphs/nerfw.py
similarity index 90%
rename from pyrad/nerf/graph/nerfw.py
rename to pyrad/graphs/nerfw.py
index d8fd9e518..86a0b8e2e 100644
--- a/pyrad/nerf/graph/nerfw.py
+++ b/pyrad/graphs/nerfw.py
@@ -6,16 +6,16 @@ import torch
from torchmetrics import PeakSignalNoiseRatio, StructuralSimilarityIndexMeasure
from torchmetrics.image.lpip import LearnedPerceptualImagePatchSimilarity
-from pyrad.nerf.field_modules.encoding import NeRFEncoding
-from pyrad.nerf.field_modules.field_heads import FieldHeadNames
-from pyrad.nerf.fields.nerf_field import NeRFField
-from pyrad.nerf.fields.nerfw_field import VanillaNerfWField
-from pyrad.nerf.graph.base import Graph
-from pyrad.nerf.loss import MSELoss
-from pyrad.nerf.ray_sampler import PDFSampler, UniformSampler
-from pyrad.nerf.renderers import AccumulationRenderer, DepthRenderer, RGBRenderer, UncertaintyRenderer
-from pyrad.structures import colors
-from pyrad.structures.rays import RayBundle
+from pyrad.fields.modules.encoding import NeRFEncoding
+from pyrad.fields.modules.field_heads import FieldHeadNames
+from pyrad.fields.nerf_field import NeRFField
+from pyrad.fields.nerfw_field import VanillaNerfWField
+from pyrad.graphs.base import Graph
+from pyrad.optimizers.loss import MSELoss
+from pyrad.graphs.modules.ray_sampler import PDFSampler, UniformSampler
+from pyrad.renderers.renderers import AccumulationRenderer, DepthRenderer, RGBRenderer, UncertaintyRenderer
+from pyrad.utils import colors
+from pyrad.cameras.rays import RayBundle
from pyrad.utils import visualization, writer
@@ -151,13 +151,13 @@ class NerfWGraph(Graph):
def get_loss_dict(self, outputs, batch):
device = outputs["rgb_coarse"].device
- pixels = batch["pixels"].to(device)
+ image = batch["image"].to(device)
rgb_coarse = outputs["rgb_coarse"]
rgb_fine = outputs["rgb_fine"]
density_transient = outputs["density_transient"]
betas = outputs["uncertainty"]
- rgb_loss_coarse = 0.5 * ((pixels - rgb_coarse) ** 2).sum(-1).mean()
- rgb_loss_fine = 0.5 * (((pixels - rgb_fine) ** 2).sum(-1) / (betas[..., 0] ** 2)).mean()
+ rgb_loss_coarse = 0.5 * ((image - rgb_coarse) ** 2).sum(-1).mean()
+ rgb_loss_fine = 0.5 * (((image - rgb_fine) ** 2).sum(-1) / (betas[..., 0] ** 2)).mean()
uncertainty_loss = 0.5 * (3 + torch.log(betas)).mean()
density_loss = density_transient.mean()
diff --git a/pyrad/nerf/graph/semantic_nerf.py b/pyrad/graphs/semantic_nerf.py
similarity index 86%
rename from pyrad/nerf/graph/semantic_nerf.py
rename to pyrad/graphs/semantic_nerf.py
index fb7146533..0bf752372 100644
--- a/pyrad/nerf/graph/semantic_nerf.py
+++ b/pyrad/graphs/semantic_nerf.py
@@ -7,15 +7,16 @@ from typing import Dict, Optional, Tuple
import torch
from torch import nn
from torchtyping import TensorType
+from pyrad.data.structs import Semantics
-from pyrad.nerf.field_modules.encoding import Encoding, Identity, NeRFEncoding
-from pyrad.nerf.field_modules.field_heads import DensityFieldHead, FieldHeadNames, RGBFieldHead, SemanticFieldHead
-from pyrad.nerf.field_modules.mlp import MLP
-from pyrad.nerf.fields.base import Field
-from pyrad.nerf.fields.nerf_field import NeRFField
-from pyrad.nerf.graph.vanilla_nerf import NeRFGraph
-from pyrad.nerf.renderers import SemanticRenderer
-from pyrad.structures.rays import PointSamples, RayBundle
+from pyrad.fields.modules.encoding import Encoding, Identity, NeRFEncoding
+from pyrad.fields.modules.field_heads import DensityFieldHead, FieldHeadNames, RGBFieldHead, SemanticFieldHead
+from pyrad.fields.modules.mlp import MLP
+from pyrad.fields.base import Field
+from pyrad.fields.nerf_field import NeRFField
+from pyrad.graphs.vanilla_nerf import NeRFGraph
+from pyrad.renderers.renderers import SemanticRenderer
+from pyrad.cameras.rays import PointSamples, RayBundle
from pyrad.utils import writer
@@ -61,7 +62,7 @@ class SemanticNerfField(Field):
)
def get_density(self, point_samples: PointSamples):
- encoded_xyz = self.position_encoding(point_samples.positions)
+ encoded_xyz = self.position_encoding(point_samples.frustums.get_positions())
base_mlp_out = self.mlp_base(encoded_xyz)
density = self.field_head_density(base_mlp_out)
return density, base_mlp_out
@@ -83,10 +84,9 @@ class SemanticNerfField(Field):
class SemanticNerfGraph(NeRFGraph):
"""Semantic-NeRF graph"""
- def __init__(self, intrinsics=None, camera_to_world=None, stuff_classes=None, stuff_colors=None, **kwargs) -> None:
- assert stuff_classes is not None
- self.stuff_classes = stuff_classes
- self.stuff_colors = stuff_colors
+ def __init__(self, intrinsics=None, camera_to_world=None, semantics: Semantics = None, **kwargs) -> None:
+ self.stuff_classes = semantics.stuff_classes
+ self.stuff_colors = semantics.stuff_colors
super().__init__(intrinsics=intrinsics, camera_to_world=camera_to_world, **kwargs)
def populate_fields(self):
@@ -149,9 +149,9 @@ class SemanticNerfGraph(NeRFGraph):
return outputs
def get_loss_dict(self, outputs, batch):
- pixels = batch["pixels"]
- rgb_loss_coarse = self.rgb_loss(pixels, outputs["rgb_coarse"])
- rgb_loss_fine = self.rgb_loss(pixels, outputs["rgb_fine"])
+ image = batch["image"]
+ rgb_loss_coarse = self.rgb_loss(image, outputs["rgb_coarse"])
+ rgb_loss_fine = self.rgb_loss(image, outputs["rgb_fine"])
semantic_logits = outputs["semantic_fine"]
semantic_classes = batch["semantics"][..., 0].long()
semantic_loss_fine = self.cross_entropy_loss(semantic_logits, semantic_classes)
diff --git a/pyrad/nerf/graph/tensorf.py b/pyrad/graphs/tensorf.py
similarity index 100%
rename from pyrad/nerf/graph/tensorf.py
rename to pyrad/graphs/tensorf.py
diff --git a/pyrad/nerf/graph/vanilla_nerf.py b/pyrad/graphs/vanilla_nerf.py
similarity index 90%
rename from pyrad/nerf/graph/vanilla_nerf.py
rename to pyrad/graphs/vanilla_nerf.py
index 2f19a712e..9ae52d098 100644
--- a/pyrad/nerf/graph/vanilla_nerf.py
+++ b/pyrad/graphs/vanilla_nerf.py
@@ -10,15 +10,15 @@ from torch.nn import Parameter
from torchmetrics import PeakSignalNoiseRatio, StructuralSimilarityIndexMeasure
from torchmetrics.image.lpip import LearnedPerceptualImagePatchSimilarity
-from pyrad.nerf.field_modules.encoding import NeRFEncoding
-from pyrad.nerf.field_modules.field_heads import FieldHeadNames
-from pyrad.nerf.fields.nerf_field import NeRFField
-from pyrad.nerf.graph.base import Graph
-from pyrad.nerf.loss import MSELoss
-from pyrad.nerf.ray_sampler import PDFSampler, UniformSampler
-from pyrad.nerf.renderers import AccumulationRenderer, DepthRenderer, RGBRenderer
-from pyrad.structures import colors
-from pyrad.structures.rays import RayBundle
+from pyrad.fields.modules.encoding import NeRFEncoding
+from pyrad.fields.modules.field_heads import FieldHeadNames
+from pyrad.fields.nerf_field import NeRFField
+from pyrad.graphs.base import Graph
+from pyrad.optimizers.loss import MSELoss
+from pyrad.graphs.modules.ray_sampler import PDFSampler, UniformSampler
+from pyrad.renderers.renderers import AccumulationRenderer, DepthRenderer, RGBRenderer
+from pyrad.utils import colors
+from pyrad.cameras.rays import RayBundle
from pyrad.utils import visualization, writer
@@ -117,10 +117,9 @@ class NeRFGraph(Graph):
return outputs
def get_loss_dict(self, outputs, batch):
- device = outputs["rgb_coarse"].device
- pixels = batch["pixels"].to(device)
- rgb_loss_coarse = self.rgb_loss(pixels, outputs["rgb_coarse"])
- rgb_loss_fine = self.rgb_loss(pixels, outputs["rgb_fine"])
+ image = batch["image"]
+ rgb_loss_coarse = self.rgb_loss(image, outputs["rgb_coarse"])
+ rgb_loss_fine = self.rgb_loss(image, outputs["rgb_fine"])
loss_dict = {"rgb_loss_coarse": rgb_loss_coarse, "rgb_loss_fine": rgb_loss_fine}
return loss_dict
diff --git a/pyrad/optimizers/__init__.py b/pyrad/optimizers/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/pyrad/nerf/loss.py b/pyrad/optimizers/loss.py
similarity index 100%
rename from pyrad/nerf/loss.py
rename to pyrad/optimizers/loss.py
diff --git a/pyrad/nerf/optimizers.py b/pyrad/optimizers/optimizers.py
similarity index 100%
rename from pyrad/nerf/optimizers.py
rename to pyrad/optimizers/optimizers.py
diff --git a/pyrad/renderers/base.py b/pyrad/renderers/base.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/pyrad/nerf/renderers.py b/pyrad/renderers/renderers.py
similarity index 100%
rename from pyrad/nerf/renderers.py
rename to pyrad/renderers/renderers.py
diff --git a/pyrad/utils/callbacks.py b/pyrad/utils/callbacks.py
index 578886104..e0963cd67 100644
--- a/pyrad/utils/callbacks.py
+++ b/pyrad/utils/callbacks.py
@@ -2,8 +2,8 @@
Callback functions for training iterations
"""
-from pyrad.nerf.graph.base import Graph
-from pyrad.nerf.occupancy_grid import OccupancyGrid
+from pyrad.graphs.base import Graph
+from pyrad.fields.occupancy_fields.occupancy_grid import OccupancyGrid
def update_occupancy(graph: Graph):
diff --git a/pyrad/structures/colors.py b/pyrad/utils/colors.py
similarity index 100%
rename from pyrad/structures/colors.py
rename to pyrad/utils/colors.py
diff --git a/pyrad/utils/math.py b/pyrad/utils/math.py
index 87b571ee1..5bf1767f7 100644
--- a/pyrad/utils/math.py
+++ b/pyrad/utils/math.py
@@ -8,7 +8,7 @@ def components_from_spherical_harmonics(levels: int, directions: TensorType[...,
"""
Args:
levels (int): Number of spherical harmonic levels to compute.
- coeffs (TensorType[..., "coeffs"]): Spherical hamonic coefficients
+ directions (TensorType[..., 3]): Spherical hamonic coefficients
Returns:
TensorType[..., "components"]: Value for each component.
diff --git a/pyrad/utils/writer.py b/pyrad/utils/writer.py
index 66f4384b6..f83a32db9 100644
--- a/pyrad/utils/writer.py
+++ b/pyrad/utils/writer.py
@@ -5,6 +5,7 @@ Generic Writer class
import enum
import os
+import sys
from abc import abstractmethod
from typing import Dict
@@ -16,7 +17,6 @@ from omegaconf import DictConfig, ListConfig
from torch.utils.tensorboard import SummaryWriter
from torchtyping import TensorType
-import pyrad.utils.writer
from pyrad.utils.decorators import check_main_thread, decorate_all
to8b = lambda x: (255 * torch.clamp(x, min=0, max=1)).to(torch.uint8)
@@ -136,7 +136,7 @@ def setup_event_writers(config: DictConfig) -> None:
"""Initialization of all event writers specified in config"""
logging_configs = config.logging.writer
for writer_type in logging_configs:
- writer_class = getattr(pyrad.utils.writer, writer_type)
+ writer_class = getattr(sys.modules[__name__], writer_type)
writer_config = logging_configs[writer_type]
if writer_type == "LocalWriter":
curr_writer = writer_class(writer_config.save_dir, writer_config.stats_to_track, writer_config.max_log_size)
diff --git a/pyrad/viewer/plotly.py b/pyrad/viewer/plotly.py
index 98a0128da..f6838f4c0 100644
--- a/pyrad/viewer/plotly.py
+++ b/pyrad/viewer/plotly.py
@@ -6,7 +6,7 @@ import numpy as np
import plotly.graph_objects as go
import torch
-from pyrad.structures.rays import RayBundle
+from pyrad.cameras.rays import RayBundle
def color_str(color):
diff --git a/scripts/benchmarking/run_benchmark.py b/scripts/benchmarking/run_benchmark.py
index 0e4e169ea..2ffcc743d 100644
--- a/scripts/benchmarking/run_benchmark.py
+++ b/scripts/benchmarking/run_benchmark.py
@@ -12,7 +12,7 @@ from hydra.core.global_hydra import GlobalHydra
from omegaconf import DictConfig
from tqdm import tqdm
-from pyrad.nerf.trainer import Trainer
+from pyrad.engine.trainer import Trainer
BENCH = {
"method": "vanilla_nerf",
diff --git a/scripts/run_data_preprocessor.py b/scripts/run_data_preprocessor.py
index fe20976f7..8e2b941b5 100644
--- a/scripts/run_data_preprocessor.py
+++ b/scripts/run_data_preprocessor.py
@@ -7,7 +7,7 @@ Script to process different dataset types into our format.
from hydra import compose, initialize
import json
-from pyrad.nerf.dataset.utils import get_dataset_inputs
+from pyrad.data.utils import get_dataset_inputs
from pyrad.utils.io import get_absolute_path, make_dir, write_to_pkl
from pyrad.utils.misc import get_hash_str_from_dict
diff --git a/scripts/run_eval.py b/scripts/run_eval.py
new file mode 100644
index 000000000..4dec9adb5
--- /dev/null
+++ b/scripts/run_eval.py
@@ -0,0 +1,88 @@
+"""
+run_eval.py
+"""
+import json
+import logging
+import os
+from datetime import date
+
+import torch
+from hydra import compose, initialize
+from hydra.core.global_hydra import GlobalHydra
+from omegaconf import DictConfig
+from tqdm import tqdm
+
+from pyrad.engine.trainer import Trainer
+from pyrad.cameras.cameras import Camera
+
+BENCH = {
+ "method": "vanilla_nerf",
+ "hydra_base_dir": "outputs/",
+ "benchmark_date": "05-26-2022",
+ "object_list": ["mic", "ficus", "chair", "hotdog", "materials", "drums", "ship", "lego"],
+}
+
+
+def load_best_ckpt(hydra_dir: str, config: DictConfig) -> str:
+ """helper function to update config with latest checkpoint in specified hydra_dir"""
+ model_dir = os.path.join(hydra_dir, config.graph.model_dir)
+ latest_ckpt = os.listdir(model_dir)
+ latest_ckpt.sort()
+ latest_ckpt = latest_ckpt[-1]
+ step = os.path.splitext(latest_ckpt)[0].split("-")[-1]
+ config.graph.resume_train.load_dir = model_dir
+ config.graph.resume_train.load_step = int(step)
+ config.logging.writer.TensorboardWriter.save_dir = "/tmp/"
+ return os.path.join(model_dir, latest_ckpt)
+
+
+def main():
+ """Main function."""
+ # benchmarks = {}
+ # hydra_base_dir = BENCH["hydra_base_dir"]
+ # method = BENCH["method"]
+ # benchmark_date = BENCH["benchmark_date"]
+ # for dataset in tqdm(BENCH["object_list"]):
+
+ # hydra_dir = f"{hydra_base_dir}/blender_{dataset}_{benchmark_date}/{method}/"
+ # basename = os.listdir(hydra_dir)[0]
+ # hydra_dir = f"{hydra_dir}/{basename}"
+ # initialize(config_path=os.path.join("../../", hydra_dir, ".hydra/"))
+ # config = compose("configs/flat.yaml")
+
+ with initialize(version_base=None, config_path="../configs"):
+ config = compose(config_name="flat.yaml")
+ trainer = Trainer(config, local_rank=0, world_size=1)
+ trainer.setup(test_mode=False)
+
+ # create a camera trajectory
+ print("Running eval.")
+ # camera = Camera()
+ # trainer.graph.eval()
+ # camera_ray_bundle = camera.get_camera_ray_bundle(device=trainer.device)
+ image_idx = 0
+ camera_ray_bundle, batch = trainer.dataloader_eval.get_data_from_image_idx(image_idx)
+ image_height, image_width = camera_ray_bundle.origins.shape[:2]
+ print(image_height, image_width)
+ outputs = trainer.graph.get_outputs_for_camera_ray_bundle(camera_ray_bundle)
+
+ # print(outputs)
+
+ # avg_psnr = 0
+ # for step, image_idx in enumerate(config.data.val_image_indices):
+ # with torch.no_grad():
+ # psnr = trainer.test_image(image_idx=image_idx, step=step)
+ # avg_psnr = (step * avg_psnr + psnr) / (step + 1)
+ # benchmarks[dataset] = (avg_psnr, ckpt)
+ # GlobalHydra.instance().clear()
+
+ # benchmark_info = {"bench": BENCH, "results": benchmarks}
+ # timestamp = date.today().strftime("%b-%d-%Y")
+ # json_file = os.path.join(BENCH["hydra_base_dir"], f"{timestamp}.json")
+ # with open(json_file, "w", encoding="utf8") as f:
+ # json.dump(benchmark_info, f, indent=2)
+ # logging.info("saved benchmark results to %s", json_file)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/scripts/run_train.py b/scripts/run_train.py
index b51b78f81..9610f098e 100644
--- a/scripts/run_train.py
+++ b/scripts/run_train.py
@@ -19,7 +19,7 @@ import torch.multiprocessing as mp
from omegaconf import DictConfig
import yaml
-from pyrad.nerf.trainer import Trainer
+from pyrad.engine.trainer import Trainer
from pyrad.utils import comms, profiler
logging.basicConfig(format="[%(filename)s:%(lineno)d] %(message)s", level=logging.DEBUG)
@@ -102,7 +102,7 @@ def _distributed_worker(
assert num_gpus_per_machine <= torch.cuda.device_count()
torch.cuda.set_device(local_rank)
- _set_random_seed(config.seed + global_rank)
+ _set_random_seed(config.machine_config.seed + global_rank)
comms.synchronize(world_size)
output = main_func(local_rank, world_size, config)
@@ -151,11 +151,11 @@ def launch(
world_size = num_machines * num_gpus_per_machine
if world_size == 0:
# Using only CPU and one process.
- _set_random_seed(config.seed)
+ _set_random_seed(config.machine_config.seed)
main_func(local_rank=0, world_size=0, config=config)
elif world_size == 1:
# Using one gpu and one process.
- _set_random_seed(config.seed)
+ _set_random_seed(config.machine_config.seed)
try:
main_func(local_rank=0, world_size=1, config=config)
except KeyboardInterrupt:
diff --git a/tests/structures/test_cameras.py b/tests/cameras/test_cameras.py
similarity index 84%
rename from tests/structures/test_cameras.py
rename to tests/cameras/test_cameras.py
index a689baa20..8e4313a3c 100644
--- a/tests/structures/test_cameras.py
+++ b/tests/cameras/test_cameras.py
@@ -4,14 +4,14 @@ Test the camera classes.
import torch
-from pyrad.structures.cameras import EquirectangularCamera, PinholeCamera
-from pyrad.structures.rays import RayBundle
+from pyrad.cameras.cameras import EquirectangularCamera, PinholeCamera
+from pyrad.cameras.rays import RayBundle
def test_pinhole_camera():
"""Test that the pinhole camera model works."""
pinhole_camera = PinholeCamera(cx=400.0, cy=400.0, fx=10.0, fy=10.0)
- camera_ray_bundle = pinhole_camera.generate_camera_rays()
+ camera_ray_bundle = pinhole_camera.get_camera_ray_bundle()
assert isinstance(camera_ray_bundle, RayBundle)
assert torch.allclose(camera_ray_bundle.origins[0], torch.tensor([0.0, 0.0, 0.0]))
@@ -26,7 +26,7 @@ def test_pinhole_camera():
def test_equirectangular_camera():
"""Test that the equirectangular camera model works."""
equirectangular_camera = EquirectangularCamera(height=400, width=400)
- camera_ray_bundle = equirectangular_camera.generate_camera_rays()
+ camera_ray_bundle = equirectangular_camera.get_camera_ray_bundle()
assert isinstance(camera_ray_bundle, RayBundle)
assert torch.allclose(camera_ray_bundle.origins[0], torch.tensor([0.0, 0.0, 0.0]))
diff --git a/tests/nerf/field_modules/test_embedding.py b/tests/fields/modules/test_embedding.py
similarity index 77%
rename from tests/nerf/field_modules/test_embedding.py
rename to tests/fields/modules/test_embedding.py
index c8c682b77..749ead2d9 100644
--- a/tests/nerf/field_modules/test_embedding.py
+++ b/tests/fields/modules/test_embedding.py
@@ -1,7 +1,7 @@
"""
Embedding tests
"""
-from pyrad.nerf.field_modules.embedding import Embedding
+from pyrad.fields.modules.embedding import Embedding
def test_indexing():
diff --git a/tests/nerf/field_modules/test_encodings.py b/tests/fields/modules/test_encodings.py
similarity index 98%
rename from tests/nerf/field_modules/test_encodings.py
rename to tests/fields/modules/test_encodings.py
index 921dc37f1..ff9c2965c 100644
--- a/tests/nerf/field_modules/test_encodings.py
+++ b/tests/fields/modules/test_encodings.py
@@ -3,7 +3,7 @@ Encoding Tests
"""
import pytest
import torch
-from pyrad.nerf.field_modules import encoding
+from pyrad.fields.modules import encoding
def test_scaling_and_offset():
diff --git a/tests/nerf/field_modules/test_field_outputs.py b/tests/fields/modules/test_field_outputs.py
similarity index 96%
rename from tests/nerf/field_modules/test_field_outputs.py
rename to tests/fields/modules/test_field_outputs.py
index b7fe775ec..8d7a0f69e 100644
--- a/tests/nerf/field_modules/test_field_outputs.py
+++ b/tests/fields/modules/test_field_outputs.py
@@ -5,7 +5,7 @@ import torch
from torch import nn
import pytest
-from pyrad.nerf.field_modules.field_heads import (
+from pyrad.fields.modules.field_heads import (
DensityFieldHead,
FieldHead,
FieldHeadNames,
diff --git a/tests/nerf/field_modules/test_mlp.py b/tests/fields/modules/test_mlp.py
similarity index 92%
rename from tests/nerf/field_modules/test_mlp.py
rename to tests/fields/modules/test_mlp.py
index 25a071f7a..15bfeb1f4 100644
--- a/tests/nerf/field_modules/test_mlp.py
+++ b/tests/fields/modules/test_mlp.py
@@ -4,7 +4,7 @@ MLP Test
import torch
from torch import nn
-from pyrad.nerf.field_modules import MLP
+from pyrad.fields.modules import MLP
def test_mlp():
diff --git a/tests/nerf/test_fields.py b/tests/fields/test_fields.py
similarity index 76%
rename from tests/nerf/test_fields.py
rename to tests/fields/test_fields.py
index 57acc7f6c..ad76fa4e0 100644
--- a/tests/nerf/test_fields.py
+++ b/tests/fields/test_fields.py
@@ -3,9 +3,9 @@ Test the fields
"""
import torch
-from pyrad.nerf.field_modules.field_heads import FieldHeadNames
-from pyrad.nerf.fields.instant_ngp_field import TCNNInstantNGPField
-from pyrad.structures.rays import Frustums, PointSamples
+from pyrad.fields.modules.field_heads import FieldHeadNames
+from pyrad.fields.instant_ngp_field import TCNNInstantNGPField
+from pyrad.cameras.rays import Frustums, PointSamples
def test_tcnn_instant_ngp_field():
@@ -31,9 +31,9 @@ def test_tcnn_instant_ngp_field():
frustums = Frustums(
origins=positions,
directions=directions,
- frustum_starts=torch.zeros((*directions.shape[:-1], 1)),
- frustum_ends=torch.zeros((*directions.shape[:-1], 1)),
- pixel_area=torch.ones((*directions.shape[:-1], 1)),
+ frustum_starts=torch.zeros((*directions.shape[:-1], 1), device=device),
+ frustum_ends=torch.zeros((*directions.shape[:-1], 1), device=device),
+ pixel_area=torch.ones((*directions.shape[:-1], 1), device=device),
)
point_samples = PointSamples(frustums=frustums)
field_outputs = field.forward(point_samples)
diff --git a/tests/nerf/test_occupancy_grid.py b/tests/graphs/modules/test_occupancy_grid.py
similarity index 89%
rename from tests/nerf/test_occupancy_grid.py
rename to tests/graphs/modules/test_occupancy_grid.py
index 4e10ed380..5110ee0bf 100644
--- a/tests/nerf/test_occupancy_grid.py
+++ b/tests/graphs/modules/test_occupancy_grid.py
@@ -3,7 +3,7 @@ Code to test the occupancy grid.
"""
import torch
-from pyrad.nerf.occupancy_grid import OccupancyGrid
+from pyrad.fields.occupancy_fields.occupancy_grid import OccupancyGrid
def test_occupancy_grid():
diff --git a/tests/nerf/test_sampler.py b/tests/graphs/modules/test_ray_sampler.py
similarity index 89%
rename from tests/nerf/test_sampler.py
rename to tests/graphs/modules/test_ray_sampler.py
index 2daaf8b8d..6bca80045 100644
--- a/tests/nerf/test_sampler.py
+++ b/tests/graphs/modules/test_ray_sampler.py
@@ -2,10 +2,10 @@
Test samplers
"""
import torch
-from pyrad.nerf.ray_sampler import PDFSampler, UniformSampler
+from pyrad.graphs.modules.ray_sampler import PDFSampler, UniformSampler
-from pyrad.structures.rays import RayBundle
-from pyrad.nerf.colliders import NearFarCollider
+from pyrad.cameras.rays import RayBundle
+from pyrad.graphs.modules.scene_colliders import NearFarCollider
def test_uniform_sampler():
diff --git a/tests/nerf/test_renderers.py b/tests/renderers/test_renderers.py
similarity index 98%
rename from tests/nerf/test_renderers.py
rename to tests/renderers/test_renderers.py
index 2c6a0ca6a..67f780b57 100644
--- a/tests/nerf/test_renderers.py
+++ b/tests/renderers/test_renderers.py
@@ -4,7 +4,7 @@ Test renderers
import pytest
import torch
-from pyrad.nerf import renderers
+from pyrad.renderers import renderers
def test_rgb_renderer():