关于界面布局约束的方法有很多,纯代码布局,可以使用官方原生布局(很繁琐)、VFL、Masonary第三方等,在xib或者storyboard中也可以使用Autolayout的界面约束进行布局约束。
我今天要着重记录的是VFL 的布局方式,以前看过相关的博客文档,试着写过,但是因为约束的那串字符串有点复杂也就浅尝辄止,最近要写项目,突然发现VFL布局的奇妙之处,所以在此记录一下VFL的使用。
使用VFL进行约束时你完全不需要对view进行frame设置,所有的布局信息全都融合在一串字符串里面,对于纯代码布局来说,还是一种不错的布局方式。
有点喜欢这种不需要添加frame的约束方式了。
注意点:
- /*
- *
- *VFL 使用:
- *非scrollView:约束一个view需要上下左右边界四个条件就可以进行约束了
- *scrollView:约束一个scrollView的subview不仅仅需要上下左右四个边界,你还必须对subview的高度和跨度
- *进行约束,因为VFL中会根据高度和宽度进行contentsize的自动适配
- *
- */
- //VFL 字符串带变量:
- NSString *toolbarVfV = [NSString stringWithFormat:@"V:[toolbarView(%f)]-(-%f)-|",ePayWapViewToolbarHeight,ePayWapViewToolbarHeight];
本例测试实现:vertical方向布局四个View,同时在其中一个view中实现水平布局(有点类似于前端以及安卓中的先大再小的布局方式)
,进入正题直接上Demo:
/*
*
*vertical方向布局
*
*/
-(void)setupVerticalLayout{
//
UIView *blueView=[[UIView alloc]init];
blueView.backgroundColor=Color_1;
//
UIView *redView=[[UIView alloc]init];
redView.backgroundColor=Color_5;
//
UIView *yellowView=[[UIView alloc]init];
yellowView.backgroundColor=Color_4;
//
UIView *grayView=[[UIView alloc]init];
grayView.backgroundColor=Color_3;
//使用VFL时一定要加上这几句代码:
[blueView setTranslatesAutoresizingMaskIntoConstraints:NO];
[redView setTranslatesAutoresizingMaskIntoConstraints:NO];
[yellowView setTranslatesAutoresizingMaskIntoConstraints:NO];
[grayView setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:blueView];
[self.view addSubview:redView];
[self.view addSubview:yellowView];
[self.view addSubview:grayView];
NSDictionary *views=NSDictionaryOfVariableBindings(blueView,redView,yellowView,grayView);
NSDictionary *metrics=@{@"margin":@10};
//vertical 方向约束
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[blueView(==100)]-margin-[redView(==150)]-margin-[yellowView(==100)]-margin-[grayView]-margin-|" options:0 metrics:metrics views:views]];
//blueView 的horizon方向
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-margin-[blueView]-margin-|" options:0 metrics:metrics views:views]];
//redView 的horizon方向
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-margin-[redView]-margin-|" options:0 metrics:metrics views:views]];
//yellowView 的horizon方向
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-margin-[yellowView]-margin-|" options:0 metrics:metrics views:views]];
//grayView 的horizon方向 [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-margin-[grayView]-margin-|" options:0 metrics:metrics views:views]]; [self setupHorisonalLayout:redView];}
上面的Demo实现了是个view的vertical方向的布局约束,
下面实现四个horizon方向的view的布局:
/*
*
*horizon方向布局
*
*/
-(void)setupHorisonalLayout:(UIView*)containtView{
//
UIView *blueView=[[UIView alloc]init];
blueView.backgroundColor=Color_1;
//
UIView *redView=[[UIView alloc]init];
redView.backgroundColor=Color_2;
//
UIView *yellowView=[[UIView alloc]init];
yellowView.backgroundColor=Color_3;
//
UIView *grayView=[[UIView alloc]init];
grayView.backgroundColor=Color_4;
[blueView setTranslatesAutoresizingMaskIntoConstraints:NO];
[redView setTranslatesAutoresizingMaskIntoConstraints:NO];
[yellowView setTranslatesAutoresizingMaskIntoConstraints:NO];
[grayView setTranslatesAutoresizingMaskIntoConstraints:NO];
[containtView addSubview:blueView];
[containtView addSubview:redView];
[containtView addSubview:yellowView];
[containtView addSubview:grayView];
NSDictionary *views=NSDictionaryOfVariableBindings(blueView,redView,yellowView,grayView);
NSDictionary *metrics=@{@"margin":@20};
//水平方向约束
[containtView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-margin-[blueView]-margin-[redView(blueView)]-margin-[yellowView(redView)]-margin-[grayView(yellowView)]-margin-|" options:0 metrics:metrics views:views]];
//blueView 的竖直方向
[containtView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[blueView(==30)]" options:0 metrics:nil views:views]];
//redView 的竖直方向
[containtView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[redView(blueView)]" options:0 metrics:nil views:views]];
//yellowView 的竖直方向
[containtView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[yellowView(blueView)]" options:0 metrics:nil views:views]];
//grayView 的竖直方向
[containtView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[grayView(blueView)]" options:0 metrics:nil views:views]];
}
最终实现的页面是这样的:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAu4AAAU2CAYAAADK1zMGAAAEDWlDQ1BJQ0MgUHJvZmlsZQAAOI2NVV1oHFUUPrtzZyMkzlNsNIV0qD8NJQ2TVjShtLp/3d02bpZJNtoi6GT27s6Yyc44M7v9oU9FUHwx6psUxL+3gCAo9Q/bPrQvlQol2tQgKD60+INQ6Ium65k7M5lpurHeZe58853vnnvuuWfvBei5qliWkRQBFpquLRcy4nOHj4g9K5CEh6AXBqFXUR0rXalMAjZPC3e1W99Dwntf2dXd/p+tt0YdFSBxH2Kz5qgLiI8B8KdVy3YBevqRHz/qWh72Yui3MUDEL3q44WPXw3M+fo1pZuQs4tOIBVVTaoiXEI/MxfhGDPsxsNZfoE1q66ro5aJim3XdoLFw72H+n23BaIXzbcOnz5mfPoTvYVz7KzUl5+FRxEuqkp9G/Ajia219thzg25abkRE/BpDc3pqvphHvRFys2weqvp+krbWKIX7nhDbzLOItiM8358pTwdirqpPFnMF2xLc1WvLyOwTAibpbmvHHcvttU57y5+XqNZrLe3lE/Pq8eUj2fXKfOe3pfOjzhJYtB/yll5SDFcSDiH+hRkH25+L+sdxKEAMZahrlSX8ukqMOWy/jXW2m6M9LDBc31B9LFuv6gVKg/0Szi3KAr1kGq1GMjU/aLbnq6/lRxc4XfJ98hTargX++DbMJBSiYMIe9Ck1YAxFkKEAG3xbYaKmDDgYyFK0UGYpfoWYXG+fAPPI6tJnNwb7ClP7IyF+D+bjOtCpkhz6CFrIa/I6sFtNl8auFXGMTP34sNwI/JhkgEtmDz14ySfaRcTIBInmKPE32kxyyE2Tv+thKbEVePDfW/byMM1Kmm0XdObS7oGD/MypMXFPXrCwOtoYjyyn7BV29/MZfsVzpLDdRtuIZnbpXzvlf+ev8MvYr/Gqk4H/kV/G3csdazLuyTMPsbFhzd1UabQbjFvDRmcWJxR3zcfHkVw9GfpbJmeev9F08WW8uDkaslwX6avlWGU6NRKz0g/SHtCy9J30o/ca9zX3Kfc19zn3BXQKRO8ud477hLnAfc1/G9mrzGlrfexZ5GLdn6ZZrrEohI2wVHhZywjbhUWEy8icMCGNCUdiBlq3r+xafL549HQ5jH+an+1y+LlYBifuxAvRN/lVVVOlwlCkdVm9NOL5BE4wkQ2SMlDZU97hX86EilU/lUmkQUztTE6mx1EEPh7OmdqBtAvv8HdWpbrJS6tJj3n0CWdM6busNzRV3S9KTYhqvNiqWmuroiKgYhshMjmhTh9ptWhsF7970j/SbMrsPE1suR5z7DMC+P/Hs+y7ijrQAlhyAgccjbhjPygfeBTjzhNqy28EdkUh8C+DU9+z2v/oyeH791OncxHOs5y2AtTc7nb/f73TWPkD/qwBnjX8BoJ98VVBg/m8AAEAASURBVHgB7N0HkGRrXT7gc/Eq5gQGMIAJzAoCilnMImDOYBkKDAWIGfWaMGuVYizRMoBaZgUFM5hRUTArmEARzDlh6v/5tf/Tzszu7O7svq93Fp5TNXd6uk+/fea5O91vf+c7p2/YrctiIUCAAAECBAgQIEDgXAvc4lxvnY0jQIAAAQIECBAgQGAvoLj7h0CAAAECBAgQIEDgOhBQ3K+D/0k2kQABAgQIECBAgIDi7t8AAQIECBAgQIAAgetAQHG/Dv4n2UQCBAgQIECAAAECirt/AwQIECBAgAABAgSuAwHF/Tr4n2QTCRAgQIAAAQIECCju/g0QIECAAAECBAgQuA4EFPfr4H+STSRAgAABAgQIECCguPs3QIAAAQIECBAgQOA6EIgW93/+539efvzHf3z/9Vd/9Vfn+td/+tOfvrzaq73a8rqv+7rLbPd5X/7jP/5j+e7v/u7l/ve//3K3u91tuc1tbrO8+Iu/+HKLW9xi/31+nuvn9llv1rcQIHD9Cfz7v//78qQnPWn59m//9uUXf/EXl3/5l3850y/x+7//+8v3fM/3LI973OOWP/7jPz7Tfa1MgACB61Hgq7/6q5fXfM3X3Hei6UXn8Wu2b7bzmpddYLnpppt2t7vd7XY33njj7oYbbjh8vdIrvdLuEY94ROAR8hFf+ZVfedjO9QUu/wChxKc97Wm7D/7gD9695Eu+5GF7jxqv/wAuev2sP/eb+1sIEMgLPOMZz9jd9ra33d3qVrfavfRLv/T+61M/9VOv+oH+8i//cvd+7/d+uxd4gRfYrS86h7/r+Xmuf9aznnVq9n/+53/u5rHXN/PH7js5d7/73Xe/8iu/cup9T7vhS77kS479btvvON9f/uVffvcmb/Imuwc84AG7P//zP79oxLwmbDZv9EZvdNF1Tl75C7/wC4f7zOM85CEPObmKnwkQIHBM4Gu/9mt3r/d6r7f7pV/6pWPXn7cfZvtmO2d7r2VZruXO66j67q3f+q0PLzAv9mIvtrvLXe6ye+M3fuPdy7zMyxyunxeOdRTpWh4qft+//du/3d3nPvfZfdAHfdBuXvTO2zLb9yEf8iG7F3zBFzw4Tkm/0q+t3M/9J+ev//qvz9uvaHsIXNcCb/mWb3msJM/f3IMf/OCr+p3+9E//dP+cebSwb3/r29/yPKfOeieXdUR+99qv/drHtuXkfee5+awDFJ/92Z99LHPbjpPfp2CvewdObtZ+sOHo7/PTP/3TF6xz8or3fd/3PfaYH/7hH35yFT8TIEDgmMA6e2L3a7/2a/vnoZd92Zc9dKaTz1U358+zXfM8Ods523styzUV9ynpA/HCL/zC+5H1//7v/z5sy5Thr/iKr9jNC8asc+973/twmwuXFvjRH/3R3Tr15fCPb3sRnhfnj/3Yj9095tGP2a1TfQ5vOMZ6fv6BH/iB3cd93MftXud1XudQ8Ld/qJM3uRYCBK5d4Ku+6qsOBXNGlufvbP5OH/SgB50aPiP084b8YssMbmwl9853vvP+b3ydJrP7mI/5mP3o9vZ3POudXGbwYbvvjLh/1md91u5nf/Znd9/3fd+3e/u3f/vD88i8cJzlDfzkbL/Xq77qq+7ue9/77r8+8AM/cPdWb/VWh+f2WWced56Dji7bXsLt+es93uM9jt58weV/+Id/OGRu9/mwD/uwC9ZzBQECBI4KzHPQLFtp354/ztP32cbZvlm27d3/cBX/uerivs6h3D/4LW95y92lRlJmlOf5n//59+s+4QlPuIpNfN66y5d+6ZfuxnT+x27/6GavxuxCPsvyxCc+cfc2b/M2h4zJm9H3hz/84WeJsS4BAicEnv3sZ+9e6qVeav83+uqv/uq7L//yLz/8vZ5W3D/xEz9xPwVmBjke9ahHHUv8gz/4g0PxnjcB//qv/3rs9t/7vd/bD47M3/A8l/7TP/3T4fa5bZuiOH/fF9tV/D7v8z777Zv7n2WPwNHi/p7v+Z6Hx9wuzOj/He94x0P2u77ru2437b+fLO4v8iIvcuobl7nDF3zBFxwctuc+xf0YqR8IELiIwDxfzHK0N23PIefp+2zfLNv27n+4iv9c9cGpD33oQ0dqWUfSl7d4i7dYt+Piyzu/8zsva4Hcr/vN3/zNF6z0J3/yJ8sDH/jAZR1JWtYXwf0BluvIzrLOzb5g3XUO6HKve91r+eiP/uj9bd/6rd+6rC9K+/t97ud+7mH9dW7mfr111GlZR7mWT/7kT17W+ZjLq7zKqxzWmQNSJ+u93/u9D9edvPAd3/Edywd8wAcsb/AGb7Cso2DL/e53v+XHfuzHTq62//lKHvOidzxx5cu93Mvtrxnb9YVv+bZv+7ZlfcOzrNOPTqx56R/n93384x+/v//kTN58rbvbL31HtxIgcEmBdfrG8vd///fLWpiXb/zGb1zWMn3J9efGb/mWb1nWPWPLWsr39zl6h/VN9uHv853e6Z2WtYAfvXn//Hb7299+f91kPOUpTznc/nM/93PLuqdz//Pbvu3bLne9610Pt20X1jfr+4vz9/9d3/Vd29XX/H2d37982Zd92SH7V3/1Vy+ZOQfZrscWnbrON3zDNxwcTl3JDQQIEDhFYJ7jzvMS27416MzLeqaCwzub3/md37ns/WeEanbd/sZv/Maxdb/3e793N6Mw8y5kvraR+bn8Qi/0QrtHPvKRx9Zfz5awX+81XuM1dnPg1Ha/+b6W+cO67/Zu77a/babqrGX92HrbdJ45EGzu96Iv+qKH+20XZsRr5lpu+XNw2DaqNdt4sVGrK3nMLf9y3+fAhfkdf+u3fuvYquuZYnbrm5Xd7HKekb7ZPT3bON/n57l+bp/1ji6TM3nXekDE0UyXCTwvCqxnbDqMCn/oh37onuBrvuZr9n+H6wvGqVNl3v/93/+wzhd90Rcdo3vOc56zn8IyxwydHG2fFef2bcrhPMY8/27LJ3zCJxxyZ1rNacs2+j3PFz/1Uz912mrHrr/ciPusPNNbJnO2a54jj27/9pgzN/8N3/AN9+vNlJuLLesgw8F1Hew5ZBpxv5iW6wgQOCowzz+zzPfz/rVt53yf/jvTDmev61mW//ltz3KPdd0f/uEf3uPM7uKrXeYJf0rzPOnPi9qc9WAK50/8xE/stl2788R/dE7o7Bae/ynzy84u55lruY6A75761KceezGbg05nvZd4iZfYvfIrv/K+sM4BAU9+8pMPm/sXf/EXh6zDlf//wkd+5Efut2vOGDFTgubFaB1h28/Z38ryOjp07G5X8pjH7nCZH2be+tFlHdk6Nu993LYXzO3y9n3ms8/6R5eTeUdvc5kAgcsLzEGg85wwf2dzVpV5DpvlSor7rPdDP/RDu/U0j3PxTMt6+rBDqb3Tne507L5Hp+nMc9DFlr/7u787DDzM8+LXf/3XX2y1C667kuL+R3/0R4fnoXk+3wZGJuxocd+Mxm5eP04us+1z29xnBmzm8myr4n5Sys8ECJwUmOeKWeb7ef/atnO+z/PcfF3pWbfmPrNcVXGfedKD81qv9Vr/k3IV//3t3/7t3Ud91EftPuVTPuXYk/1EzQvk9qQ/B1xuy1bc5xedOaOnLVuJnpGeKegXW04r7vPOZ94UzNfF9iZMYZ/ffU51ebQMX8ljXmw7Lnfd7BmYA9K2/8FX8o9yW3fud9rvf7nHdTsBAscFZq/edhDoN33TNx1u3Erp/G2eNsf9sPIZL8yAwwxAzN/07PmbgY2jyxz7MrfNY8+Axsm9dLPunJll2+5Z7zM+4zOORpx6+UqK+zwPb4+/fibGsaztOXyeh2evwZwacta95z3veWy92dOw7XmdvRjrFMVDpuJ+jMoPBAhcRGCe12aZ7+f9a9vO7fts7zz/nWW5qjnu24d6XMt86bX0L+uZGZaZm74+ma/b/r/LOk1medM3fdP5P7Gs5fl/b/j/l2b9T/u0T7vg+pNXrGX6zHO61wPH9vNQZ67pnCz/5LKeWnFZjwxenvnMZy6/+Zu/efLm5Woe84KQI1fMHNL1xXlvMR7riP+y7hHYf8jVepDa/vr5Ph98tb4RWta9IId1537b/NYjkS4SIHBGgflb3+Zgz/Ej62cknDHh7KuvgwjLO77jOy7/+I//uL/zJ33SJy33uMc9jgXNsS9zjNE8J84c8vUUlcs6FWdZD1JdHvvYxy7rFL79ds/zwrasewq2i1f8/b/+67/2H1Q3xwbN/de9l/tjjdbpiIeMmft/2rK+6dgfjzS3z7E364DCYdXJWPdq7n9ez4q1/+CUw40uECBA4LlcYJ67z7LceJaVt3XnUzpnWU8ttl11Td/nU1Z/+Zd/eVk/YGT5m7/5m2WdHrPMp//NMgdjnVzmRWid83ny6gt+XudTXnDd5a6Yg2KnIM+nFx59UTp6v3ljMeuso1v7A1eP3nY1j3n0/icvf87nfM6y7mlYvvM7v3N/MO06T33/qalH11vfrS1zYNp8fd7nfd4yL6Dz6anz5uNhD3vY0VVdJkDgKgQ+4iM+Yvm3f/u3/YGo6wj7VSSc7S4zOLKeTWpZP9xo/1wzAwbredUvGrJOLdkffD/rznPyFPyjy9u93dst6xSbZQ6gn+UVXuEVjt58RZe///u/f1mnwpy67mzreuzPqbfPDeupbJev+7qv2zuuZ89aPv/zP3+//rr3Yv87zpuQ9ZS3y7o39pI5biRAgMBzk8A6w+NMv85VFfdtJPrP/uzPzvRgJ1d+9KMfvaxTZc7VE/V6LuL9Zv7gD/7gMl+XWv7wD//wUjfHbpuz56ynWlvmbDuXW9bd6vszR8x91lO4XbA343L3dzsBAscF1oPol5//+Z/fl8vtLFPH18j+NAMYM3K+nm5x/5jrQef7UfPTHmU9heR+z+S8Yf+RH/mR/cj4DCzMWV+mUM+Zb+5///sf7p4cXJgXnHV60BUNEMxZw+bsYXO2rznLzgwyzF6BeZMy2zt7DC0ECBB4XhNYT6t7pl/5qor7THOZZUbH50l3PQD0TA86K68HKO13na4HpO6npLzDO7zDsp55YLn1rW693OrWt1puuumm/S7VMwdf4x3WTwHcJ6wfarLfzXypuNd//de/1M2x2+a0c0dL+/rBLMuMxM/32W0902dmtGqmD22njVwP3I09viACz8sCj3jEIw6//ryxn+knR5c5pe22zGDEOi99Wc/itB9d3q6fqSZzKsZb3/rWy4yAn7bMKW+ntG9ldt6wz962yy3rfPL9XrZZb6YXznPGbMO2/O7v/u528dj1hysvc2H9mO5jp86d0fc5Te56UNUygwVXusypfKe4z1TD9QOiltmDOMucBnc9ScGVxliPAAECzxUCM5gxex3PslxVcZ/zoU9ZnxeXT//0T7/sg8487XnxmbmYX/iFX7jfvpmHOdNR1k/2W9ZP9Lxgm0/Oe79ghdIV60fR7pPXg7n2I9alh7nq2BmpWg/gWuYNz7bMi/3sHZjRthldU9o3Gd8JXLvAlO5t+cmf/Mnt4kW/z+dGzNf8TR5d3uu93muZUj8jy+tBn/vnzaO3z+UZCJnnyNmTN+vNYMaU2+d7vuc7uerh53njPlNL5lzuU6ZnMGEbWNlWmmmH61m79j9OQT7r6M7c8Q53uMN+MGXLvNrv87kbM2VmPUXwPm/bazl7MubNhoUAAQLPKwLzPH81yy2u5k5Tqj/zMz9zf9cZRbrYQZpb7hyENKPD8yEjs6t0W6b0z/Lu7/7u21WH7zNR/9d//dcPP/9fXpjRrllmj8B2UNjJx19P67asp4ncv9CevK398xz8OvNAL7bM9fOBWBYCBHICMxVlnrtO+5qD1beBhvXMKfv1Tk5HmYNFt2U9j/p28fB9Cvg892zH2MyH1s2b8cuV2Rn8mANW3/zN33y5y13usqxnnTlkzoV5YZgPuJs3H3N5Dmy/kg+MOhYS/GGctr2H84ZjO25gPQd98FFEESBA4LlX4KqK+3DMwVJTFKdkz4vGjCadXGYqx+wGmAOmbr9+8t9MP9mW7VNMZzf00RGt+UTCKfMnR6y2+7W/z3zS+ZTUecOxfgjTfr7o0cec0aJ3eZd32c/HvNTBWkfvk7w8B+XOi/PJUbP5ea6/koN2k9sji8Bzu8B63vN9oZ6DxC/29ZCHPORAMHu7Zp31NLaH6+bCAx7wgGUOap9pbSfncs+ZWtYP4diPnE+5nmI9bxKmzM7UkpNfR59rZ+rNzGOfZfbCzXPsHJA+Ax8zWj97NGdP3OTOQf0f//Efv1/35vzP/F7z6bDbm515w3I10y1vzt/BYxMgcP4EruVMh/8Xv01q+65p3+QcWDQjwPMiMfM+52wFs6t2XnjmVGZz1pVZ1g8rWZ7whCfsX7g2nIc+9KHLz/zMzyzzMdnzy0zBn9GjOc3YzNecuZ2XOzh0y0p/n7NGrOcaXmZkfd5gzBkZ5s3F7FmYMzfMAVlzKss5xdnNscyo3pxS7c3e7M2WmXM7b4rm57neQoDA+ROYKYVTwKe8nzyDwIzAz7z4KdezTAGfs6+ctsw0vnne3ZaZPne3u91tP8VmThgwjzVfR5d5bljPj77MGahu7mVeD2aPwjy/zvKgBz7o5t4kj0+AwHUsMFOcp4euH0i3P1j+5hr4vRTh9NzZvtnObUr2pda/1G1XPeI+oVMYZ+7kjCZN2Z6zIMyT8WMe85h9aZ8R6TmN2mzorHt0md27c+aTuX5O//i4xz1uf77y9UM89tNqruaUZUfzr+XyvAjONs/pFef8wjMHf0azZxR+yvK8YZk5qzfnMmeMmHO3z7bO9/nZQoDA+RWY8nyytCe2dg6on7PezGj7vDHYRrIne6bazEGks/dzns/Oy/LFX/zF++Od5rSQ97r3vc7LZtkOAgSuQ4HZkzh7O6cQT0+bQZDz9jXbNds323mtez5vWH+5q5sdf5H/ubOLeF5AZnR6ptHMmQiuZIRnCv+cAm1Gti83p/MiD1u9anhmLuaMgs1ZGq7k96lukHACBAicIjAjTfOZGHNA6ky3mWmMps+dguVqAgSeawRmFsSMaM9xQud1mYP85/S5s/f1WpZocb+WDXFfAgQIECBAgAABAgROF7imqTKnx7qFAAECBAgQIECAAIGkgOKe1JRFgAABAgQIECBAoCSguJdgxRIgQIAAAQIECBBICijuSU1ZBAgQIECAAAECBEoCinsJViwBAgQIECBAgACBpIDintSURYAAAQIECBAgQKAkoLiXYMUSIECAAAECBAgQSAoo7klNWQQIECBAgAABAgRKAop7CVYsAQIECBAgQIAAgaTAjcmwyXrOs5+SjpRHgAABAgQIECBA4LoTuOVt7hTdZiPuUU5hBAgQIECAAAECBDoCinvHVSoBAgQIECBAgACBqIDiHuUURoAAAQIECBAgQKAjoLh3XKUSIECAAAECBAgQiAoo7lFOYQQIECBAgAABAgQ6Aop7x1UqAQIECBAgQIAAgaiA4h7lFEaAAAECBAgQIECgI6C4d1ylEiBAgAABAgQIEIgKKO5RTmEECBAgQIAAAQIEOgKKe8dVKgECBAgQIECAAIGogOIe5RRGgAABAgQIECBAoCOguHdcpRIgQIAAAQIECBCICijuUU5hBAgQIECAAAECBDoCinvHVSoBAgQIECBAgACBqIDiHuUURoAAAQIECBAgQKAjoLh3XKUSIECAAAECBAgQiAoo7lFOYQQIECBAgAABAgQ6Aop7x1UqAQIECBAgQIAAgaiA4h7lFEaAAAECBAgQIECgI6C4d1ylEiBAgAABAgQIEIgKKO5RTmEECBAgQIAAAQIEOgKKe8dVKgECBAgQIECAAIGogOIe5RRGgAABAgQIECBAoCOguHdcpRIgQIAAAQIECBCICijuUU5hBAgQIECAAAECBDoCinvHVSoBAgQIECBAgACBqIDiHuUURoAAAQIECBAgQKAjoLh3XKUSIECAAAECBAgQiAoo7lFOYQQIECBAgAABAgQ6Aop7x1UqAQIECBAgQIAAgaiA4h7lFEaAAAECBAgQIECgI6C4d1ylEiBAgAABAgQIEIgKKO5RTmEECBAgQIAAAQIEOgKKe8dVKgECBAgQIECAAIGogOIe5RRGgAABAgQIECBAoCOguHdcpRIgQIAAAQIECBCICijuUU5hBAgQIECAAAECBDoCinvHVSoBAgQIECBAgACB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bl060VIJECBAgAABAgQIEEgJGHFPScohQIAAAQIECBAgUBRQ3Iu4ogkQIECAAAECBAikBBT3lKQcAgQIECBAgAABAkUBxb2IK5oAAQIECBAgQIBASkBxT0nKIUCAAAECBAgQIFAUUNyLuKIJECBAgAABAgQIpAQU95SkHAIECBAgQIAAAQJFAcW9iCuaAAECBAgQIECAQEpAcU9JyiFAgAABAgQIECBQFFDci7iiCRAgQIAAAQIECKQEFPeUpBwCBAgQIECAAAECRQHFvYgrmgABAgQIECBAgEBKQHFPScohQIAAAQIECBAgUBRQ3Iu4ogkQIECAAAECBAikBBT3lKQcAgQIECBAgAABAkUBxb2IK5oAAQIECBAgQIBASkBxT0nKIUCAAAECBAgQIFAUUNyLuKIJECBAgAABAgQIpAQU95SkHAIECBAgQIAAAQJFgRvT2bd/xdumI+URIECAAAECBAgQuO4Env7MZ0W32Yh7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAEC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AQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBH4IbdunSipRIgQIAAAQIECBAgkBIw4p6SlEOAAAECBAgQIECgKKC4F3FFEyBAgAABAgQIEEgJKO4pSTkECBAgQIAAAQIEigKKexFXNAECBAgQIECAAIGUgOKekpRDgAABAgQIECBAoCiguBdxRRMgQIAAAQIECBBICSjuKUk5BAgQIECAAAECBIoCinsRVzQBAgQIECBAgACBlIDinpKUQ4AAAQIECBAgQKAooLgXcUUTIECAAAECBAgQSAko7ilJOQQIECBAgAABAgSKAop7EVc0AQIECBAgQIAAgZSA4p6SlEOAAAECBAgQIECgKKC4F3FFEyBAgAABAgQIEEgJKO4pSTkECBAgQIAAAQIEigKKexFXNAECBAgQIECAAIGUgOKekpRDgAABAgQIECBAoCiguBdxRRMgQIAAAQIECBBICSjuKUk5BAgQIECAAAECBIoCN6azH/34p6Qj5REgQIAAAQIECBC47gTuc487RbfZiHuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAGAAuANAAAqYElEQVQCBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgI3LBbl060VAIECBAgQIAAAQIEUgJG3FOScggQIECAAAECBAgUBRT3Iq5oAgQIECBAgAABAikBxT0lKYcAAQIECBAgQIBAUUBxL+KKJkCAAAECBAgQIJASUNxTknIIECBAgAABAgQIFAUU9yKuaAIECBAgQIAAAQIpAcU9JSmHAAECBAgQIECAQFFAcS/iiiZAgAABAgQIECCQElDcU5JyCBAgQIAAAQIECBQFFPcirmgCBAgQIECAAAECKQHFPSUphwABAgQIECBAgEBRQHEv4oomQIAAAQIECBAgkBJQ3FOScggQIECAAAECBAgUBRT3Iq5oAgQIECBAgAABAikBxT0lKYcAAQIECBAgQIBAUUBxL+KKJkCAAAECBAgQIJASUNxTknIIECBAgAABAgQIFAUU9yKuaAIECBAgQIAAAQIpAcU9JSmHAAECBAgQIECAQFHgxnT2o572jHSkPAIECBAgQIAAAQLXncB973C76DYbcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQI/L927NgGABiGYRj6/9Ftj5A35gANnIwQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Auf+26RVCRAgQIAAAQIECBCoBHzcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkOBB+12XALusHX1AAAAAElFTkSuQmCC" alt="" name="en-media:image/png:a05263b83eea60ebccfd8344d94c18d6:none:none" width="174" />
注意:
使用VFL布局时一定要添加下面这行代码:
[blueView setTranslatesAutoresizingMaskIntoConstraints:NO];
这是官方对这个方法的注解,我的理解是:
这个参数默认时为yes,autoresizing会自动为你生成一组决定view位置的约束(也就是说默认情况下你添加layout约束是无效的),此时使用的不是Autolayout布局约束而是autoresizing
Autoresizing:
已经是比较过时的设置适配方法了,而且有很大的缺陷,只能设置父子控件之间的约束,不能设置兄弟控件之间的约束。所以在这里我们最好不要再开发中应用。
AutoLayout:
最流行的适配方式,苹果积极推荐,非常强大好用的适配方法。对提升开发中的效率有很大的帮助。
autolayout 和Autoresizing 是会相互冲突的
- 【原】iOS学习之苹果原生代码实现Autolayout和VFL语言
1.添加约束的规则 在创建约束之后,需要将其添加到作用的view上 在添加时要注意目标view需要遵循以下规则: 1)对于 两个同层级view之间 的约束关系,添加到它们的父view上 2)对于 两个 ...
- AutoLayout - VFL
其实很早就像整理出一份VFL的总结出来,觉得有很多东西可以写,但是真正去总结的时候发现,VFL也并没有很多东西,其实应该是在布局的过程中直接用VFL语句思考的过程比较难以形成,多数布局问题其实是在实际 ...
- Autolayout(VFL)
Autolayout(VFL) 1.NSLayoutConstraint + (NSArray *)constraintsWithVisualFormat:(NSString *)format opt ...
- IOS开发之自动布局--VFL语言
前言:VFL是苹果公司为了简化Autolayout的编码而推出的抽象语言.对于纯代码发烧友,值得我们去学习和了解哦. 1.什么是VFL语言 VFL全称是Visual Format Language,翻 ...
- IOS VFL屏幕自适应
-(void)fun1{ //注意使用VFL,不用设置视图的frame UIView *view = [[UIView alloc] init]; view.backgroundColor = [UI ...
- iOS,自动布局autoresizing和auto layout,VFL语言
1.使用autoresizing 2.使用autolayout 3.VFL语言(Visual Format Language:可视化格式语言) 使用autoresizing 点击xib文件,去掉使用a ...
- 使用Auto Layout中的VFL(Visual format language)--代码实现自动布局【转】
本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:API介绍 NSLayoutConstraint API 1 2 3 ...
- 转载自@机智的新手:使用Auto Layout中的VFL(Visual format language)--代码实现自动布局
本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:API介绍 NSLayoutConstraint API 1 2 3 ...
- Autolayout及VFL经验分享
http://www.cocoachina.com/industry/20131108/7322.html 这篇不是什么教程.Cocoa autolayout出来蛮久了.以前多次想去深入研究一下,每次 ...
- iOS开发-VFL(Visual format language)和Autolayout
AutoLayout不管是在StoryBorad还是在xib中都相对来说比较简单,VFL(Visual fromat language)可视化语言基本上用到的比较少,在xCode4时候自动布局的概 ...
随机推荐
- python 十进制 和 IP 地址互转
#! /bin/python def ip2decimalism(ip): dec_value = 0 v_list = ip.split('.') v_list.reverse() t = 1 fo ...
- python使用venv环境报Python.h : No such file or direc
这个是因为域名 install python36的时候没有按照python36-devel ,只需要 yum install python36-devel 然后重新安装所需模块即可.
- jzoj3519
我們考慮將一個節點x的所有兒子的數都改成y 記lcm[x]表示一個點的所有子節點的lcm值 那麼我們會發現y*deg[x] 要被lcm[x]整除 那麼x就會比x所有子節點最小的數小,記為z 那麼x就是 ...
- class字节码结构(零:补充:class结构,常量池,字节码指令)
JVM高级特性与实践(五):实例探究Class类文件 及 常量池 JVM高级特性与实践(六):Class类文件的结构(访问标志,索引.字段表.方法表.属性表集合) JVM高级特性与实践(七):九大类字 ...
- Jmeter分布式测试的各种坑之jmeter-server修改ip
第一坑:启动压力机的时候,直接./jmeter-server,会报如下错误 错误原因:127.0.0.1是本机, 一个回路地址, 没有指定地址 正确的启动方式:启动命令加一个参数, IP地址写压力机对 ...
- python-xlwt给excel添加样式
#coding:utf-8import osimport time import xlwt filename="test_xlwt.xls"if os.path.ex ...
- iOS pods更新失败
――― TEMPLATE END ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― [!] Oh no, an erro ...
- 【hdu4609】 3-idiots FFT
题外话:好久没写blog了啊-- 题目传送门 题目大意:给你m条长度为ai的线段,求在其中任选三条出来,能构成三角形的概率.即求在这n条线段中找出三条线段所能拼出的三角形数量除以$\binom{m}{ ...
- android权限permission大全(权限提醒)
1.Android.permission.WRITE_USER_DICTIONARY允许应用程序向用户词典中写入新词 2.android.permission.WRITE_SYNC_SETTINGS写 ...
- 详解Python中的join()函数的用法
函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的 ...