diff --git a/examples/device-dashboard/packed_fs.c b/examples/device-dashboard/packed_fs.c index 04aaca35..8e96b6fc 100644 --- a/examples/device-dashboard/packed_fs.c +++ b/examples/device-dashboard/packed_fs.c @@ -37,1587 +37,6 @@ static const unsigned char v1[] = { 10, 0 // . }; static const unsigned char v2[] = { - 118, 97, 114, 32, 101, 44, 110, 44, 95, 44, 116, 44, // var e,n,_,t, - 111, 44, 114, 44, 117, 44, 108, 61, 123, 125, 44, 105, // o,r,u,l={},i - 61, 91, 93, 44, 99, 61, 47, 97, 99, 105, 116, 124, // =[],c=/acit| - 101, 120, 40, 63, 58, 115, 124, 103, 124, 110, 124, 112, // ex(?:s|g|n|p - 124, 36, 41, 124, 114, 112, 104, 124, 103, 114, 105, 100, // |$)|rph|grid - 124, 111, 119, 115, 124, 109, 110, 99, 124, 110, 116, 119, // |ows|mnc|ntw - 124, 105, 110, 101, 91, 99, 104, 93, 124, 122, 111, 111, // |ine[ch]|zoo - 124, 94, 111, 114, 100, 124, 105, 116, 101, 114, 97, 47, // |^ord|itera/ - 105, 59, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, // i;function s - 40, 101, 44, 110, 41, 123, 102, 111, 114, 40, 118, 97, // (e,n){for(va - 114, 32, 95, 32, 105, 110, 32, 110, 41, 101, 91, 95, // r _ in n)e[_ - 93, 61, 110, 91, 95, 93, 59, 114, 101, 116, 117, 114, // ]=n[_];retur - 110, 32, 101, 125, 102, 117, 110, 99, 116, 105, 111, 110, // n e}function - 32, 102, 40, 101, 41, 123, 118, 97, 114, 32, 110, 61, // f(e){var n= - 101, 46, 112, 97, 114, 101, 110, 116, 78, 111, 100, 101, // e.parentNode - 59, 110, 38, 38, 110, 46, 114, 101, 109, 111, 118, 101, // ;n&&n.remove - 67, 104, 105, 108, 100, 40, 101, 41, 125, 102, 117, 110, // Child(e)}fun - 99, 116, 105, 111, 110, 32, 97, 40, 110, 44, 95, 44, // ction a(n,_, - 116, 41, 123, 118, 97, 114, 32, 111, 44, 114, 44, 117, // t){var o,r,u - 44, 108, 61, 123, 125, 59, 102, 111, 114, 40, 117, 32, // ,l={};for(u - 105, 110, 32, 95, 41, 34, 107, 101, 121, 34, 61, 61, // in _)"key"== - 117, 63, 111, 61, 95, 91, 117, 93, 58, 34, 114, 101, // u?o=_[u]:"re - 102, 34, 61, 61, 117, 63, 114, 61, 95, 91, 117, 93, // f"==u?r=_[u] - 58, 108, 91, 117, 93, 61, 95, 91, 117, 93, 59, 105, // :l[u]=_[u];i - 102, 40, 97, 114, 103, 117, 109, 101, 110, 116, 115, 46, // f(arguments. - 108, 101, 110, 103, 116, 104, 62, 50, 38, 38, 40, 108, // length>2&&(l - 46, 99, 104, 105, 108, 100, 114, 101, 110, 61, 97, 114, // .children=ar - 103, 117, 109, 101, 110, 116, 115, 46, 108, 101, 110, 103, // guments.leng - 116, 104, 62, 51, 63, 101, 46, 99, 97, 108, 108, 40, // th>3?e.call( - 97, 114, 103, 117, 109, 101, 110, 116, 115, 44, 50, 41, // arguments,2) - 58, 116, 41, 44, 34, 102, 117, 110, 99, 116, 105, 111, // :t),"functio - 110, 34, 61, 61, 116, 121, 112, 101, 111, 102, 32, 110, // n"==typeof n - 38, 38, 110, 117, 108, 108, 33, 61, 110, 46, 100, 101, // &&null!=n.de - 102, 97, 117, 108, 116, 80, 114, 111, 112, 115, 41, 102, // faultProps)f - 111, 114, 40, 117, 32, 105, 110, 32, 110, 46, 100, 101, // or(u in n.de - 102, 97, 117, 108, 116, 80, 114, 111, 112, 115, 41, 118, // faultProps)v - 111, 105, 100, 32, 48, 61, 61, 61, 108, 91, 117, 93, // oid 0===l[u] - 38, 38, 40, 108, 91, 117, 93, 61, 110, 46, 100, 101, // &&(l[u]=n.de - 102, 97, 117, 108, 116, 80, 114, 111, 112, 115, 91, 117, // faultProps[u - 93, 41, 59, 114, 101, 116, 117, 114, 110, 32, 112, 40, // ]);return p( - 110, 44, 108, 44, 111, 44, 114, 44, 110, 117, 108, 108, // n,l,o,r,null - 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, // )}function p - 40, 101, 44, 116, 44, 111, 44, 114, 44, 117, 41, 123, // (e,t,o,r,u){ - 118, 97, 114, 32, 108, 61, 123, 116, 121, 112, 101, 58, // var l={type: - 101, 44, 112, 114, 111, 112, 115, 58, 116, 44, 107, 101, // e,props:t,ke - 121, 58, 111, 44, 114, 101, 102, 58, 114, 44, 95, 95, // y:o,ref:r,__ - 107, 58, 110, 117, 108, 108, 44, 95, 95, 58, 110, 117, // k:null,__:nu - 108, 108, 44, 95, 95, 98, 58, 48, 44, 95, 95, 101, // ll,__b:0,__e - 58, 110, 117, 108, 108, 44, 95, 95, 100, 58, 118, 111, // :null,__d:vo - 105, 100, 32, 48, 44, 95, 95, 99, 58, 110, 117, 108, // id 0,__c:nul - 108, 44, 95, 95, 104, 58, 110, 117, 108, 108, 44, 99, // l,__h:null,c - 111, 110, 115, 116, 114, 117, 99, 116, 111, 114, 58, 118, // onstructor:v - 111, 105, 100, 32, 48, 44, 95, 95, 118, 58, 110, 117, // oid 0,__v:nu - 108, 108, 61, 61, 117, 63, 43, 43, 95, 58, 117, 125, // ll==u?++_:u} - 59, 114, 101, 116, 117, 114, 110, 32, 110, 117, 108, 108, // ;return null - 33, 61, 110, 46, 118, 110, 111, 100, 101, 38, 38, 110, // !=n.vnode&&n - 46, 118, 110, 111, 100, 101, 40, 108, 41, 44, 108, 125, // .vnode(l),l} - 102, 117, 110, 99, 116, 105, 111, 110, 32, 104, 40, 101, // function h(e - 41, 123, 114, 101, 116, 117, 114, 110, 32, 101, 46, 99, // ){return e.c - 104, 105, 108, 100, 114, 101, 110, 125, 102, 117, 110, 99, // hildren}func - 116, 105, 111, 110, 32, 100, 40, 101, 44, 110, 41, 123, // tion d(e,n){ - 116, 104, 105, 115, 46, 112, 114, 111, 112, 115, 61, 101, // this.props=e - 44, 116, 104, 105, 115, 46, 99, 111, 110, 116, 101, 120, // ,this.contex - 116, 61, 110, 125, 102, 117, 110, 99, 116, 105, 111, 110, // t=n}function - 32, 118, 40, 101, 44, 110, 41, 123, 105, 102, 40, 110, // v(e,n){if(n - 117, 108, 108, 61, 61, 110, 41, 114, 101, 116, 117, 114, // ull==n)retur - 110, 32, 101, 46, 95, 95, 63, 118, 40, 101, 46, 95, // n e.__?v(e._ - 95, 44, 101, 46, 95, 95, 46, 95, 95, 107, 46, 105, // _,e.__.__k.i - 110, 100, 101, 120, 79, 102, 40, 101, 41, 43, 49, 41, // ndexOf(e)+1) - 58, 110, 117, 108, 108, 59, 102, 111, 114, 40, 118, 97, // :null;for(va - 114, 32, 95, 59, 110, 60, 101, 46, 95, 95, 107, 46, // r _;n0?p(m. - 116, 121, 112, 101, 44, 109, 46, 112, 114, 111, 112, 115, // type,m.props - 44, 109, 46, 107, 101, 121, 44, 110, 117, 108, 108, 44, // ,m.key,null, - 109, 46, 95, 95, 118, 41, 58, 109, 41, 41, 123, 105, // m.__v):m)){i - 102, 40, 109, 46, 95, 95, 61, 95, 44, 109, 46, 95, // f(m.__=_,m._ - 95, 98, 61, 95, 46, 95, 95, 98, 43, 49, 44, 110, // _b=_.__b+1,n - 117, 108, 108, 61, 61, 61, 40, 121, 61, 72, 91, 97, // ull===(y=H[a - 93, 41, 124, 124, 121, 38, 38, 109, 46, 107, 101, 121, // ])||y&&m.key - 61, 61, 121, 46, 107, 101, 121, 38, 38, 109, 46, 116, // ==y.key&&m.t - 121, 112, 101, 61, 61, 61, 121, 46, 116, 121, 112, 101, // ype===y.type - 41, 72, 91, 97, 93, 61, 118, 111, 105, 100, 32, 48, // )H[a]=void 0 - 59, 101, 108, 115, 101, 32, 102, 111, 114, 40, 100, 61, // ;else for(d= - 48, 59, 100, 60, 69, 59, 100, 43, 43, 41, 123, 105, // 0;d=t.__.len - 103, 116, 104, 38, 38, 116, 46, 95, 95, 46, 112, 117, // gth&&t.__.pu - 115, 104, 40, 123, 125, 41, 44, 116, 46, 95, 95, 91, // sh({}),t.__[ - 101, 93, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, // e]}function - 71, 40, 101, 41, 123, 114, 101, 116, 117, 114, 110, 32, // G(e){return - 82, 61, 49, 44, 122, 40, 105, 101, 44, 101, 41, 125, // R=1,z(ie,e)} - 102, 117, 110, 99, 116, 105, 111, 110, 32, 122, 40, 101, // function z(e - 44, 110, 44, 95, 41, 123, 118, 97, 114, 32, 116, 61, // ,n,_){var t= - 106, 40, 76, 43, 43, 44, 50, 41, 59, 114, 101, 116, // j(L++,2);ret - 117, 114, 110, 32, 116, 46, 116, 61, 101, 44, 116, 46, // urn t.t=e,t. - 95, 95, 99, 124, 124, 40, 116, 46, 95, 95, 61, 91, // __c||(t.__=[ - 95, 63, 95, 40, 110, 41, 58, 105, 101, 40, 118, 111, // _?_(n):ie(vo - 105, 100, 32, 48, 44, 110, 41, 44, 102, 117, 110, 99, // id 0,n),func - 116, 105, 111, 110, 40, 101, 41, 123, 118, 97, 114, 32, // tion(e){var - 110, 61, 116, 46, 116, 40, 116, 46, 95, 95, 91, 48, // n=t.t(t.__[0 - 93, 44, 101, 41, 59, 116, 46, 95, 95, 91, 48, 93, // ],e);t.__[0] - 33, 61, 61, 110, 38, 38, 40, 116, 46, 95, 95, 61, // !==n&&(t.__= - 91, 110, 44, 116, 46, 95, 95, 91, 49, 93, 93, 44, // [n,t.__[1]], - 116, 46, 95, 95, 99, 46, 115, 101, 116, 83, 116, 97, // t.__c.setSta - 116, 101, 40, 123, 125, 41, 41, 125, 93, 44, 116, 46, // te({}))}],t. - 95, 95, 99, 61, 78, 41, 44, 116, 46, 95, 95, 125, // __c=N),t.__} - 102, 117, 110, 99, 116, 105, 111, 110, 32, 74, 40, 101, // function J(e - 44, 95, 41, 123, 118, 97, 114, 32, 116, 61, 106, 40, // ,_){var t=j( - 76, 43, 43, 44, 51, 41, 59, 33, 110, 46, 95, 95, // L++,3);!n.__ - 115, 38, 38, 108, 101, 40, 116, 46, 95, 95, 72, 44, // s&&le(t.__H, - 95, 41, 38, 38, 40, 116, 46, 95, 95, 61, 101, 44, // _)&&(t.__=e, - 116, 46, 95, 95, 72, 61, 95, 44, 78, 46, 95, 95, // t.__H=_,N.__ - 72, 46, 95, 95, 104, 46, 112, 117, 115, 104, 40, 116, // H.__h.push(t - 41, 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, // ))}function - 75, 40, 101, 44, 95, 41, 123, 118, 97, 114, 32, 116, // K(e,_){var t - 61, 106, 40, 76, 43, 43, 44, 52, 41, 59, 33, 110, // =j(L++,4);!n - 46, 95, 95, 115, 38, 38, 108, 101, 40, 116, 46, 95, // .__s&&le(t._ - 95, 72, 44, 95, 41, 38, 38, 40, 116, 46, 95, 95, // _H,_)&&(t.__ - 61, 101, 44, 116, 46, 95, 95, 72, 61, 95, 44, 78, // =e,t.__H=_,N - 46, 95, 95, 104, 46, 112, 117, 115, 104, 40, 116, 41, // .__h.push(t) - 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 81, // )}function Q - 40, 101, 41, 123, 114, 101, 116, 117, 114, 110, 32, 82, // (e){return R - 61, 53, 44, 89, 40, 102, 117, 110, 99, 116, 105, 111, // =5,Y(functio - 110, 40, 41, 123, 114, 101, 116, 117, 114, 110, 123, 99, // n(){return{c - 117, 114, 114, 101, 110, 116, 58, 101, 125, 125, 44, 91, // urrent:e}},[ - 93, 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, // ])}function - 88, 40, 101, 44, 110, 44, 95, 41, 123, 82, 61, 54, // X(e,n,_){R=6 - 44, 75, 40, 102, 117, 110, 99, 116, 105, 111, 110, 40, // ,K(function( - 41, 123, 34, 102, 117, 110, 99, 116, 105, 111, 110, 34, // ){"function" - 61, 61, 116, 121, 112, 101, 111, 102, 32, 101, 63, 101, // ==typeof e?e - 40, 110, 40, 41, 41, 58, 101, 38, 38, 40, 101, 46, // (n()):e&&(e. - 99, 117, 114, 114, 101, 110, 116, 61, 110, 40, 41, 41, // current=n()) - 125, 44, 110, 117, 108, 108, 61, 61, 95, 63, 95, 58, // },null==_?_: - 95, 46, 99, 111, 110, 99, 97, 116, 40, 101, 41, 41, // _.concat(e)) - 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 89, 40, // }function Y( - 101, 44, 110, 41, 123, 118, 97, 114, 32, 95, 61, 106, // e,n){var _=j - 40, 76, 43, 43, 44, 55, 41, 59, 114, 101, 116, 117, // (L++,7);retu - 114, 110, 32, 108, 101, 40, 95, 46, 95, 95, 72, 44, // rn le(_.__H, - 110, 41, 38, 38, 40, 95, 46, 95, 95, 61, 101, 40, // n)&&(_.__=e( - 41, 44, 95, 46, 95, 95, 72, 61, 110, 44, 95, 46, // ),_.__H=n,_. - 95, 95, 104, 61, 101, 41, 44, 95, 46, 95, 95, 125, // __h=e),_.__} - 102, 117, 110, 99, 116, 105, 111, 110, 32, 90, 40, 101, // function Z(e - 44, 110, 41, 123, 114, 101, 116, 117, 114, 110, 32, 82, // ,n){return R - 61, 56, 44, 89, 40, 102, 117, 110, 99, 116, 105, 111, // =8,Y(functio - 110, 40, 41, 123, 114, 101, 116, 117, 114, 110, 32, 101, // n(){return e - 125, 44, 110, 41, 125, 102, 117, 110, 99, 116, 105, 111, // },n)}functio - 110, 32, 101, 101, 40, 101, 41, 123, 118, 97, 114, 32, // n ee(e){var - 110, 61, 78, 46, 99, 111, 110, 116, 101, 120, 116, 91, // n=N.context[ - 101, 46, 95, 95, 99, 93, 44, 95, 61, 106, 40, 76, // e.__c],_=j(L - 43, 43, 44, 57, 41, 59, 114, 101, 116, 117, 114, 110, // ++,9);return - 32, 95, 46, 99, 61, 101, 44, 110, 63, 40, 110, 117, // _.c=e,n?(nu - 108, 108, 61, 61, 95, 46, 95, 95, 38, 38, 40, 95, // ll==_.__&&(_ - 46, 95, 95, 61, 33, 48, 44, 110, 46, 115, 117, 98, // .__=!0,n.sub - 40, 78, 41, 41, 44, 110, 46, 112, 114, 111, 112, 115, // (N)),n.props - 46, 118, 97, 108, 117, 101, 41, 58, 101, 46, 95, 95, // .value):e.__ - 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 110, 101, // }function ne - 40, 101, 44, 95, 41, 123, 110, 46, 117, 115, 101, 68, // (e,_){n.useD - 101, 98, 117, 103, 86, 97, 108, 117, 101, 38, 38, 110, // ebugValue&&n - 46, 117, 115, 101, 68, 101, 98, 117, 103, 86, 97, 108, // .useDebugVal - 117, 101, 40, 95, 63, 95, 40, 101, 41, 58, 101, 41, // ue(_?_(e):e) - 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 95, 101, // }function _e - 40, 101, 41, 123, 118, 97, 114, 32, 110, 61, 106, 40, // (e){var n=j( - 76, 43, 43, 44, 49, 48, 41, 44, 95, 61, 71, 40, // L++,10),_=G( - 41, 59, 114, 101, 116, 117, 114, 110, 32, 110, 46, 95, // );return n._ - 95, 61, 101, 44, 78, 46, 99, 111, 109, 112, 111, 110, // _=e,N.compon - 101, 110, 116, 68, 105, 100, 67, 97, 116, 99, 104, 124, // entDidCatch| - 124, 40, 78, 46, 99, 111, 109, 112, 111, 110, 101, 110, // |(N.componen - 116, 68, 105, 100, 67, 97, 116, 99, 104, 61, 102, 117, // tDidCatch=fu - 110, 99, 116, 105, 111, 110, 40, 101, 41, 123, 110, 46, // nction(e){n. - 95, 95, 38, 38, 110, 46, 95, 95, 40, 101, 41, 44, // __&&n.__(e), - 95, 91, 49, 93, 40, 101, 41, 125, 41, 44, 91, 95, // _[1](e)}),[_ - 91, 48, 93, 44, 102, 117, 110, 99, 116, 105, 111, 110, // [0],function - 40, 41, 123, 95, 91, 49, 93, 40, 118, 111, 105, 100, // (){_[1](void - 32, 48, 41, 125, 93, 125, 102, 117, 110, 99, 116, 105, // 0)}]}functi - 111, 110, 32, 116, 101, 40, 41, 123, 73, 46, 102, 111, // on te(){I.fo - 114, 69, 97, 99, 104, 40, 102, 117, 110, 99, 116, 105, // rEach(functi - 111, 110, 40, 101, 41, 123, 105, 102, 40, 101, 46, 95, // on(e){if(e._ - 95, 80, 41, 116, 114, 121, 123, 101, 46, 95, 95, 72, // _P)try{e.__H - 46, 95, 95, 104, 46, 102, 111, 114, 69, 97, 99, 104, // .__h.forEach - 40, 114, 101, 41, 44, 101, 46, 95, 95, 72, 46, 95, // (re),e.__H._ - 95, 104, 46, 102, 111, 114, 69, 97, 99, 104, 40, 117, // _h.forEach(u - 101, 41, 44, 101, 46, 95, 95, 72, 46, 95, 95, 104, // e),e.__H.__h - 61, 91, 93, 125, 99, 97, 116, 99, 104, 40, 95, 41, // =[]}catch(_) - 123, 101, 46, 95, 95, 72, 46, 95, 95, 104, 61, 91, // {e.__H.__h=[ - 93, 44, 110, 46, 95, 95, 101, 40, 95, 44, 101, 46, // ],n.__e(_,e. - 95, 95, 118, 41, 125, 125, 41, 44, 73, 61, 91, 93, // __v)}}),I=[] - 125, 110, 46, 95, 95, 98, 61, 102, 117, 110, 99, 116, // }n.__b=funct - 105, 111, 110, 40, 101, 41, 123, 78, 61, 110, 117, 108, // ion(e){N=nul - 108, 44, 79, 38, 38, 79, 40, 101, 41, 125, 44, 110, // l,O&&O(e)},n - 46, 95, 95, 114, 61, 102, 117, 110, 99, 116, 105, 111, // .__r=functio - 110, 40, 101, 41, 123, 86, 38, 38, 86, 40, 101, 41, // n(e){V&&V(e) - 44, 76, 61, 48, 59, 118, 97, 114, 32, 110, 61, 40, // ,L=0;var n=( - 78, 61, 101, 46, 95, 95, 99, 41, 46, 95, 95, 72, // N=e.__c).__H - 59, 110, 38, 38, 40, 110, 46, 95, 95, 104, 46, 102, // ;n&&(n.__h.f - 111, 114, 69, 97, 99, 104, 40, 114, 101, 41, 44, 110, // orEach(re),n - 46, 95, 95, 104, 46, 102, 111, 114, 69, 97, 99, 104, // .__h.forEach - 40, 117, 101, 41, 44, 110, 46, 95, 95, 104, 61, 91, // (ue),n.__h=[ - 93, 41, 125, 44, 110, 46, 100, 105, 102, 102, 101, 100, // ])},n.diffed - 61, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, 41, // =function(e) - 123, 113, 38, 38, 113, 40, 101, 41, 59, 118, 97, 114, // {q&&q(e);var - 32, 95, 61, 101, 46, 95, 95, 99, 59, 95, 38, 38, // _=e.__c;_&& - 95, 46, 95, 95, 72, 38, 38, 95, 46, 95, 95, 72, // _.__H&&_.__H - 46, 95, 95, 104, 46, 108, 101, 110, 103, 116, 104, 38, // .__h.length& - 38, 40, 49, 33, 61, 61, 73, 46, 112, 117, 115, 104, // &(1!==I.push - 40, 95, 41, 38, 38, 87, 61, 61, 61, 110, 46, 114, // (_)&&W===n.r - 101, 113, 117, 101, 115, 116, 65, 110, 105, 109, 97, 116, // equestAnimat - 105, 111, 110, 70, 114, 97, 109, 101, 124, 124, 40, 40, // ionFrame||(( - 87, 61, 110, 46, 114, 101, 113, 117, 101, 115, 116, 65, // W=n.requestA - 110, 105, 109, 97, 116, 105, 111, 110, 70, 114, 97, 109, // nimationFram - 101, 41, 124, 124, 102, 117, 110, 99, 116, 105, 111, 110, // e)||function - 40, 101, 41, 123, 118, 97, 114, 32, 110, 44, 95, 61, // (e){var n,_= - 102, 117, 110, 99, 116, 105, 111, 110, 40, 41, 123, 99, // function(){c - 108, 101, 97, 114, 84, 105, 109, 101, 111, 117, 116, 40, // learTimeout( - 116, 41, 44, 111, 101, 38, 38, 99, 97, 110, 99, 101, // t),oe&&cance - 108, 65, 110, 105, 109, 97, 116, 105, 111, 110, 70, 114, // lAnimationFr - 97, 109, 101, 40, 110, 41, 44, 115, 101, 116, 84, 105, // ame(n),setTi - 109, 101, 111, 117, 116, 40, 101, 41, 125, 44, 116, 61, // meout(e)},t= - 115, 101, 116, 84, 105, 109, 101, 111, 117, 116, 40, 95, // setTimeout(_ - 44, 49, 48, 48, 41, 59, 111, 101, 38, 38, 40, 110, // ,100);oe&&(n - 61, 114, 101, 113, 117, 101, 115, 116, 65, 110, 105, 109, // =requestAnim - 97, 116, 105, 111, 110, 70, 114, 97, 109, 101, 40, 95, // ationFrame(_ - 41, 41, 125, 41, 40, 116, 101, 41, 41, 44, 78, 61, // ))})(te)),N= - 118, 111, 105, 100, 32, 48, 125, 44, 110, 46, 95, 95, // void 0},n.__ - 99, 61, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, // c=function(e - 44, 95, 41, 123, 95, 46, 115, 111, 109, 101, 40, 102, // ,_){_.some(f - 117, 110, 99, 116, 105, 111, 110, 40, 101, 41, 123, 116, // unction(e){t - 114, 121, 123, 101, 46, 95, 95, 104, 46, 102, 111, 114, // ry{e.__h.for - 69, 97, 99, 104, 40, 114, 101, 41, 44, 101, 46, 95, // Each(re),e._ - 95, 104, 61, 101, 46, 95, 95, 104, 46, 102, 105, 108, // _h=e.__h.fil - 116, 101, 114, 40, 102, 117, 110, 99, 116, 105, 111, 110, // ter(function - 40, 101, 41, 123, 114, 101, 116, 117, 114, 110, 33, 101, // (e){return!e - 46, 95, 95, 124, 124, 117, 101, 40, 101, 41, 125, 41, // .__||ue(e)}) - 125, 99, 97, 116, 99, 104, 40, 116, 41, 123, 95, 46, // }catch(t){_. - 115, 111, 109, 101, 40, 102, 117, 110, 99, 116, 105, 111, // some(functio - 110, 40, 101, 41, 123, 101, 46, 95, 95, 104, 38, 38, // n(e){e.__h&& - 40, 101, 46, 95, 95, 104, 61, 91, 93, 41, 125, 41, // (e.__h=[])}) - 44, 95, 61, 91, 93, 44, 110, 46, 95, 95, 101, 40, // ,_=[],n.__e( - 116, 44, 101, 46, 95, 95, 118, 41, 125, 125, 41, 44, // t,e.__v)}}), - 66, 38, 38, 66, 40, 101, 44, 95, 41, 125, 44, 110, // B&&B(e,_)},n - 46, 117, 110, 109, 111, 117, 110, 116, 61, 102, 117, 110, // .unmount=fun - 99, 116, 105, 111, 110, 40, 101, 41, 123, 36, 38, 38, // ction(e){$&& - 36, 40, 101, 41, 59, 118, 97, 114, 32, 95, 61, 101, // $(e);var _=e - 46, 95, 95, 99, 59, 105, 102, 40, 95, 38, 38, 95, // .__c;if(_&&_ - 46, 95, 95, 72, 41, 116, 114, 121, 123, 95, 46, 95, // .__H)try{_._ - 95, 72, 46, 95, 95, 46, 102, 111, 114, 69, 97, 99, // _H.__.forEac - 104, 40, 114, 101, 41, 125, 99, 97, 116, 99, 104, 40, // h(re)}catch( - 101, 41, 123, 110, 46, 95, 95, 101, 40, 101, 44, 95, // e){n.__e(e,_ - 46, 95, 95, 118, 41, 125, 125, 59, 118, 97, 114, 32, // .__v)}};var - 111, 101, 61, 34, 102, 117, 110, 99, 116, 105, 111, 110, // oe="function - 34, 61, 61, 116, 121, 112, 101, 111, 102, 32, 114, 101, // "==typeof re - 113, 117, 101, 115, 116, 65, 110, 105, 109, 97, 116, 105, // questAnimati - 111, 110, 70, 114, 97, 109, 101, 59, 102, 117, 110, 99, // onFrame;func - 116, 105, 111, 110, 32, 114, 101, 40, 101, 41, 123, 118, // tion re(e){v - 97, 114, 32, 110, 61, 78, 59, 34, 102, 117, 110, 99, // ar n=N;"func - 116, 105, 111, 110, 34, 61, 61, 116, 121, 112, 101, 111, // tion"==typeo - 102, 32, 101, 46, 95, 95, 99, 38, 38, 101, 46, 95, // f e.__c&&e._ - 95, 99, 40, 41, 44, 78, 61, 110, 125, 102, 117, 110, // _c(),N=n}fun - 99, 116, 105, 111, 110, 32, 117, 101, 40, 101, 41, 123, // ction ue(e){ - 118, 97, 114, 32, 110, 61, 78, 59, 101, 46, 95, 95, // var n=N;e.__ - 99, 61, 101, 46, 95, 95, 40, 41, 44, 78, 61, 110, // c=e.__(),N=n - 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 108, 101, // }function le - 40, 101, 44, 110, 41, 123, 114, 101, 116, 117, 114, 110, // (e,n){return - 33, 101, 124, 124, 101, 46, 108, 101, 110, 103, 116, 104, // !e||e.length - 33, 61, 61, 110, 46, 108, 101, 110, 103, 116, 104, 124, // !==n.length| - 124, 110, 46, 115, 111, 109, 101, 40, 102, 117, 110, 99, // |n.some(func - 116, 105, 111, 110, 40, 110, 44, 95, 41, 123, 114, 101, // tion(n,_){re - 116, 117, 114, 110, 32, 110, 33, 61, 61, 101, 91, 95, // turn n!==e[_ - 93, 125, 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, // ]})}function - 32, 105, 101, 40, 101, 44, 110, 41, 123, 114, 101, 116, // ie(e,n){ret - 117, 114, 110, 34, 102, 117, 110, 99, 116, 105, 111, 110, // urn"function - 34, 61, 61, 116, 121, 112, 101, 111, 102, 32, 110, 63, // "==typeof n? - 110, 40, 101, 41, 58, 110, 125, 118, 97, 114, 32, 99, // n(e):n}var c - 101, 61, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, // e=function(e - 44, 110, 44, 95, 44, 116, 41, 123, 118, 97, 114, 32, // ,n,_,t){var - 111, 59, 110, 91, 48, 93, 61, 48, 59, 102, 111, 114, // o;n[0]=0;for - 40, 118, 97, 114, 32, 114, 61, 49, 59, 114, 60, 110, // (var r=1;r=5&& - 40, 40, 111, 124, 124, 33, 101, 38, 38, 53, 61, 61, // ((o||!e&&5== - 61, 116, 41, 38, 38, 40, 117, 46, 112, 117, 115, 104, // =t)&&(u.push - 40, 116, 44, 48, 44, 111, 44, 95, 41, 44, 116, 61, // (t,0,o,_),t= - 54, 41, 44, 101, 38, 38, 40, 117, 46, 112, 117, 115, // 6),e&&(u.pus - 104, 40, 116, 44, 101, 44, 48, 44, 95, 41, 44, 116, // h(t,e,0,_),t - 61, 54, 41, 41, 44, 111, 61, 34, 34, 125, 44, 105, // =6)),o=""},i - 61, 48, 59, 105, 60, 101, 46, 108, 101, 110, 103, 116, // =0;i"===n?(t=1, - 111, 61, 34, 34, 41, 58, 111, 61, 110, 43, 111, 91, // o=""):o=n+o[ - 48, 93, 58, 114, 63, 110, 61, 61, 61, 114, 63, 114, // 0]:r?n===r?r - 61, 34, 34, 58, 111, 43, 61, 110, 58, 39, 34, 39, // ="":o+=n:'"' - 61, 61, 61, 110, 124, 124, 34, 39, 34, 61, 61, 61, // ===n||"'"=== - 110, 63, 114, 61, 110, 58, 34, 62, 34, 61, 61, 61, // n?r=n:">"=== - 110, 63, 40, 108, 40, 41, 44, 116, 61, 49, 41, 58, // n?(l(),t=1): - 116, 38, 38, 40, 34, 61, 34, 61, 61, 61, 110, 63, // t&&("="===n? - 40, 116, 61, 53, 44, 95, 61, 111, 44, 111, 61, 34, // (t=5,_=o,o=" - 34, 41, 58, 34, 47, 34, 61, 61, 61, 110, 38, 38, // "):"/"===n&& - 40, 116, 60, 53, 124, 124, 34, 62, 34, 61, 61, 61, // (t<5||">"=== - 101, 91, 105, 93, 91, 99, 43, 49, 93, 41, 63, 40, // e[i][c+1])?( - 108, 40, 41, 44, 51, 61, 61, 61, 116, 38, 38, 40, // l(),3===t&&( - 117, 61, 117, 91, 48, 93, 41, 44, 116, 61, 117, 44, // u=u[0]),t=u, - 40, 117, 61, 117, 91, 48, 93, 41, 46, 112, 117, 115, // (u=u[0]).pus - 104, 40, 50, 44, 48, 44, 116, 41, 44, 116, 61, 48, // h(2,0,t),t=0 - 41, 58, 34, 32, 34, 61, 61, 61, 110, 124, 124, 34, // ):" "===n||" - 92, 116, 34, 61, 61, 61, 110, 124, 124, 34, 92, 110, // .t"===n||".n - 34, 61, 61, 61, 110, 124, 124, 34, 92, 114, 34, 61, // "===n||".r"= - 61, 61, 110, 63, 40, 108, 40, 41, 44, 116, 61, 50, // ==n?(l(),t=2 - 41, 58, 111, 43, 61, 110, 41, 44, 51, 61, 61, 61, // ):o+=n),3=== - 116, 38, 38, 34, 33, 45, 45, 34, 61, 61, 61, 111, // t&&"!--"===o - 38, 38, 40, 116, 61, 52, 44, 117, 61, 117, 91, 48, // &&(t=4,u=u[0 - 93, 41, 125, 114, 101, 116, 117, 114, 110, 32, 108, 40, // ])}return l( - 41, 44, 117, 125, 40, 101, 41, 41, 44, 110, 41, 44, // ),u}(e)),n), - 97, 114, 103, 117, 109, 101, 110, 116, 115, 44, 91, 93, // arguments,[] - 41, 41, 46, 108, 101, 110, 103, 116, 104, 62, 49, 63, // )).length>1? - 110, 58, 110, 91, 48, 93, 125, 46, 98, 105, 110, 100, // n:n[0]}.bind - 40, 97, 41, 59, 101, 120, 112, 111, 114, 116, 123, 97, // (a);export{a - 32, 97, 115, 32, 104, 44, 102, 101, 32, 97, 115, 32, // as h,fe as - 104, 116, 109, 108, 44, 77, 32, 97, 115, 32, 114, 101, // html,M as re - 110, 100, 101, 114, 44, 100, 32, 97, 115, 32, 67, 111, // nder,d as Co - 109, 112, 111, 110, 101, 110, 116, 44, 70, 32, 97, 115, // mponent,F as - 32, 99, 114, 101, 97, 116, 101, 67, 111, 110, 116, 101, // createConte - 120, 116, 44, 71, 32, 97, 115, 32, 117, 115, 101, 83, // xt,G as useS - 116, 97, 116, 101, 44, 122, 32, 97, 115, 32, 117, 115, // tate,z as us - 101, 82, 101, 100, 117, 99, 101, 114, 44, 74, 32, 97, // eReducer,J a - 115, 32, 117, 115, 101, 69, 102, 102, 101, 99, 116, 44, // s useEffect, - 75, 32, 97, 115, 32, 117, 115, 101, 76, 97, 121, 111, // K as useLayo - 117, 116, 69, 102, 102, 101, 99, 116, 44, 81, 32, 97, // utEffect,Q a - 115, 32, 117, 115, 101, 82, 101, 102, 44, 88, 32, 97, // s useRef,X a - 115, 32, 117, 115, 101, 73, 109, 112, 101, 114, 97, 116, // s useImperat - 105, 118, 101, 72, 97, 110, 100, 108, 101, 44, 89, 32, // iveHandle,Y - 97, 115, 32, 117, 115, 101, 77, 101, 109, 111, 44, 90, // as useMemo,Z - 32, 97, 115, 32, 117, 115, 101, 67, 97, 108, 108, 98, // as useCallb - 97, 99, 107, 44, 101, 101, 32, 97, 115, 32, 117, 115, // ack,ee as us - 101, 67, 111, 110, 116, 101, 120, 116, 44, 110, 101, 32, // eContext,ne - 97, 115, 32, 117, 115, 101, 68, 101, 98, 117, 103, 86, // as useDebugV - 97, 108, 117, 101, 44, 95, 101, 32, 97, 115, 32, 117, // alue,_e as u - 115, 101, 69, 114, 114, 111, 114, 66, 111, 117, 110, 100, // seErrorBound - 97, 114, 121, 125, 59, 10, 0 // ary};. -}; -static const unsigned char v3[] = { - 42, 32, 123, 32, 98, 111, 120, 45, 115, 105, 122, 105, // * { box-sizi - 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, // ng: border-b - 111, 120, 59, 32, 125, 10, 104, 116, 109, 108, 44, 32, // ox; }.html, - 98, 111, 100, 121, 32, 123, 32, 109, 97, 114, 103, 105, // body { margi - 110, 58, 32, 48, 59, 32, 112, 97, 100, 100, 105, 110, // n: 0; paddin - 103, 58, 32, 48, 59, 32, 104, 101, 105, 103, 104, 116, // g: 0; height - 58, 32, 49, 48, 48, 37, 59, 32, 102, 111, 110, 116, // : 100%; font - 58, 32, 49, 54, 112, 120, 32, 115, 97, 110, 115, 45, // : 16px sans- - 115, 101, 114, 105, 102, 59, 32, 125, 10, 115, 101, 108, // serif; }.sel - 101, 99, 116, 44, 32, 105, 110, 112, 117, 116, 44, 32, // ect, input, - 108, 97, 98, 101, 108, 58, 58, 98, 101, 102, 111, 114, // label::befor - 101, 44, 32, 116, 101, 120, 116, 97, 114, 101, 97, 32, // e, textarea - 123, 32, 111, 117, 116, 108, 105, 110, 101, 58, 32, 110, // { outline: n - 111, 110, 101, 59, 32, 98, 111, 120, 45, 115, 104, 97, // one; box-sha - 100, 111, 119, 58, 110, 111, 110, 101, 32, 33, 105, 109, // dow:none !im - 112, 111, 114, 116, 97, 110, 116, 59, 32, 98, 111, 114, // portant; bor - 100, 101, 114, 58, 32, 49, 112, 120, 32, 115, 111, 108, // der: 1px sol - 105, 100, 32, 35, 99, 99, 99, 32, 33, 105, 109, 112, // id #ccc !imp - 111, 114, 116, 97, 110, 116, 59, 32, 125, 10, 99, 111, // ortant; }.co - 100, 101, 44, 32, 112, 114, 101, 32, 123, 32, 99, 111, // de, pre { co - 108, 111, 114, 58, 32, 35, 51, 55, 51, 59, 32, 102, // lor: #373; f - 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 58, 32, // ont-family: - 109, 111, 110, 111, 115, 112, 97, 99, 101, 59, 32, 102, // monospace; f - 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, // ont-weight: - 98, 111, 108, 100, 101, 114, 59, 32, 102, 111, 110, 116, // bolder; font - 45, 115, 105, 122, 101, 58, 32, 115, 109, 97, 108, 108, // -size: small - 101, 114, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, // er; backgrou - 110, 100, 58, 32, 35, 100, 100, 100, 59, 32, 112, 97, // nd: #ddd; pa - 100, 100, 105, 110, 103, 58, 32, 48, 46, 49, 101, 109, // dding: 0.1em - 32, 48, 46, 51, 101, 109, 59, 32, 98, 111, 114, 100, // 0.3em; bord - 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 48, // er-radius: 0 - 46, 50, 101, 109, 59, 32, 125, 10, 116, 101, 120, 116, // .2em; }.text - 97, 114, 101, 97, 44, 32, 105, 110, 112, 117, 116, 44, // area, input, - 32, 46, 97, 100, 100, 111, 110, 32, 123, 32, 102, 111, // .addon { fo - 110, 116, 45, 115, 105, 122, 101, 58, 32, 49, 53, 112, // nt-size: 15p - 120, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, // x; border: 1 - 112, 120, 32, 115, 111, 108, 105, 100, 32, 35, 99, 99, // px solid #cc - 99, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, // c; padding: - 48, 46, 53, 101, 109, 59, 32, 125, 10, 97, 44, 32, // 0.5em; }.a, - 97, 58, 118, 105, 115, 105, 116, 101, 100, 44, 32, 97, // a:visited, a - 58, 97, 99, 116, 105, 118, 101, 32, 123, 32, 99, 111, // :active { co - 108, 111, 114, 58, 32, 35, 53, 53, 102, 59, 32, 125, // lor: #55f; } - 10, 46, 97, 100, 100, 111, 110, 32, 123, 32, 98, 97, // ..addon { ba - 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 35, 101, // ckground: #e - 101, 101, 59, 32, 32, 109, 105, 110, 45, 119, 105, 100, // ee; min-wid - 116, 104, 58, 32, 57, 101, 109, 59, 125, 10, 46, 98, // th: 9em;}..b - 116, 110, 32, 123, 10, 32, 32, 98, 97, 99, 107, 103, // tn {. backg - 114, 111, 117, 110, 100, 58, 32, 35, 99, 99, 99, 59, // round: #ccc; - 32, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, // border-radi - 117, 115, 58, 32, 48, 46, 51, 101, 109, 59, 32, 98, // us: 0.3em; b - 111, 114, 100, 101, 114, 58, 32, 48, 59, 32, 99, 111, // order: 0; co - 108, 111, 114, 58, 32, 35, 102, 102, 102, 59, 32, 99, // lor: #fff; c - 117, 114, 115, 111, 114, 58, 32, 112, 111, 105, 110, 116, // ursor: point - 101, 114, 59, 10, 32, 32, 100, 105, 115, 112, 108, 97, // er;. displa - 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, // y: inline-bl - 111, 99, 107, 59, 32, 112, 97, 100, 100, 105, 110, 103, // ock; padding - 58, 32, 48, 46, 54, 101, 109, 32, 50, 101, 109, 59, // : 0.6em 2em; - 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, // font-weight - 58, 32, 98, 111, 108, 100, 101, 114, 59, 10, 125, 10, // : bolder;.}. - 46, 98, 116, 110, 91, 100, 105, 115, 97, 98, 108, 101, // .btn[disable - 100, 93, 32, 123, 32, 111, 112, 97, 99, 105, 116, 121, // d] { opacity - 58, 32, 48, 46, 53, 59, 32, 99, 117, 114, 115, 111, // : 0.5; curso - 114, 58, 32, 97, 117, 116, 111, 59, 125, 10, 46, 115, // r: auto;}..s - 109, 111, 111, 116, 104, 32, 123, 32, 116, 114, 97, 110, // mooth { tran - 115, 105, 116, 105, 111, 110, 58, 32, 97, 108, 108, 32, // sition: all - 46, 50, 115, 59, 32, 125, 10, 46, 99, 111, 110, 116, // .2s; }..cont - 97, 105, 110, 101, 114, 32, 123, 32, 109, 97, 114, 103, // ainer { marg - 105, 110, 58, 32, 48, 32, 50, 48, 112, 120, 59, 32, // in: 0 20px; - 119, 105, 100, 116, 104, 58, 32, 97, 117, 116, 111, 59, // width: auto; - 32, 125, 10, 46, 100, 45, 102, 108, 101, 120, 32, 123, // }..d-flex { - 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 102, 108, // display: fl - 101, 120, 59, 32, 125, 10, 46, 100, 45, 110, 111, 110, // ex; }..d-non - 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, // e { display: - 32, 110, 111, 110, 101, 59, 32, 125, 10, 46, 98, 111, // none; }..bo - 114, 100, 101, 114, 32, 123, 32, 98, 111, 114, 100, 101, // rder { borde - 114, 58, 32, 49, 112, 120, 32, 115, 111, 108, 105, 100, // r: 1px solid - 32, 35, 100, 100, 100, 59, 32, 125, 10, 46, 114, 111, // #ddd; }..ro - 117, 110, 100, 101, 100, 32, 123, 32, 98, 111, 114, 100, // unded { bord - 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 48, // er-radius: 0 - 46, 53, 101, 109, 59, 32, 125, 10, 46, 110, 111, 119, // .5em; }..now - 114, 97, 112, 32, 123, 32, 119, 104, 105, 116, 101, 45, // rap { white- - 115, 112, 97, 99, 101, 58, 32, 110, 111, 119, 114, 97, // space: nowra - 112, 59, 32, 125, 10, 46, 109, 115, 103, 32, 123, 32, // p; }..msg { - 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, // background: - 35, 100, 101, 102, 59, 32, 98, 111, 114, 100, 101, 114, // #def; border - 45, 108, 101, 102, 116, 58, 32, 53, 112, 120, 32, 115, // -left: 5px s - 111, 108, 105, 100, 32, 35, 53, 57, 100, 59, 32, 112, // olid #59d; p - 97, 100, 100, 105, 110, 103, 58, 32, 48, 46, 53, 101, // adding: 0.5e - 109, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, // m; font-size - 58, 32, 57, 48, 37, 59, 32, 109, 97, 114, 103, 105, // : 90%; margi - 110, 58, 32, 49, 101, 109, 32, 48, 59, 32, 125, 10, // n: 1em 0; }. - 46, 115, 101, 99, 116, 105, 111, 110, 32, 123, 32, 109, // .section { m - 97, 114, 103, 105, 110, 58, 32, 48, 32, 49, 101, 109, // argin: 0 1em - 59, 32, 125, 10, 46, 116, 111, 112, 105, 99, 44, 32, // ; }..topic, - 46, 100, 97, 116, 97, 44, 32, 46, 113, 111, 115, 32, // .data, .qos - 123, 32, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, // { padding: - 48, 46, 50, 101, 109, 32, 48, 46, 53, 101, 109, 59, // 0.2em 0.5em; - 32, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, // border-radi - 117, 115, 58, 32, 48, 46, 52, 101, 109, 59, 32, 109, // us: 0.4em; m - 97, 114, 103, 105, 110, 45, 114, 105, 103, 104, 116, 58, // argin-right: - 32, 48, 46, 53, 101, 109, 59, 32, 32, 125, 10, 46, // 0.5em; }.. - 113, 111, 115, 32, 123, 32, 98, 97, 99, 107, 103, 114, // qos { backgr - 111, 117, 110, 100, 58, 32, 35, 101, 102, 97, 59, 32, // ound: #efa; - 125, 10, 46, 116, 111, 112, 105, 99, 32, 123, 32, 98, // }..topic { b - 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 35, // ackground: # - 102, 101, 97, 59, 32, 125, 10, 46, 100, 97, 116, 97, // fea; }..data - 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, // { backgroun - 100, 58, 32, 35, 97, 101, 102, 59, 32, 125, 10, 10, // d: #aef; }.. - 47, 42, 32, 71, 114, 105, 100, 32, 42, 47, 10, 46, // /* Grid */.. - 114, 111, 119, 32, 123, 32, 100, 105, 115, 112, 108, 97, // row { displa - 121, 58, 32, 102, 108, 101, 120, 59, 32, 102, 108, 101, // y: flex; fle - 120, 45, 119, 114, 97, 112, 58, 32, 119, 114, 97, 112, // x-wrap: wrap - 59, 32, 125, 10, 46, 99, 111, 108, 32, 123, 32, 109, // ; }..col { m - 97, 114, 103, 105, 110, 58, 32, 48, 59, 32, 112, 97, // argin: 0; pa - 100, 100, 105, 110, 103, 58, 32, 48, 59, 32, 111, 118, // dding: 0; ov - 101, 114, 102, 108, 111, 119, 58, 32, 97, 117, 116, 111, // erflow: auto - 59, 32, 125, 10, 46, 99, 111, 108, 45, 49, 50, 32, // ; }..col-12 - 123, 32, 119, 105, 100, 116, 104, 58, 32, 49, 48, 48, // { width: 100 - 37, 59, 32, 125, 10, 46, 99, 111, 108, 45, 49, 49, // %; }..col-11 - 32, 123, 32, 119, 105, 100, 116, 104, 58, 32, 57, 49, // { width: 91 - 46, 54, 54, 37, 59, 32, 125, 10, 46, 99, 111, 108, // .66%; }..col - 45, 49, 48, 32, 123, 32, 119, 105, 100, 116, 104, 58, // -10 { width: - 32, 56, 51, 46, 51, 51, 37, 59, 32, 125, 10, 46, // 83.33%; }.. - 99, 111, 108, 45, 57, 32, 123, 32, 119, 105, 100, 116, // col-9 { widt - 104, 58, 32, 55, 53, 37, 59, 32, 125, 10, 46, 99, // h: 75%; }..c - 111, 108, 45, 56, 32, 123, 32, 119, 105, 100, 116, 104, // ol-8 { width - 58, 32, 54, 54, 46, 54, 54, 37, 59, 32, 125, 10, // : 66.66%; }. - 46, 99, 111, 108, 45, 55, 32, 123, 32, 119, 105, 100, // .col-7 { wid - 116, 104, 58, 32, 53, 56, 46, 51, 51, 37, 59, 32, // th: 58.33%; - 125, 10, 46, 99, 111, 108, 45, 54, 32, 123, 32, 119, // }..col-6 { w - 105, 100, 116, 104, 58, 32, 53, 48, 37, 59, 32, 125, // idth: 50%; } - 10, 46, 99, 111, 108, 45, 53, 32, 123, 32, 119, 105, // ..col-5 { wi - 100, 116, 104, 58, 32, 52, 49, 46, 54, 54, 37, 59, // dth: 41.66%; - 32, 125, 10, 46, 99, 111, 108, 45, 52, 32, 123, 32, // }..col-4 { - 119, 105, 100, 116, 104, 58, 32, 51, 51, 46, 51, 51, // width: 33.33 - 37, 59, 32, 125, 10, 46, 99, 111, 108, 45, 51, 32, // %; }..col-3 - 123, 32, 119, 105, 100, 116, 104, 58, 32, 50, 53, 37, // { width: 25% - 59, 32, 125, 10, 46, 99, 111, 108, 45, 50, 32, 123, // ; }..col-2 { - 32, 119, 105, 100, 116, 104, 58, 32, 49, 54, 46, 54, // width: 16.6 - 54, 37, 59, 32, 125, 10, 46, 99, 111, 108, 45, 49, // 6%; }..col-1 - 32, 123, 32, 119, 105, 100, 116, 104, 58, 32, 56, 46, // { width: 8. - 51, 51, 37, 59, 32, 125, 10, 64, 109, 101, 100, 105, // 33%; }.@medi - 97, 32, 40, 109, 105, 110, 45, 119, 105, 100, 116, 104, // a (min-width - 58, 32, 49, 51, 49, 48, 112, 120, 41, 32, 123, 32, // : 1310px) { - 46, 99, 111, 110, 116, 97, 105, 110, 101, 114, 32, 123, // .container { - 32, 109, 97, 114, 103, 105, 110, 58, 32, 97, 117, 116, // margin: aut - 111, 59, 32, 119, 105, 100, 116, 104, 58, 32, 49, 50, // o; width: 12 - 55, 48, 112, 120, 59, 32, 125, 32, 125, 10, 64, 109, // 70px; } }.@m - 101, 100, 105, 97, 32, 40, 109, 97, 120, 45, 119, 105, // edia (max-wi - 100, 116, 104, 58, 32, 57, 50, 48, 112, 120, 41, 32, // dth: 920px) - 123, 32, 46, 114, 111, 119, 32, 46, 99, 111, 108, 32, // { .row .col - 123, 32, 119, 105, 100, 116, 104, 58, 32, 49, 48, 48, // { width: 100 - 37, 59, 32, 125, 32, 125, 10, 0 // %; } }. -}; -static const unsigned char v4[] = { - 137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, // .PNG........ - 73, 72, 68, 82, 0, 0, 0, 128, 0, 0, 0, 128, // IHDR........ - 8, 6, 0, 0, 0, 195, 62, 97, 203, 0, 0, 0, // ......>a.... - 4, 115, 66, 73, 84, 8, 8, 8, 8, 124, 8, 100, // .sBIT....|.d - 136, 0, 0, 0, 9, 112, 72, 89, 115, 0, 0, 30, // .....pHYs... - 140, 0, 0, 30, 140, 1, 53, 120, 124, 169, 0, 0, // ......5x|... - 0, 25, 116, 69, 88, 116, 83, 111, 102, 116, 119, 97, // ..tEXtSoftwa - 114, 101, 0, 119, 119, 119, 46, 105, 110, 107, 115, 99, // re.www.inksc - 97, 112, 101, 46, 111, 114, 103, 155, 238, 60, 26, 0, // ape.org..<.. - 0, 14, 141, 73, 68, 65, 84, 120, 218, 237, 157, 125, // ...IDATx...} - 112, 20, 229, 29, 199, 97, 100, 232, 76, 117, 232, 63, // p....ad.Lu.? - 117, 250, 15, 163, 157, 206, 104, 197, 247, 42, 173, 56, // u.....h..*.8 - 19, 234, 12, 180, 82, 35, 32, 160, 132, 18, 94, 242, // ....R# ...^. - 102, 18, 18, 67, 184, 75, 46, 111, 151, 203, 93, 238, // f..C.K.o..]. - 37, 151, 219, 187, 203, 27, 16, 224, 242, 166, 80, 17, // %.........P. - 9, 18, 4, 5, 35, 90, 130, 32, 146, 8, 113, 152, // ....#Z. ..q. - 193, 106, 153, 90, 108, 173, 213, 42, 104, 71, 163, 130, // .j.Zl..*hG.. - 81, 242, 235, 243, 219, 238, 198, 75, 184, 75, 238, 246, // Q......K.K.. - 158, 221, 125, 118, 111, 255, 248, 206, 56, 2, 123, 191, // ..}vo...8.{. - 223, 247, 251, 185, 219, 231, 217, 125, 246, 217, 41, 0, // .......}..). - 48, 69, 111, 186, 169, 199, 55, 131, 104, 54, 209, 170, // 0Eo...7.h6.. - 187, 158, 171, 247, 154, 186, 108, 131, 142, 192, 250, 79, // ......l....O - 157, 174, 252, 175, 92, 213, 217, 195, 181, 165, 171, 175, // ............ - 88, 11, 211, 192, 156, 181, 24, 214, 175, 89, 8, 150, // X........Y.. - 156, 165, 96, 45, 88, 62, 82, 107, 74, 191, 226, 173, // ..`-X>RkJ... - 205, 251, 198, 209, 108, 254, 40, 191, 171, 186, 255, 190, // ....l.(..... - 110, 175, 31, 143, 33, 28, 107, 134, 30, 189, 210, 67, // n...!.k....C - 216, 215, 18, 45, 32, 226, 136, 250, 136, 62, 186, 127, // ...- ....>.. - 167, 19, 138, 55, 150, 130, 179, 58, 27, 74, 178, 150, // ...7...:.J.. - 192, 19, 171, 30, 150, 36, 132, 195, 97, 74, 135, 234, // .....$..aJ.. - 102, 51, 204, 221, 93, 7, 120, 108, 225, 51, 56, 225, // f3..].xl.38. - 51, 175, 53, 0, 80, 62, 240, 233, 68, 243, 136, 60, // 3.5.P>..D..< - 68, 39, 136, 134, 137, 48, 28, 88, 183, 195, 14, 238, // D'...0.X.... - 170, 76, 201, 129, 79, 164, 226, 53, 139, 192, 83, 147, // .L..O..5..S. - 3, 185, 157, 86, 184, 69, 248, 60, 225, 179, 177, 6, // ...V.E.<.... - 183, 80, 211, 116, 3, 0, 249, 130, 159, 67, 212, 74, // .P.t.....C.J - 244, 217, 77, 63, 4, 192, 107, 77, 187, 21, 156, 101, // ..M?..kM...e - 107, 100, 9, 62, 146, 170, 159, 72, 131, 188, 14, 43, // kd.>...H...+ - 140, 175, 67, 168, 13, 107, 156, 99, 0, 64, 39, 244, // ..C..k.c.@'. - 27, 137, 108, 68, 231, 34, 152, 13, 139, 119, 214, 130, // ..lD."...w.. - 205, 156, 174, 88, 240, 227, 229, 182, 102, 195, 31, 158, // ...X....f... - 113, 69, 2, 1, 132, 154, 177, 246, 27, 13, 0, 226, // qE.......... - 15, 30, 7, 93, 61, 68, 35, 145, 204, 253, 37, 81, // ...]=D#...%Q - 93, 171, 5, 76, 25, 139, 85, 11, 95, 212, 134, 140, // ]..L..U._... - 69, 96, 15, 20, 195, 173, 61, 222, 104, 32, 140, 8, // E`....=.h .. - 189, 204, 54, 0, 152, 60, 248, 185, 68, 189, 81, 140, // ..6..<..D.Q. - 228, 245, 235, 221, 110, 242, 205, 203, 82, 61, 248, 241, // ....n...R=.. - 114, 149, 103, 192, 125, 221, 117, 48, 81, 237, 66, 111, // r.g.}.u0Q.Bo - 115, 13, 0, 174, 14, 126, 62, 209, 177, 73, 204, 131, // s....~>..I.. - 212, 237, 118, 176, 228, 46, 99, 46, 252, 240, 177, 193, // ..v...c..... - 195, 207, 56, 39, 131, 0, 132, 94, 231, 39, 61, 0, // ..8'...^.'=. - 196, 132, 153, 68, 123, 98, 48, 12, 214, 144, 243, 61, // ...D{b0....= - 206, 215, 89, 13, 95, 148, 37, 103, 9, 100, 62, 105, // ..Y._.%g.d>i - 139, 5, 2, 16, 122, 159, 153, 116, 0, 144, 166, 167, // ....z..t.... - 17, 149, 18, 13, 197, 98, 212, 202, 167, 93, 80, 166, // .....b...]P. - 129, 240, 195, 199, 5, 171, 159, 178, 199, 10, 193, 144, // ............ - 224, 197, 180, 164, 0, 128, 52, 154, 66, 116, 54, 70, // ......4.Bt6F - 115, 224, 193, 63, 57, 160, 236, 113, 237, 132, 47, 10, // s..?9..q../. - 129, 77, 141, 62, 67, 136, 36, 244, 36, 69, 183, 0, // .M.>C.$.$E.. - 144, 230, 174, 33, 242, 70, 27, 217, 71, 210, 189, 187, // ...!.F..G... - 61, 80, 158, 247, 168, 230, 194, 15, 31, 19, 220, 223, // =P.......... - 237, 141, 7, 130, 17, 193, 163, 107, 116, 5, 128, 112, // .......kt..p - 174, 63, 30, 135, 17, 112, 51, 145, 199, 158, 163, 217, // .?...p3..... - 240, 69, 225, 5, 170, 219, 247, 214, 199, 3, 1, 8, // .E.......... - 94, 205, 212, 5, 0, 164, 145, 84, 162, 139, 113, 26, // ^......T..q. - 0, 174, 182, 74, 205, 135, 47, 202, 214, 104, 142, 23, // ...J../..h.. - 0, 16, 60, 75, 213, 44, 0, 164, 248, 169, 68, 190, // ..9.......;. - 241, 236, 166, 244, 68, 0, 0, 193, 219, 235, 153, 4, // ....D....... - 128, 20, 118, 67, 180, 187, 118, 177, 42, 135, 156, 39, // ..vC..v.*..' - 99, 49, 82, 41, 237, 110, 40, 158, 48, 252, 112, 253, // c1R).n(.0.p. - 253, 80, 16, 26, 202, 39, 63, 117, 165, 237, 112, 36, // .P...'?u..p$ - 10, 1, 122, 124, 3, 83, 0, 8, 223, 252, 115, 9, // ..z|.S....s. - 54, 6, 245, 206, 60, 102, 194, 223, 219, 108, 142, 57, // 6....^_.... - 57, 255, 84, 162, 77, 221, 189, 187, 142, 95, 130, 197, // 9.T.M...._.. - 66, 248, 47, 135, 42, 36, 133, 47, 234, 235, 55, 219, // B./.*$./..7. - 160, 203, 179, 46, 226, 177, 77, 153, 143, 192, 189, 207, // ......M..... - 121, 105, 64, 112, 138, 198, 152, 128, 198, 104, 255, 48, // yi@p.....h.0 - 133, 102, 32, 63, 134, 121, 127, 45, 249, 102, 53, 85, // .f ?.y.-.f5U - 102, 192, 166, 234, 108, 216, 230, 200, 133, 14, 87, 62, // f...l.....W> - 116, 56, 243, 193, 74, 233, 106, 97, 197, 227, 75, 225, // t8..J.ja..K. - 196, 211, 142, 132, 194, 15, 215, 159, 59, 172, 17, 161, // ........;... - 46, 219, 92, 70, 3, 0, 113, 96, 56, 93, 21, 0, // ...F..q`8].. - 132, 121, 254, 46, 74, 141, 128, 187, 174, 32, 98, 40, // .y..J.... b( - 229, 57, 75, 225, 217, 96, 49, 156, 127, 169, 97, 66, // .9K..`1...aB - 179, 255, 249, 114, 19, 255, 205, 109, 169, 202, 140, 107, // ...r...m...k - 100, 142, 170, 204, 91, 6, 135, 67, 149, 240, 245, 64, // d...[..C...@ - 136, 90, 248, 162, 206, 189, 192, 241, 199, 31, 187, 146, // .Z.......... - 40, 139, 22, 0, 226, 20, 113, 170, 26, 0, 248, 104, // (.....q....h - 53, 129, 43, 124, 106, 158, 72, 27, 99, 82, 77, 193, // 5.+|j.H.cRM. - 114, 24, 236, 118, 195, 229, 211, 237, 113, 155, 254, 85, // r..v....q..U - 127, 27, 188, 185, 203, 9, 237, 174, 60, 176, 100, 95, // ........<.d_ - 125, 65, 169, 120, 237, 34, 112, 21, 175, 132, 182, 218, // }A.x."p..... - 92, 56, 210, 105, 133, 111, 200, 79, 54, 237, 224, 195, // .8.i.o.O6... - 117, 241, 88, 43, 4, 44, 63, 172, 89, 44, 207, 93, // u.X+.,?.Y,.] - 70, 19, 0, 148, 79, 81, 0, 132, 203, 187, 35, 180, // F...OQ....#. - 26, 88, 209, 93, 55, 38, 160, 96, 217, 90, 248, 252, // .X.]7&.`.Z.. - 245, 86, 106, 1, 124, 121, 114, 27, 124, 248, 74, 19, // .Vj.|yr.|.J. - 188, 187, 159, 131, 143, 143, 108, 132, 111, 199, 205, 235, // ......l.o... - 149, 16, 66, 233, 43, 89, 61, 218, 35, 94, 237, 164, // ..B.+Y=.#^.. - 8, 192, 136, 212, 203, 198, 82, 111, 236, 92, 164, 73, // ......Ro...I - 176, 169, 203, 54, 106, 204, 83, 228, 84, 112, 233, 205, // ...6j.S.Tp.. - 118, 197, 3, 82, 66, 8, 181, 67, 252, 165, 11, 85, // v..RB..C...U - 209, 254, 21, 184, 40, 229, 6, 146, 148, 91, 186, 199, // ....(....[.. - 41, 23, 14, 190, 87, 91, 96, 179, 45, 7, 14, 110, // )...W[`.-..n - 41, 211, 101, 240, 225, 250, 79, 223, 70, 126, 76, 224, // ).e...O.F~L. - 224, 138, 104, 3, 32, 222, 69, 188, 70, 78, 0, 188, // ..h. .E.FN.. - 50, 20, 13, 93, 71, 55, 203, 126, 30, 102, 73, 239, // 2..]G7.~.fI. - 247, 54, 128, 215, 153, 39, 7, 0, 40, 175, 44, 0, // .6...'..(.,. - 8, 43, 121, 70, 228, 40, 250, 197, 227, 91, 146, 38, // .+yF.(...[.& - 124, 81, 7, 122, 155, 228, 2, 96, 36, 158, 149, 69, // |Q.z...`$..E - 241, 172, 225, 59, 43, 83, 193, 48, 240, 198, 182, 164, // ...;+S.0.... - 3, 224, 216, 137, 173, 114, 1, 32, 46, 47, 155, 70, // .....r. ./.F - 19, 128, 82, 25, 139, 133, 243, 73, 244, 243, 47, 106, // ..R....I../j - 128, 204, 76, 228, 244, 20, 51, 163, 2, 128, 48, 234, // ..L...3...0. - 31, 50, 0, 160, 171, 51, 253, 33, 185, 1, 24, 138, // .2...3.!.... - 101, 86, 16, 11, 0, 123, 100, 46, 20, 6, 79, 38, // eV...{d...O& - 223, 41, 224, 221, 1, 217, 1, 224, 159, 59, 72, 8, // .).......;H. - 0, 225, 137, 29, 217, 11, 125, 149, 156, 15, 147, 13, // ......}..... - 128, 83, 242, 159, 2, 68, 205, 79, 4, 128, 99, 74, // .S...D.O..cJ - 20, 185, 231, 88, 107, 242, 205, 2, 200, 204, 71, 33, // ...Xk.....G! - 0, 142, 73, 2, 64, 120, 80, 83, 145, 34, 219, 142, // ..I.@xPS.".. - 110, 78, 58, 0, 66, 125, 155, 148, 2, 0, 38, 122, // nN:.B}....&z - 32, 117, 34, 0, 122, 149, 42, 176, 246, 213, 150, 164, // u".z.*..... - 3, 0, 123, 86, 16, 128, 222, 184, 0, 16, 158, 207, // ..{V........ - 87, 172, 192, 180, 131, 13, 73, 7, 64, 94, 111, 163, // W.....I.@^o. - 146, 0, 64, 180, 253, 9, 162, 1, 208, 163, 100, 113, // ..@.......dq - 119, 236, 227, 224, 114, 146, 1, 176, 240, 197, 160, 210, // w...r....... - 0, 244, 196, 4, 128, 176, 45, 203, 136, 194, 197, 193, // ......-..... - 95, 7, 146, 231, 90, 192, 215, 131, 29, 112, 59, 129, // _...Z....p;. - 94, 97, 143, 71, 34, 109, 87, 19, 9, 0, 155, 210, // ^a.G"mW..... - 225, 163, 246, 38, 209, 76, 224, 228, 27, 219, 64, 13, // ...&.L....@. - 143, 49, 219, 88, 0, 56, 167, 70, 113, 206, 36, 26, // .1.X.8.Fq.$. - 8, 54, 31, 217, 164, 22, 0, 231, 38, 4, 64, 216, // .6......&.@. - 138, 77, 149, 226, 230, 29, 8, 36, 13, 0, 233, 135, // .M.....$.... - 26, 212, 2, 0, 198, 111, 97, 55, 30, 128, 86, 21, // .....oa7..V. - 11, 131, 191, 244, 135, 116, 31, 254, 87, 228, 252, 127, // .....t..W... - 155, 242, 231, 255, 112, 109, 137, 8, 128, 176, 196, 251, // ....pm...... - 51, 53, 1, 104, 33, 63, 141, 122, 7, 224, 117, 245, // 35.h!?.z..u. - 206, 255, 225, 155, 89, 78, 143, 4, 192, 60, 149, 11, // ....YN...<.. - 131, 69, 100, 106, 164, 119, 0, 188, 202, 94, 0, 138, // .Edj.w...^.. - 166, 121, 145, 0, 240, 48, 80, 24, 188, 175, 227, 91, // .y...0P....[ - 195, 151, 6, 59, 225, 190, 253, 126, 22, 0, 240, 68, // ...;...~...D - 2, 224, 4, 11, 0, 180, 246, 233, 247, 52, 112, 232, // .........4p. - 245, 45, 44, 132, 143, 58, 49, 6, 0, 97, 203, 245, // .-,..:1..a.. - 97, 22, 138, 75, 33, 223, 16, 252, 166, 232, 17, 128, // a..K!....... - 156, 151, 26, 89, 1, 96, 88, 220, 234, 94, 4, 96, // ...Y.`X..^.` - 1, 35, 133, 241, 218, 167, 195, 69, 162, 31, 158, 106, // .#.....E...j - 15, 223, 102, 158, 5, 45, 8, 7, 128, 99, 9, 128, // ..f..-...c.. - 37, 58, 28, 12, 110, 238, 219, 196, 82, 248, 40, 46, // %:..n...R.(. - 28, 128, 62, 198, 138, 131, 126, 29, 173, 20, 30, 34, // ..>...~...." - 115, 255, 148, 3, 126, 214, 0, 232, 11, 7, 224, 35, // s...~......# - 214, 0, 200, 239, 109, 210, 13, 0, 173, 236, 125, 251, // ....m.....}. - 249, 215, 223, 240, 0, 8, 47, 88, 98, 177, 64, 254, // ....../Xb.@. - 166, 137, 214, 195, 255, 148, 156, 251, 127, 245, 60, 7, // ..........<. - 140, 122, 60, 67, 241, 197, 31, 241, 8, 239, 153, 95, // .z../.. - 127, 180, 228, 66, 0, 118, 50, 94, 36, 84, 191, 210, // ...B.v2^$T.. - 172, 185, 240, 119, 189, 214, 202, 122, 248, 168, 157, 8, // ...w...z.... - 192, 65, 13, 20, 170, 169, 39, 136, 241, 182, 246, 29, // .A....'..... - 251, 56, 45, 0, 112, 112, 138, 28, 27, 62, 200, 161, // .8-.pp...>.. - 187, 200, 169, 64, 11, 235, 6, 191, 56, 221, 1, 15, // ...@....8... - 190, 16, 208, 66, 248, 252, 134, 18, 8, 192, 25, 141, // ...B........ - 20, 11, 191, 39, 198, 254, 247, 116, 7, 211, 0, 152, // ...'...t.... - 95, 110, 210, 74, 248, 168, 51, 8, 192, 121, 13, 21, // _n.J..3..y.. - 12, 235, 200, 192, 106, 152, 209, 240, 219, 143, 110, 214, // ....j.....n. - 82, 248, 168, 243, 8, 192, 5, 141, 21, 13, 86, 50, // R.........V2 - 40, 100, 237, 250, 64, 211, 145, 141, 90, 11, 31, 117, // (d..@...Z..u - 1, 1, 248, 86, 131, 133, 67, 110, 111, 35, 127, 141, // ...V..Cno#.. - 93, 237, 224, 191, 37, 194, 89, 138, 22, 61, 196, 236, // ]...%.Y..=.. - 53, 11, 0, 106, 217, 193, 32, 124, 114, 74, 189, 107, // 5..j.. |rJ.k - 4, 248, 128, 71, 97, 111, 147, 86, 195, 31, 5, 224, // ...Gao.V.... - 130, 134, 27, 128, 249, 100, 96, 120, 90, 133, 13, 38, // .....d`xZ..& - 240, 249, 126, 4, 80, 203, 222, 137, 167, 128, 243, 26, // ..~.P....... - 111, 130, 87, 1, 249, 38, 158, 83, 96, 154, 248, 55, // o.W..&.S`..7 - 242, 25, 26, 255, 214, 95, 53, 8, 60, 163, 147, 102, // ....._5.<..f - 248, 21, 55, 85, 228, 124, 252, 177, 12, 167, 5, 188, // ..7U.|...... - 28, 109, 123, 165, 5, 110, 217, 231, 211, 75, 248, 163, // .m{..n...K.. - 211, 192, 227, 58, 106, 136, 215, 156, 253, 126, 126, 23, // ...:j....~~. - 46, 90, 225, 191, 117, 50, 4, 115, 217, 91, 208, 65, // .Z..u2.s.[.A - 237, 66, 208, 65, 29, 54, 6, 11, 94, 160, 247, 168, // .B.A.6..^... - 217, 162, 23, 131, 122, 12, 127, 244, 82, 240, 78, 157, // ....z...R.N. - 54, 7, 255, 160, 240, 140, 1, 30, 67, 175, 254, 136, // 6.......C... - 55, 131, 92, 122, 109, 240, 109, 10, 207, 26, 190, 221, // 7..zm.m..... - 31, 210, 51, 0, 46, 230, 23, 132, 72, 213, 61, 207, // ..3.....H.=. - 115, 252, 141, 25, 26, 55, 119, 238, 121, 158, 211, 43, // s....7w.y..+ - 0, 171, 152, 94, 18, 150, 208, 43, 104, 40, 238, 55, // ...^...+h(.7 - 224, 102, 123, 89, 87, 194, 75, 194, 102, 232, 169, 169, // .f{YW.K.f... - 7, 14, 4, 248, 85, 184, 159, 83, 188, 107, 136, 199, // ....U..S.k.. - 194, 99, 226, 177, 117, 6, 192, 12, 213, 151, 133, 63, // .c..u......? - 176, 155, 131, 194, 173, 126, 176, 4, 57, 40, 243, 248, // .....~..9(.. - 160, 164, 218, 11, 69, 37, 30, 200, 90, 231, 130, 244, // ....E%..Z... - 28, 39, 172, 140, 162, 154, 234, 122, 248, 172, 191, 157, // .'.....z.... - 191, 28, 27, 46, 57, 239, 20, 14, 11, 151, 127, 195, // ....9....... - 133, 53, 96, 45, 209, 234, 196, 30, 176, 23, 236, 9, // .5`-........ - 123, 195, 30, 177, 87, 236, 25, 123, 87, 125, 89, 184, // {...W..{W}Y. - 210, 15, 134, 204, 218, 235, 131, 21, 219, 73, 224, 13, // .........I.. - 28, 20, 149, 214, 193, 242, 204, 90, 201, 178, 89, 235, // .......Z..Y. - 97, 104, 64, 189, 27, 66, 248, 217, 88, 67, 34, 61, // ah@..B..XC"= - 160, 7, 232, 5, 122, 130, 222, 168, 245, 96, 136, 236, // ....z....`.. - 143, 134, 205, 34, 66, 234, 243, 139, 221, 9, 25, 198, // ..."B....... - 10, 4, 52, 194, 31, 47, 244, 6, 61, 154, 165, 194, // ..4../..=... - 163, 97, 11, 228, 12, 190, 96, 27, 253, 224, 213, 132, // .a....`..... - 64, 142, 240, 199, 131, 128, 158, 201, 12, 194, 2, 217, // @........... - 31, 15, 95, 246, 180, 31, 10, 54, 120, 100, 51, 74, // .._....6xd3J - 13, 8, 228, 14, 63, 92, 232, 29, 122, 40, 251, 227, // ....?...z(.. - 225, 114, 108, 16, 177, 190, 213, 207, 15, 130, 148, 48, // .rl........0 - 74, 41, 8, 148, 12, 95, 20, 122, 136, 94, 202, 186, // J)..._.z.^.. - 65, 4, 205, 45, 98, 238, 121, 142, 140, 230, 93, 62, // A..-b.y...]> - 69, 77, 82, 2, 2, 53, 194, 15, 23, 122, 138, 222, // EMR..5...z.. - 202, 185, 69, 76, 194, 155, 68, 165, 224, 148, 206, 228, // ..EL..D..... - 81, 205, 36, 185, 32, 80, 59, 124, 81, 232, 109, 10, // Q.$. P;|Q.m. - 157, 169, 227, 60, 234, 219, 196, 205, 222, 227, 75, 120, // ...<......Kx - 90, 199, 34, 4, 172, 132, 31, 62, 109, 68, 175, 169, // Z."....>mD.. - 111, 19, 151, 200, 70, 145, 119, 146, 159, 38, 83, 165, // o...F.w..&S. - 151, 25, 147, 104, 65, 192, 90, 248, 162, 208, 235, 59, // ...hA.Z....; - 165, 159, 14, 182, 80, 221, 42, 22, 167, 42, 165, 118, // ....P.*..*.v - 246, 76, 74, 20, 2, 86, 195, 23, 133, 158, 75, 156, // .LJ..V....K. - 38, 206, 161, 186, 89, 116, 73, 19, 199, 172, 73, 82, // &...YtI...IR - 33, 96, 61, 124, 81, 232, 61, 213, 205, 162, 227, 221, // !`=|Q.=..... - 46, 254, 161, 103, 56, 197, 167, 122, 114, 67, 160, 149, // ...g8..zrC.. - 240, 197, 41, 34, 102, 64, 123, 187, 248, 152, 94, 24, // ..)"f@{...^. - 113, 51, 145, 185, 202, 171, 9, 163, 98, 133, 64, 75, // q3......b.@K - 225, 139, 194, 12, 110, 166, 249, 194, 136, 88, 95, 25, // ....n....X_. - 131, 215, 172, 181, 100, 212, 100, 16, 104, 49, 252, 209, // ....d.d.h1.. - 233, 225, 214, 152, 46, 20, 245, 80, 123, 105, 212, 29, // .......P{i.. - 123, 57, 254, 22, 167, 22, 205, 138, 4, 129, 150, 195, // {9.......... - 71, 97, 22, 152, 9, 181, 151, 70, 77, 246, 218, 184, // Ga.....FM... - 130, 144, 95, 179, 102, 141, 135, 64, 235, 225, 143, 222, // .._.f..@.... - 55, 8, 249, 233, 189, 54, 110, 178, 23, 71, 154, 42, // 7....6n..G.* - 234, 52, 111, 152, 8, 129, 30, 194, 231, 175, 13, 144, // .4o......... - 76, 168, 190, 56, 50, 218, 171, 99, 23, 237, 244, 235, // L..82..c.... - 194, 48, 61, 10, 179, 161, 246, 234, 216, 104, 47, 143, // .0=......h/. - 46, 227, 124, 134, 217, 140, 10, 179, 161, 250, 242, 232, // ..|......... - 72, 175, 143, 207, 43, 114, 27, 102, 51, 42, 204, 134, // H...+r.f3*.. - 234, 235, 227, 5, 0, 102, 18, 13, 225, 1, 239, 239, // .....f...... - 230, 12, 163, 25, 23, 102, 36, 132, 143, 153, 205, 76, // .....f$....L - 24, 0, 1, 130, 82, 60, 232, 218, 46, 227, 252, 207, // ....R<...... - 186, 48, 35, 1, 128, 210, 88, 178, 141, 21, 128, 105, // .0#...X....i - 68, 103, 75, 154, 141, 95, 0, 230, 239, 15, 52, 243, // DgK.._....4. - 191, 0, 103, 49, 51, 106, 0, 8, 16, 164, 88, 28, // ..g13j....X. - 245, 134, 201, 140, 11, 51, 194, 172, 98, 205, 53, 102, // .....3..b.5f - 0, 80, 53, 126, 238, 3, 195, 100, 182, 133, 25, 197, // .P5~...d.... - 147, 105, 92, 0, 152, 182, 7, 126, 84, 106, 245, 126, // .i.....~Tj.~ - 103, 24, 205, 232, 26, 1, 146, 13, 102, 36, 27, 0, // g.......f$.. - 40, 203, 147, 193, 223, 230, 26, 83, 65, 230, 132, 153, // (......SA... - 96, 54, 241, 230, 25, 55, 0, 168, 202, 182, 64, 179, // `6...7....@. - 212, 117, 0, 143, 173, 173, 129, 37, 233, 21, 99, 180, // .u.....%..c. - 60, 211, 145, 132, 161, 57, 174, 242, 1, 189, 145, 186, // <....9...... - 46, 0, 51, 145, 146, 165, 36, 0, 80, 214, 22, 255, // ..3...$.P... - 59, 82, 138, 125, 100, 101, 57, 204, 75, 205, 28, 163, // ;R.}de9.K... - 71, 37, 54, 174, 101, 97, 207, 227, 125, 64, 111, 164, // G%6.ea..}@o. - 28, 11, 179, 144, 154, 163, 100, 0, 200, 72, 115, 106, // ......d..Hsj - 149, 203, 55, 100, 0, 160, 46, 0, 152, 1, 102, 161, // ..7d......f. - 56, 0, 40, 95, 71, 195, 207, 74, 171, 226, 27, 20, // 8.(_G..J.... - 26, 0, 208, 3, 0, 189, 199, 12, 18, 201, 48, 33, // ..........0! - 0, 248, 83, 65, 87, 240, 231, 230, 74, 239, 247, 6, // ..SAW...J... - 0, 202, 2, 128, 158, 163, 247, 137, 230, 151, 48, 0, // ..........0. - 168, 162, 237, 129, 91, 77, 21, 222, 43, 6, 0, 202, // ....[M..+... - 0, 128, 94, 163, 231, 52, 178, 163, 2, 0, 42, 111, // ..^..4....*o - 71, 224, 55, 27, 202, 235, 174, 24, 0, 200, 11, 0, // G.7......... - 122, 140, 94, 211, 202, 141, 26, 0, 168, 210, 39, 131, // z.^.......'. - 119, 111, 40, 155, 24, 2, 3, 0, 233, 0, 160, 183, // wo(......... - 232, 49, 205, 204, 168, 2, 128, 242, 182, 55, 220, 102, // .1.......7.f - 42, 175, 251, 222, 0, 128, 46, 0, 232, 41, 122, 75, // *........)zK - 59, 47, 234, 0, 160, 156, 157, 193, 159, 90, 221, 190, // ;/.......Z.. - 47, 13, 0, 232, 0, 128, 94, 162, 167, 114, 100, 37, // /.....^..rd% - 11, 0, 226, 117, 2, 188, 64, 241, 199, 108, 167, 1, // ...u..@..l.. - 128, 68, 0, 208, 59, 244, 48, 145, 121, 190, 106, 0, // .D..;.0.y.j. - 136, 170, 10, 5, 54, 229, 20, 186, 13, 0, 226, 4, // ....6....... - 0, 61, 67, 239, 228, 206, 71, 118, 0, 248, 107, 5, // .=C...Gv..k. - 29, 193, 7, 205, 21, 255, 31, 23, 24, 0, 76, 14, // ..........L. - 0, 122, 133, 158, 41, 145, 141, 34, 0, 160, 26, 219, // .z..)..".... - 27, 126, 82, 195, 113, 255, 94, 154, 110, 0, 16, 13, // .~R.q.^.n... - 0, 244, 6, 61, 66, 175, 148, 202, 69, 49, 0, 68, // ...=B...E1.D - 21, 214, 215, 6, 83, 151, 229, 27, 0, 140, 3, 0, // ....S....... - 61, 65, 111, 148, 206, 67, 113, 0, 80, 169, 53, 222, // =Ao..Cq.P.5. - 31, 103, 172, 183, 252, 107, 254, 194, 172, 164, 7, 0, // .g...k...... - 61, 64, 47, 208, 19, 53, 178, 80, 5, 128, 209, 171, // =@/..5.P.... - 135, 30, 123, 218, 163, 171, 139, 190, 75, 86, 0, 176, // ..{.....KV.. - 119, 244, 64, 205, 12, 84, 5, 64, 148, 125, 107, 160, // w.@..T.@.}k. - 181, 164, 42, 121, 150, 154, 97, 175, 216, 51, 11, 222, // ..*y..a..3.. - 51, 1, 128, 40, 91, 40, 224, 43, 183, 215, 95, 78, // 3..([(.+.._N - 203, 210, 95, 232, 216, 19, 246, 134, 61, 178, 228, 57, // .._.....=..9 - 83, 0, 136, 42, 239, 8, 174, 175, 242, 248, 134, 180, // S..*........ - 178, 253, 204, 100, 203, 181, 72, 47, 95, 98, 79, 44, // ...d..H/_bO, - 122, 205, 36, 0, 163, 107, 15, 59, 131, 15, 217, 125, // z.$..k.;...} - 220, 7, 90, 124, 30, 17, 107, 198, 218, 177, 7, 150, // ..Z|..k..... - 61, 102, 26, 128, 49, 207, 36, 132, 2, 78, 155, 159, // =f..1.$..N.. - 251, 152, 133, 157, 72, 39, 218, 201, 19, 107, 196, 90, // ....H'...k.Z - 181, 226, 171, 102, 0, 8, 223, 209, 212, 220, 25, 176, // ...f........ - 214, 4, 253, 231, 139, 45, 117, 87, 212, 14, 29, 107, // .....-uW...k - 192, 90, 176, 166, 240, 29, 56, 13, 0, 20, 18, 215, // .Z....8..... - 22, 188, 221, 190, 37, 208, 110, 107, 244, 191, 87, 233, // ....%.nk..W. - 244, 93, 34, 223, 194, 17, 57, 6, 145, 120, 76, 60, // .]"...9..xL< - 54, 126, 6, 126, 22, 126, 38, 126, 182, 214, 253, 211, // 6~.~.~&~.... - 60, 0, 145, 84, 214, 21, 248, 133, 115, 107, 192, 235, // <..T....sk.. - 108, 244, 247, 215, 248, 184, 15, 173, 30, 223, 23, 21, // l........... - 181, 245, 151, 44, 213, 222, 97, 83, 121, 221, 21, 12, // ...,..aSy... - 50, 187, 208, 53, 250, 94, 31, 252, 111, 252, 127, 248, // 2..5.^..o... - 103, 248, 119, 240, 239, 226, 191, 193, 127, 139, 199, 192, // g.w......... - 99, 225, 49, 245, 232, 213, 255, 0, 58, 21, 99, 155, // c.1.....:.c. - 126, 121, 49, 188, 0, 0, 0, 0, 73, 69, 78, 68, // ~y1.....IEND - 174, 66, 96, 130, 0 // .B`. -}; -static const unsigned char v5[] = { 39, 117, 115, 101, 32, 115, 116, 114, 105, 99, 116, 39, // 'use strict' 59, 10, 105, 109, 112, 111, 114, 116, 32, 123, 67, 111, // ;.import {Co 109, 112, 111, 110, 101, 110, 116, 44, 32, 104, 44, 32, // mponent, h, @@ -2788,6 +1207,1587 @@ static const unsigned char v5[] = { 65, 112, 112, 41, 44, 32, 100, 111, 99, 117, 109, 101, // App), docume 110, 116, 46, 98, 111, 100, 121, 41, 59, 10, 0 // nt.body);. }; +static const unsigned char v3[] = { + 118, 97, 114, 32, 101, 44, 110, 44, 95, 44, 116, 44, // var e,n,_,t, + 111, 44, 114, 44, 117, 44, 108, 61, 123, 125, 44, 105, // o,r,u,l={},i + 61, 91, 93, 44, 99, 61, 47, 97, 99, 105, 116, 124, // =[],c=/acit| + 101, 120, 40, 63, 58, 115, 124, 103, 124, 110, 124, 112, // ex(?:s|g|n|p + 124, 36, 41, 124, 114, 112, 104, 124, 103, 114, 105, 100, // |$)|rph|grid + 124, 111, 119, 115, 124, 109, 110, 99, 124, 110, 116, 119, // |ows|mnc|ntw + 124, 105, 110, 101, 91, 99, 104, 93, 124, 122, 111, 111, // |ine[ch]|zoo + 124, 94, 111, 114, 100, 124, 105, 116, 101, 114, 97, 47, // |^ord|itera/ + 105, 59, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, // i;function s + 40, 101, 44, 110, 41, 123, 102, 111, 114, 40, 118, 97, // (e,n){for(va + 114, 32, 95, 32, 105, 110, 32, 110, 41, 101, 91, 95, // r _ in n)e[_ + 93, 61, 110, 91, 95, 93, 59, 114, 101, 116, 117, 114, // ]=n[_];retur + 110, 32, 101, 125, 102, 117, 110, 99, 116, 105, 111, 110, // n e}function + 32, 102, 40, 101, 41, 123, 118, 97, 114, 32, 110, 61, // f(e){var n= + 101, 46, 112, 97, 114, 101, 110, 116, 78, 111, 100, 101, // e.parentNode + 59, 110, 38, 38, 110, 46, 114, 101, 109, 111, 118, 101, // ;n&&n.remove + 67, 104, 105, 108, 100, 40, 101, 41, 125, 102, 117, 110, // Child(e)}fun + 99, 116, 105, 111, 110, 32, 97, 40, 110, 44, 95, 44, // ction a(n,_, + 116, 41, 123, 118, 97, 114, 32, 111, 44, 114, 44, 117, // t){var o,r,u + 44, 108, 61, 123, 125, 59, 102, 111, 114, 40, 117, 32, // ,l={};for(u + 105, 110, 32, 95, 41, 34, 107, 101, 121, 34, 61, 61, // in _)"key"== + 117, 63, 111, 61, 95, 91, 117, 93, 58, 34, 114, 101, // u?o=_[u]:"re + 102, 34, 61, 61, 117, 63, 114, 61, 95, 91, 117, 93, // f"==u?r=_[u] + 58, 108, 91, 117, 93, 61, 95, 91, 117, 93, 59, 105, // :l[u]=_[u];i + 102, 40, 97, 114, 103, 117, 109, 101, 110, 116, 115, 46, // f(arguments. + 108, 101, 110, 103, 116, 104, 62, 50, 38, 38, 40, 108, // length>2&&(l + 46, 99, 104, 105, 108, 100, 114, 101, 110, 61, 97, 114, // .children=ar + 103, 117, 109, 101, 110, 116, 115, 46, 108, 101, 110, 103, // guments.leng + 116, 104, 62, 51, 63, 101, 46, 99, 97, 108, 108, 40, // th>3?e.call( + 97, 114, 103, 117, 109, 101, 110, 116, 115, 44, 50, 41, // arguments,2) + 58, 116, 41, 44, 34, 102, 117, 110, 99, 116, 105, 111, // :t),"functio + 110, 34, 61, 61, 116, 121, 112, 101, 111, 102, 32, 110, // n"==typeof n + 38, 38, 110, 117, 108, 108, 33, 61, 110, 46, 100, 101, // &&null!=n.de + 102, 97, 117, 108, 116, 80, 114, 111, 112, 115, 41, 102, // faultProps)f + 111, 114, 40, 117, 32, 105, 110, 32, 110, 46, 100, 101, // or(u in n.de + 102, 97, 117, 108, 116, 80, 114, 111, 112, 115, 41, 118, // faultProps)v + 111, 105, 100, 32, 48, 61, 61, 61, 108, 91, 117, 93, // oid 0===l[u] + 38, 38, 40, 108, 91, 117, 93, 61, 110, 46, 100, 101, // &&(l[u]=n.de + 102, 97, 117, 108, 116, 80, 114, 111, 112, 115, 91, 117, // faultProps[u + 93, 41, 59, 114, 101, 116, 117, 114, 110, 32, 112, 40, // ]);return p( + 110, 44, 108, 44, 111, 44, 114, 44, 110, 117, 108, 108, // n,l,o,r,null + 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, // )}function p + 40, 101, 44, 116, 44, 111, 44, 114, 44, 117, 41, 123, // (e,t,o,r,u){ + 118, 97, 114, 32, 108, 61, 123, 116, 121, 112, 101, 58, // var l={type: + 101, 44, 112, 114, 111, 112, 115, 58, 116, 44, 107, 101, // e,props:t,ke + 121, 58, 111, 44, 114, 101, 102, 58, 114, 44, 95, 95, // y:o,ref:r,__ + 107, 58, 110, 117, 108, 108, 44, 95, 95, 58, 110, 117, // k:null,__:nu + 108, 108, 44, 95, 95, 98, 58, 48, 44, 95, 95, 101, // ll,__b:0,__e + 58, 110, 117, 108, 108, 44, 95, 95, 100, 58, 118, 111, // :null,__d:vo + 105, 100, 32, 48, 44, 95, 95, 99, 58, 110, 117, 108, // id 0,__c:nul + 108, 44, 95, 95, 104, 58, 110, 117, 108, 108, 44, 99, // l,__h:null,c + 111, 110, 115, 116, 114, 117, 99, 116, 111, 114, 58, 118, // onstructor:v + 111, 105, 100, 32, 48, 44, 95, 95, 118, 58, 110, 117, // oid 0,__v:nu + 108, 108, 61, 61, 117, 63, 43, 43, 95, 58, 117, 125, // ll==u?++_:u} + 59, 114, 101, 116, 117, 114, 110, 32, 110, 117, 108, 108, // ;return null + 33, 61, 110, 46, 118, 110, 111, 100, 101, 38, 38, 110, // !=n.vnode&&n + 46, 118, 110, 111, 100, 101, 40, 108, 41, 44, 108, 125, // .vnode(l),l} + 102, 117, 110, 99, 116, 105, 111, 110, 32, 104, 40, 101, // function h(e + 41, 123, 114, 101, 116, 117, 114, 110, 32, 101, 46, 99, // ){return e.c + 104, 105, 108, 100, 114, 101, 110, 125, 102, 117, 110, 99, // hildren}func + 116, 105, 111, 110, 32, 100, 40, 101, 44, 110, 41, 123, // tion d(e,n){ + 116, 104, 105, 115, 46, 112, 114, 111, 112, 115, 61, 101, // this.props=e + 44, 116, 104, 105, 115, 46, 99, 111, 110, 116, 101, 120, // ,this.contex + 116, 61, 110, 125, 102, 117, 110, 99, 116, 105, 111, 110, // t=n}function + 32, 118, 40, 101, 44, 110, 41, 123, 105, 102, 40, 110, // v(e,n){if(n + 117, 108, 108, 61, 61, 110, 41, 114, 101, 116, 117, 114, // ull==n)retur + 110, 32, 101, 46, 95, 95, 63, 118, 40, 101, 46, 95, // n e.__?v(e._ + 95, 44, 101, 46, 95, 95, 46, 95, 95, 107, 46, 105, // _,e.__.__k.i + 110, 100, 101, 120, 79, 102, 40, 101, 41, 43, 49, 41, // ndexOf(e)+1) + 58, 110, 117, 108, 108, 59, 102, 111, 114, 40, 118, 97, // :null;for(va + 114, 32, 95, 59, 110, 60, 101, 46, 95, 95, 107, 46, // r _;n0?p(m. + 116, 121, 112, 101, 44, 109, 46, 112, 114, 111, 112, 115, // type,m.props + 44, 109, 46, 107, 101, 121, 44, 110, 117, 108, 108, 44, // ,m.key,null, + 109, 46, 95, 95, 118, 41, 58, 109, 41, 41, 123, 105, // m.__v):m)){i + 102, 40, 109, 46, 95, 95, 61, 95, 44, 109, 46, 95, // f(m.__=_,m._ + 95, 98, 61, 95, 46, 95, 95, 98, 43, 49, 44, 110, // _b=_.__b+1,n + 117, 108, 108, 61, 61, 61, 40, 121, 61, 72, 91, 97, // ull===(y=H[a + 93, 41, 124, 124, 121, 38, 38, 109, 46, 107, 101, 121, // ])||y&&m.key + 61, 61, 121, 46, 107, 101, 121, 38, 38, 109, 46, 116, // ==y.key&&m.t + 121, 112, 101, 61, 61, 61, 121, 46, 116, 121, 112, 101, // ype===y.type + 41, 72, 91, 97, 93, 61, 118, 111, 105, 100, 32, 48, // )H[a]=void 0 + 59, 101, 108, 115, 101, 32, 102, 111, 114, 40, 100, 61, // ;else for(d= + 48, 59, 100, 60, 69, 59, 100, 43, 43, 41, 123, 105, // 0;d=t.__.len + 103, 116, 104, 38, 38, 116, 46, 95, 95, 46, 112, 117, // gth&&t.__.pu + 115, 104, 40, 123, 125, 41, 44, 116, 46, 95, 95, 91, // sh({}),t.__[ + 101, 93, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, // e]}function + 71, 40, 101, 41, 123, 114, 101, 116, 117, 114, 110, 32, // G(e){return + 82, 61, 49, 44, 122, 40, 105, 101, 44, 101, 41, 125, // R=1,z(ie,e)} + 102, 117, 110, 99, 116, 105, 111, 110, 32, 122, 40, 101, // function z(e + 44, 110, 44, 95, 41, 123, 118, 97, 114, 32, 116, 61, // ,n,_){var t= + 106, 40, 76, 43, 43, 44, 50, 41, 59, 114, 101, 116, // j(L++,2);ret + 117, 114, 110, 32, 116, 46, 116, 61, 101, 44, 116, 46, // urn t.t=e,t. + 95, 95, 99, 124, 124, 40, 116, 46, 95, 95, 61, 91, // __c||(t.__=[ + 95, 63, 95, 40, 110, 41, 58, 105, 101, 40, 118, 111, // _?_(n):ie(vo + 105, 100, 32, 48, 44, 110, 41, 44, 102, 117, 110, 99, // id 0,n),func + 116, 105, 111, 110, 40, 101, 41, 123, 118, 97, 114, 32, // tion(e){var + 110, 61, 116, 46, 116, 40, 116, 46, 95, 95, 91, 48, // n=t.t(t.__[0 + 93, 44, 101, 41, 59, 116, 46, 95, 95, 91, 48, 93, // ],e);t.__[0] + 33, 61, 61, 110, 38, 38, 40, 116, 46, 95, 95, 61, // !==n&&(t.__= + 91, 110, 44, 116, 46, 95, 95, 91, 49, 93, 93, 44, // [n,t.__[1]], + 116, 46, 95, 95, 99, 46, 115, 101, 116, 83, 116, 97, // t.__c.setSta + 116, 101, 40, 123, 125, 41, 41, 125, 93, 44, 116, 46, // te({}))}],t. + 95, 95, 99, 61, 78, 41, 44, 116, 46, 95, 95, 125, // __c=N),t.__} + 102, 117, 110, 99, 116, 105, 111, 110, 32, 74, 40, 101, // function J(e + 44, 95, 41, 123, 118, 97, 114, 32, 116, 61, 106, 40, // ,_){var t=j( + 76, 43, 43, 44, 51, 41, 59, 33, 110, 46, 95, 95, // L++,3);!n.__ + 115, 38, 38, 108, 101, 40, 116, 46, 95, 95, 72, 44, // s&&le(t.__H, + 95, 41, 38, 38, 40, 116, 46, 95, 95, 61, 101, 44, // _)&&(t.__=e, + 116, 46, 95, 95, 72, 61, 95, 44, 78, 46, 95, 95, // t.__H=_,N.__ + 72, 46, 95, 95, 104, 46, 112, 117, 115, 104, 40, 116, // H.__h.push(t + 41, 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, // ))}function + 75, 40, 101, 44, 95, 41, 123, 118, 97, 114, 32, 116, // K(e,_){var t + 61, 106, 40, 76, 43, 43, 44, 52, 41, 59, 33, 110, // =j(L++,4);!n + 46, 95, 95, 115, 38, 38, 108, 101, 40, 116, 46, 95, // .__s&&le(t._ + 95, 72, 44, 95, 41, 38, 38, 40, 116, 46, 95, 95, // _H,_)&&(t.__ + 61, 101, 44, 116, 46, 95, 95, 72, 61, 95, 44, 78, // =e,t.__H=_,N + 46, 95, 95, 104, 46, 112, 117, 115, 104, 40, 116, 41, // .__h.push(t) + 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 81, // )}function Q + 40, 101, 41, 123, 114, 101, 116, 117, 114, 110, 32, 82, // (e){return R + 61, 53, 44, 89, 40, 102, 117, 110, 99, 116, 105, 111, // =5,Y(functio + 110, 40, 41, 123, 114, 101, 116, 117, 114, 110, 123, 99, // n(){return{c + 117, 114, 114, 101, 110, 116, 58, 101, 125, 125, 44, 91, // urrent:e}},[ + 93, 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, // ])}function + 88, 40, 101, 44, 110, 44, 95, 41, 123, 82, 61, 54, // X(e,n,_){R=6 + 44, 75, 40, 102, 117, 110, 99, 116, 105, 111, 110, 40, // ,K(function( + 41, 123, 34, 102, 117, 110, 99, 116, 105, 111, 110, 34, // ){"function" + 61, 61, 116, 121, 112, 101, 111, 102, 32, 101, 63, 101, // ==typeof e?e + 40, 110, 40, 41, 41, 58, 101, 38, 38, 40, 101, 46, // (n()):e&&(e. + 99, 117, 114, 114, 101, 110, 116, 61, 110, 40, 41, 41, // current=n()) + 125, 44, 110, 117, 108, 108, 61, 61, 95, 63, 95, 58, // },null==_?_: + 95, 46, 99, 111, 110, 99, 97, 116, 40, 101, 41, 41, // _.concat(e)) + 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 89, 40, // }function Y( + 101, 44, 110, 41, 123, 118, 97, 114, 32, 95, 61, 106, // e,n){var _=j + 40, 76, 43, 43, 44, 55, 41, 59, 114, 101, 116, 117, // (L++,7);retu + 114, 110, 32, 108, 101, 40, 95, 46, 95, 95, 72, 44, // rn le(_.__H, + 110, 41, 38, 38, 40, 95, 46, 95, 95, 61, 101, 40, // n)&&(_.__=e( + 41, 44, 95, 46, 95, 95, 72, 61, 110, 44, 95, 46, // ),_.__H=n,_. + 95, 95, 104, 61, 101, 41, 44, 95, 46, 95, 95, 125, // __h=e),_.__} + 102, 117, 110, 99, 116, 105, 111, 110, 32, 90, 40, 101, // function Z(e + 44, 110, 41, 123, 114, 101, 116, 117, 114, 110, 32, 82, // ,n){return R + 61, 56, 44, 89, 40, 102, 117, 110, 99, 116, 105, 111, // =8,Y(functio + 110, 40, 41, 123, 114, 101, 116, 117, 114, 110, 32, 101, // n(){return e + 125, 44, 110, 41, 125, 102, 117, 110, 99, 116, 105, 111, // },n)}functio + 110, 32, 101, 101, 40, 101, 41, 123, 118, 97, 114, 32, // n ee(e){var + 110, 61, 78, 46, 99, 111, 110, 116, 101, 120, 116, 91, // n=N.context[ + 101, 46, 95, 95, 99, 93, 44, 95, 61, 106, 40, 76, // e.__c],_=j(L + 43, 43, 44, 57, 41, 59, 114, 101, 116, 117, 114, 110, // ++,9);return + 32, 95, 46, 99, 61, 101, 44, 110, 63, 40, 110, 117, // _.c=e,n?(nu + 108, 108, 61, 61, 95, 46, 95, 95, 38, 38, 40, 95, // ll==_.__&&(_ + 46, 95, 95, 61, 33, 48, 44, 110, 46, 115, 117, 98, // .__=!0,n.sub + 40, 78, 41, 41, 44, 110, 46, 112, 114, 111, 112, 115, // (N)),n.props + 46, 118, 97, 108, 117, 101, 41, 58, 101, 46, 95, 95, // .value):e.__ + 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 110, 101, // }function ne + 40, 101, 44, 95, 41, 123, 110, 46, 117, 115, 101, 68, // (e,_){n.useD + 101, 98, 117, 103, 86, 97, 108, 117, 101, 38, 38, 110, // ebugValue&&n + 46, 117, 115, 101, 68, 101, 98, 117, 103, 86, 97, 108, // .useDebugVal + 117, 101, 40, 95, 63, 95, 40, 101, 41, 58, 101, 41, // ue(_?_(e):e) + 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 95, 101, // }function _e + 40, 101, 41, 123, 118, 97, 114, 32, 110, 61, 106, 40, // (e){var n=j( + 76, 43, 43, 44, 49, 48, 41, 44, 95, 61, 71, 40, // L++,10),_=G( + 41, 59, 114, 101, 116, 117, 114, 110, 32, 110, 46, 95, // );return n._ + 95, 61, 101, 44, 78, 46, 99, 111, 109, 112, 111, 110, // _=e,N.compon + 101, 110, 116, 68, 105, 100, 67, 97, 116, 99, 104, 124, // entDidCatch| + 124, 40, 78, 46, 99, 111, 109, 112, 111, 110, 101, 110, // |(N.componen + 116, 68, 105, 100, 67, 97, 116, 99, 104, 61, 102, 117, // tDidCatch=fu + 110, 99, 116, 105, 111, 110, 40, 101, 41, 123, 110, 46, // nction(e){n. + 95, 95, 38, 38, 110, 46, 95, 95, 40, 101, 41, 44, // __&&n.__(e), + 95, 91, 49, 93, 40, 101, 41, 125, 41, 44, 91, 95, // _[1](e)}),[_ + 91, 48, 93, 44, 102, 117, 110, 99, 116, 105, 111, 110, // [0],function + 40, 41, 123, 95, 91, 49, 93, 40, 118, 111, 105, 100, // (){_[1](void + 32, 48, 41, 125, 93, 125, 102, 117, 110, 99, 116, 105, // 0)}]}functi + 111, 110, 32, 116, 101, 40, 41, 123, 73, 46, 102, 111, // on te(){I.fo + 114, 69, 97, 99, 104, 40, 102, 117, 110, 99, 116, 105, // rEach(functi + 111, 110, 40, 101, 41, 123, 105, 102, 40, 101, 46, 95, // on(e){if(e._ + 95, 80, 41, 116, 114, 121, 123, 101, 46, 95, 95, 72, // _P)try{e.__H + 46, 95, 95, 104, 46, 102, 111, 114, 69, 97, 99, 104, // .__h.forEach + 40, 114, 101, 41, 44, 101, 46, 95, 95, 72, 46, 95, // (re),e.__H._ + 95, 104, 46, 102, 111, 114, 69, 97, 99, 104, 40, 117, // _h.forEach(u + 101, 41, 44, 101, 46, 95, 95, 72, 46, 95, 95, 104, // e),e.__H.__h + 61, 91, 93, 125, 99, 97, 116, 99, 104, 40, 95, 41, // =[]}catch(_) + 123, 101, 46, 95, 95, 72, 46, 95, 95, 104, 61, 91, // {e.__H.__h=[ + 93, 44, 110, 46, 95, 95, 101, 40, 95, 44, 101, 46, // ],n.__e(_,e. + 95, 95, 118, 41, 125, 125, 41, 44, 73, 61, 91, 93, // __v)}}),I=[] + 125, 110, 46, 95, 95, 98, 61, 102, 117, 110, 99, 116, // }n.__b=funct + 105, 111, 110, 40, 101, 41, 123, 78, 61, 110, 117, 108, // ion(e){N=nul + 108, 44, 79, 38, 38, 79, 40, 101, 41, 125, 44, 110, // l,O&&O(e)},n + 46, 95, 95, 114, 61, 102, 117, 110, 99, 116, 105, 111, // .__r=functio + 110, 40, 101, 41, 123, 86, 38, 38, 86, 40, 101, 41, // n(e){V&&V(e) + 44, 76, 61, 48, 59, 118, 97, 114, 32, 110, 61, 40, // ,L=0;var n=( + 78, 61, 101, 46, 95, 95, 99, 41, 46, 95, 95, 72, // N=e.__c).__H + 59, 110, 38, 38, 40, 110, 46, 95, 95, 104, 46, 102, // ;n&&(n.__h.f + 111, 114, 69, 97, 99, 104, 40, 114, 101, 41, 44, 110, // orEach(re),n + 46, 95, 95, 104, 46, 102, 111, 114, 69, 97, 99, 104, // .__h.forEach + 40, 117, 101, 41, 44, 110, 46, 95, 95, 104, 61, 91, // (ue),n.__h=[ + 93, 41, 125, 44, 110, 46, 100, 105, 102, 102, 101, 100, // ])},n.diffed + 61, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, 41, // =function(e) + 123, 113, 38, 38, 113, 40, 101, 41, 59, 118, 97, 114, // {q&&q(e);var + 32, 95, 61, 101, 46, 95, 95, 99, 59, 95, 38, 38, // _=e.__c;_&& + 95, 46, 95, 95, 72, 38, 38, 95, 46, 95, 95, 72, // _.__H&&_.__H + 46, 95, 95, 104, 46, 108, 101, 110, 103, 116, 104, 38, // .__h.length& + 38, 40, 49, 33, 61, 61, 73, 46, 112, 117, 115, 104, // &(1!==I.push + 40, 95, 41, 38, 38, 87, 61, 61, 61, 110, 46, 114, // (_)&&W===n.r + 101, 113, 117, 101, 115, 116, 65, 110, 105, 109, 97, 116, // equestAnimat + 105, 111, 110, 70, 114, 97, 109, 101, 124, 124, 40, 40, // ionFrame||(( + 87, 61, 110, 46, 114, 101, 113, 117, 101, 115, 116, 65, // W=n.requestA + 110, 105, 109, 97, 116, 105, 111, 110, 70, 114, 97, 109, // nimationFram + 101, 41, 124, 124, 102, 117, 110, 99, 116, 105, 111, 110, // e)||function + 40, 101, 41, 123, 118, 97, 114, 32, 110, 44, 95, 61, // (e){var n,_= + 102, 117, 110, 99, 116, 105, 111, 110, 40, 41, 123, 99, // function(){c + 108, 101, 97, 114, 84, 105, 109, 101, 111, 117, 116, 40, // learTimeout( + 116, 41, 44, 111, 101, 38, 38, 99, 97, 110, 99, 101, // t),oe&&cance + 108, 65, 110, 105, 109, 97, 116, 105, 111, 110, 70, 114, // lAnimationFr + 97, 109, 101, 40, 110, 41, 44, 115, 101, 116, 84, 105, // ame(n),setTi + 109, 101, 111, 117, 116, 40, 101, 41, 125, 44, 116, 61, // meout(e)},t= + 115, 101, 116, 84, 105, 109, 101, 111, 117, 116, 40, 95, // setTimeout(_ + 44, 49, 48, 48, 41, 59, 111, 101, 38, 38, 40, 110, // ,100);oe&&(n + 61, 114, 101, 113, 117, 101, 115, 116, 65, 110, 105, 109, // =requestAnim + 97, 116, 105, 111, 110, 70, 114, 97, 109, 101, 40, 95, // ationFrame(_ + 41, 41, 125, 41, 40, 116, 101, 41, 41, 44, 78, 61, // ))})(te)),N= + 118, 111, 105, 100, 32, 48, 125, 44, 110, 46, 95, 95, // void 0},n.__ + 99, 61, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, // c=function(e + 44, 95, 41, 123, 95, 46, 115, 111, 109, 101, 40, 102, // ,_){_.some(f + 117, 110, 99, 116, 105, 111, 110, 40, 101, 41, 123, 116, // unction(e){t + 114, 121, 123, 101, 46, 95, 95, 104, 46, 102, 111, 114, // ry{e.__h.for + 69, 97, 99, 104, 40, 114, 101, 41, 44, 101, 46, 95, // Each(re),e._ + 95, 104, 61, 101, 46, 95, 95, 104, 46, 102, 105, 108, // _h=e.__h.fil + 116, 101, 114, 40, 102, 117, 110, 99, 116, 105, 111, 110, // ter(function + 40, 101, 41, 123, 114, 101, 116, 117, 114, 110, 33, 101, // (e){return!e + 46, 95, 95, 124, 124, 117, 101, 40, 101, 41, 125, 41, // .__||ue(e)}) + 125, 99, 97, 116, 99, 104, 40, 116, 41, 123, 95, 46, // }catch(t){_. + 115, 111, 109, 101, 40, 102, 117, 110, 99, 116, 105, 111, // some(functio + 110, 40, 101, 41, 123, 101, 46, 95, 95, 104, 38, 38, // n(e){e.__h&& + 40, 101, 46, 95, 95, 104, 61, 91, 93, 41, 125, 41, // (e.__h=[])}) + 44, 95, 61, 91, 93, 44, 110, 46, 95, 95, 101, 40, // ,_=[],n.__e( + 116, 44, 101, 46, 95, 95, 118, 41, 125, 125, 41, 44, // t,e.__v)}}), + 66, 38, 38, 66, 40, 101, 44, 95, 41, 125, 44, 110, // B&&B(e,_)},n + 46, 117, 110, 109, 111, 117, 110, 116, 61, 102, 117, 110, // .unmount=fun + 99, 116, 105, 111, 110, 40, 101, 41, 123, 36, 38, 38, // ction(e){$&& + 36, 40, 101, 41, 59, 118, 97, 114, 32, 95, 61, 101, // $(e);var _=e + 46, 95, 95, 99, 59, 105, 102, 40, 95, 38, 38, 95, // .__c;if(_&&_ + 46, 95, 95, 72, 41, 116, 114, 121, 123, 95, 46, 95, // .__H)try{_._ + 95, 72, 46, 95, 95, 46, 102, 111, 114, 69, 97, 99, // _H.__.forEac + 104, 40, 114, 101, 41, 125, 99, 97, 116, 99, 104, 40, // h(re)}catch( + 101, 41, 123, 110, 46, 95, 95, 101, 40, 101, 44, 95, // e){n.__e(e,_ + 46, 95, 95, 118, 41, 125, 125, 59, 118, 97, 114, 32, // .__v)}};var + 111, 101, 61, 34, 102, 117, 110, 99, 116, 105, 111, 110, // oe="function + 34, 61, 61, 116, 121, 112, 101, 111, 102, 32, 114, 101, // "==typeof re + 113, 117, 101, 115, 116, 65, 110, 105, 109, 97, 116, 105, // questAnimati + 111, 110, 70, 114, 97, 109, 101, 59, 102, 117, 110, 99, // onFrame;func + 116, 105, 111, 110, 32, 114, 101, 40, 101, 41, 123, 118, // tion re(e){v + 97, 114, 32, 110, 61, 78, 59, 34, 102, 117, 110, 99, // ar n=N;"func + 116, 105, 111, 110, 34, 61, 61, 116, 121, 112, 101, 111, // tion"==typeo + 102, 32, 101, 46, 95, 95, 99, 38, 38, 101, 46, 95, // f e.__c&&e._ + 95, 99, 40, 41, 44, 78, 61, 110, 125, 102, 117, 110, // _c(),N=n}fun + 99, 116, 105, 111, 110, 32, 117, 101, 40, 101, 41, 123, // ction ue(e){ + 118, 97, 114, 32, 110, 61, 78, 59, 101, 46, 95, 95, // var n=N;e.__ + 99, 61, 101, 46, 95, 95, 40, 41, 44, 78, 61, 110, // c=e.__(),N=n + 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 108, 101, // }function le + 40, 101, 44, 110, 41, 123, 114, 101, 116, 117, 114, 110, // (e,n){return + 33, 101, 124, 124, 101, 46, 108, 101, 110, 103, 116, 104, // !e||e.length + 33, 61, 61, 110, 46, 108, 101, 110, 103, 116, 104, 124, // !==n.length| + 124, 110, 46, 115, 111, 109, 101, 40, 102, 117, 110, 99, // |n.some(func + 116, 105, 111, 110, 40, 110, 44, 95, 41, 123, 114, 101, // tion(n,_){re + 116, 117, 114, 110, 32, 110, 33, 61, 61, 101, 91, 95, // turn n!==e[_ + 93, 125, 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, // ]})}function + 32, 105, 101, 40, 101, 44, 110, 41, 123, 114, 101, 116, // ie(e,n){ret + 117, 114, 110, 34, 102, 117, 110, 99, 116, 105, 111, 110, // urn"function + 34, 61, 61, 116, 121, 112, 101, 111, 102, 32, 110, 63, // "==typeof n? + 110, 40, 101, 41, 58, 110, 125, 118, 97, 114, 32, 99, // n(e):n}var c + 101, 61, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, // e=function(e + 44, 110, 44, 95, 44, 116, 41, 123, 118, 97, 114, 32, // ,n,_,t){var + 111, 59, 110, 91, 48, 93, 61, 48, 59, 102, 111, 114, // o;n[0]=0;for + 40, 118, 97, 114, 32, 114, 61, 49, 59, 114, 60, 110, // (var r=1;r=5&& + 40, 40, 111, 124, 124, 33, 101, 38, 38, 53, 61, 61, // ((o||!e&&5== + 61, 116, 41, 38, 38, 40, 117, 46, 112, 117, 115, 104, // =t)&&(u.push + 40, 116, 44, 48, 44, 111, 44, 95, 41, 44, 116, 61, // (t,0,o,_),t= + 54, 41, 44, 101, 38, 38, 40, 117, 46, 112, 117, 115, // 6),e&&(u.pus + 104, 40, 116, 44, 101, 44, 48, 44, 95, 41, 44, 116, // h(t,e,0,_),t + 61, 54, 41, 41, 44, 111, 61, 34, 34, 125, 44, 105, // =6)),o=""},i + 61, 48, 59, 105, 60, 101, 46, 108, 101, 110, 103, 116, // =0;i"===n?(t=1, + 111, 61, 34, 34, 41, 58, 111, 61, 110, 43, 111, 91, // o=""):o=n+o[ + 48, 93, 58, 114, 63, 110, 61, 61, 61, 114, 63, 114, // 0]:r?n===r?r + 61, 34, 34, 58, 111, 43, 61, 110, 58, 39, 34, 39, // ="":o+=n:'"' + 61, 61, 61, 110, 124, 124, 34, 39, 34, 61, 61, 61, // ===n||"'"=== + 110, 63, 114, 61, 110, 58, 34, 62, 34, 61, 61, 61, // n?r=n:">"=== + 110, 63, 40, 108, 40, 41, 44, 116, 61, 49, 41, 58, // n?(l(),t=1): + 116, 38, 38, 40, 34, 61, 34, 61, 61, 61, 110, 63, // t&&("="===n? + 40, 116, 61, 53, 44, 95, 61, 111, 44, 111, 61, 34, // (t=5,_=o,o=" + 34, 41, 58, 34, 47, 34, 61, 61, 61, 110, 38, 38, // "):"/"===n&& + 40, 116, 60, 53, 124, 124, 34, 62, 34, 61, 61, 61, // (t<5||">"=== + 101, 91, 105, 93, 91, 99, 43, 49, 93, 41, 63, 40, // e[i][c+1])?( + 108, 40, 41, 44, 51, 61, 61, 61, 116, 38, 38, 40, // l(),3===t&&( + 117, 61, 117, 91, 48, 93, 41, 44, 116, 61, 117, 44, // u=u[0]),t=u, + 40, 117, 61, 117, 91, 48, 93, 41, 46, 112, 117, 115, // (u=u[0]).pus + 104, 40, 50, 44, 48, 44, 116, 41, 44, 116, 61, 48, // h(2,0,t),t=0 + 41, 58, 34, 32, 34, 61, 61, 61, 110, 124, 124, 34, // ):" "===n||" + 92, 116, 34, 61, 61, 61, 110, 124, 124, 34, 92, 110, // .t"===n||".n + 34, 61, 61, 61, 110, 124, 124, 34, 92, 114, 34, 61, // "===n||".r"= + 61, 61, 110, 63, 40, 108, 40, 41, 44, 116, 61, 50, // ==n?(l(),t=2 + 41, 58, 111, 43, 61, 110, 41, 44, 51, 61, 61, 61, // ):o+=n),3=== + 116, 38, 38, 34, 33, 45, 45, 34, 61, 61, 61, 111, // t&&"!--"===o + 38, 38, 40, 116, 61, 52, 44, 117, 61, 117, 91, 48, // &&(t=4,u=u[0 + 93, 41, 125, 114, 101, 116, 117, 114, 110, 32, 108, 40, // ])}return l( + 41, 44, 117, 125, 40, 101, 41, 41, 44, 110, 41, 44, // ),u}(e)),n), + 97, 114, 103, 117, 109, 101, 110, 116, 115, 44, 91, 93, // arguments,[] + 41, 41, 46, 108, 101, 110, 103, 116, 104, 62, 49, 63, // )).length>1? + 110, 58, 110, 91, 48, 93, 125, 46, 98, 105, 110, 100, // n:n[0]}.bind + 40, 97, 41, 59, 101, 120, 112, 111, 114, 116, 123, 97, // (a);export{a + 32, 97, 115, 32, 104, 44, 102, 101, 32, 97, 115, 32, // as h,fe as + 104, 116, 109, 108, 44, 77, 32, 97, 115, 32, 114, 101, // html,M as re + 110, 100, 101, 114, 44, 100, 32, 97, 115, 32, 67, 111, // nder,d as Co + 109, 112, 111, 110, 101, 110, 116, 44, 70, 32, 97, 115, // mponent,F as + 32, 99, 114, 101, 97, 116, 101, 67, 111, 110, 116, 101, // createConte + 120, 116, 44, 71, 32, 97, 115, 32, 117, 115, 101, 83, // xt,G as useS + 116, 97, 116, 101, 44, 122, 32, 97, 115, 32, 117, 115, // tate,z as us + 101, 82, 101, 100, 117, 99, 101, 114, 44, 74, 32, 97, // eReducer,J a + 115, 32, 117, 115, 101, 69, 102, 102, 101, 99, 116, 44, // s useEffect, + 75, 32, 97, 115, 32, 117, 115, 101, 76, 97, 121, 111, // K as useLayo + 117, 116, 69, 102, 102, 101, 99, 116, 44, 81, 32, 97, // utEffect,Q a + 115, 32, 117, 115, 101, 82, 101, 102, 44, 88, 32, 97, // s useRef,X a + 115, 32, 117, 115, 101, 73, 109, 112, 101, 114, 97, 116, // s useImperat + 105, 118, 101, 72, 97, 110, 100, 108, 101, 44, 89, 32, // iveHandle,Y + 97, 115, 32, 117, 115, 101, 77, 101, 109, 111, 44, 90, // as useMemo,Z + 32, 97, 115, 32, 117, 115, 101, 67, 97, 108, 108, 98, // as useCallb + 97, 99, 107, 44, 101, 101, 32, 97, 115, 32, 117, 115, // ack,ee as us + 101, 67, 111, 110, 116, 101, 120, 116, 44, 110, 101, 32, // eContext,ne + 97, 115, 32, 117, 115, 101, 68, 101, 98, 117, 103, 86, // as useDebugV + 97, 108, 117, 101, 44, 95, 101, 32, 97, 115, 32, 117, // alue,_e as u + 115, 101, 69, 114, 114, 111, 114, 66, 111, 117, 110, 100, // seErrorBound + 97, 114, 121, 125, 59, 10, 0 // ary};. +}; +static const unsigned char v4[] = { + 42, 32, 123, 32, 98, 111, 120, 45, 115, 105, 122, 105, // * { box-sizi + 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, // ng: border-b + 111, 120, 59, 32, 125, 10, 104, 116, 109, 108, 44, 32, // ox; }.html, + 98, 111, 100, 121, 32, 123, 32, 109, 97, 114, 103, 105, // body { margi + 110, 58, 32, 48, 59, 32, 112, 97, 100, 100, 105, 110, // n: 0; paddin + 103, 58, 32, 48, 59, 32, 104, 101, 105, 103, 104, 116, // g: 0; height + 58, 32, 49, 48, 48, 37, 59, 32, 102, 111, 110, 116, // : 100%; font + 58, 32, 49, 54, 112, 120, 32, 115, 97, 110, 115, 45, // : 16px sans- + 115, 101, 114, 105, 102, 59, 32, 125, 10, 115, 101, 108, // serif; }.sel + 101, 99, 116, 44, 32, 105, 110, 112, 117, 116, 44, 32, // ect, input, + 108, 97, 98, 101, 108, 58, 58, 98, 101, 102, 111, 114, // label::befor + 101, 44, 32, 116, 101, 120, 116, 97, 114, 101, 97, 32, // e, textarea + 123, 32, 111, 117, 116, 108, 105, 110, 101, 58, 32, 110, // { outline: n + 111, 110, 101, 59, 32, 98, 111, 120, 45, 115, 104, 97, // one; box-sha + 100, 111, 119, 58, 110, 111, 110, 101, 32, 33, 105, 109, // dow:none !im + 112, 111, 114, 116, 97, 110, 116, 59, 32, 98, 111, 114, // portant; bor + 100, 101, 114, 58, 32, 49, 112, 120, 32, 115, 111, 108, // der: 1px sol + 105, 100, 32, 35, 99, 99, 99, 32, 33, 105, 109, 112, // id #ccc !imp + 111, 114, 116, 97, 110, 116, 59, 32, 125, 10, 99, 111, // ortant; }.co + 100, 101, 44, 32, 112, 114, 101, 32, 123, 32, 99, 111, // de, pre { co + 108, 111, 114, 58, 32, 35, 51, 55, 51, 59, 32, 102, // lor: #373; f + 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 58, 32, // ont-family: + 109, 111, 110, 111, 115, 112, 97, 99, 101, 59, 32, 102, // monospace; f + 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, // ont-weight: + 98, 111, 108, 100, 101, 114, 59, 32, 102, 111, 110, 116, // bolder; font + 45, 115, 105, 122, 101, 58, 32, 115, 109, 97, 108, 108, // -size: small + 101, 114, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, // er; backgrou + 110, 100, 58, 32, 35, 100, 100, 100, 59, 32, 112, 97, // nd: #ddd; pa + 100, 100, 105, 110, 103, 58, 32, 48, 46, 49, 101, 109, // dding: 0.1em + 32, 48, 46, 51, 101, 109, 59, 32, 98, 111, 114, 100, // 0.3em; bord + 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 48, // er-radius: 0 + 46, 50, 101, 109, 59, 32, 125, 10, 116, 101, 120, 116, // .2em; }.text + 97, 114, 101, 97, 44, 32, 105, 110, 112, 117, 116, 44, // area, input, + 32, 46, 97, 100, 100, 111, 110, 32, 123, 32, 102, 111, // .addon { fo + 110, 116, 45, 115, 105, 122, 101, 58, 32, 49, 53, 112, // nt-size: 15p + 120, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, // x; border: 1 + 112, 120, 32, 115, 111, 108, 105, 100, 32, 35, 99, 99, // px solid #cc + 99, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, // c; padding: + 48, 46, 53, 101, 109, 59, 32, 125, 10, 97, 44, 32, // 0.5em; }.a, + 97, 58, 118, 105, 115, 105, 116, 101, 100, 44, 32, 97, // a:visited, a + 58, 97, 99, 116, 105, 118, 101, 32, 123, 32, 99, 111, // :active { co + 108, 111, 114, 58, 32, 35, 53, 53, 102, 59, 32, 125, // lor: #55f; } + 10, 46, 97, 100, 100, 111, 110, 32, 123, 32, 98, 97, // ..addon { ba + 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 35, 101, // ckground: #e + 101, 101, 59, 32, 32, 109, 105, 110, 45, 119, 105, 100, // ee; min-wid + 116, 104, 58, 32, 57, 101, 109, 59, 125, 10, 46, 98, // th: 9em;}..b + 116, 110, 32, 123, 10, 32, 32, 98, 97, 99, 107, 103, // tn {. backg + 114, 111, 117, 110, 100, 58, 32, 35, 99, 99, 99, 59, // round: #ccc; + 32, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, // border-radi + 117, 115, 58, 32, 48, 46, 51, 101, 109, 59, 32, 98, // us: 0.3em; b + 111, 114, 100, 101, 114, 58, 32, 48, 59, 32, 99, 111, // order: 0; co + 108, 111, 114, 58, 32, 35, 102, 102, 102, 59, 32, 99, // lor: #fff; c + 117, 114, 115, 111, 114, 58, 32, 112, 111, 105, 110, 116, // ursor: point + 101, 114, 59, 10, 32, 32, 100, 105, 115, 112, 108, 97, // er;. displa + 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, // y: inline-bl + 111, 99, 107, 59, 32, 112, 97, 100, 100, 105, 110, 103, // ock; padding + 58, 32, 48, 46, 54, 101, 109, 32, 50, 101, 109, 59, // : 0.6em 2em; + 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, // font-weight + 58, 32, 98, 111, 108, 100, 101, 114, 59, 10, 125, 10, // : bolder;.}. + 46, 98, 116, 110, 91, 100, 105, 115, 97, 98, 108, 101, // .btn[disable + 100, 93, 32, 123, 32, 111, 112, 97, 99, 105, 116, 121, // d] { opacity + 58, 32, 48, 46, 53, 59, 32, 99, 117, 114, 115, 111, // : 0.5; curso + 114, 58, 32, 97, 117, 116, 111, 59, 125, 10, 46, 115, // r: auto;}..s + 109, 111, 111, 116, 104, 32, 123, 32, 116, 114, 97, 110, // mooth { tran + 115, 105, 116, 105, 111, 110, 58, 32, 97, 108, 108, 32, // sition: all + 46, 50, 115, 59, 32, 125, 10, 46, 99, 111, 110, 116, // .2s; }..cont + 97, 105, 110, 101, 114, 32, 123, 32, 109, 97, 114, 103, // ainer { marg + 105, 110, 58, 32, 48, 32, 50, 48, 112, 120, 59, 32, // in: 0 20px; + 119, 105, 100, 116, 104, 58, 32, 97, 117, 116, 111, 59, // width: auto; + 32, 125, 10, 46, 100, 45, 102, 108, 101, 120, 32, 123, // }..d-flex { + 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 102, 108, // display: fl + 101, 120, 59, 32, 125, 10, 46, 100, 45, 110, 111, 110, // ex; }..d-non + 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, // e { display: + 32, 110, 111, 110, 101, 59, 32, 125, 10, 46, 98, 111, // none; }..bo + 114, 100, 101, 114, 32, 123, 32, 98, 111, 114, 100, 101, // rder { borde + 114, 58, 32, 49, 112, 120, 32, 115, 111, 108, 105, 100, // r: 1px solid + 32, 35, 100, 100, 100, 59, 32, 125, 10, 46, 114, 111, // #ddd; }..ro + 117, 110, 100, 101, 100, 32, 123, 32, 98, 111, 114, 100, // unded { bord + 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 48, // er-radius: 0 + 46, 53, 101, 109, 59, 32, 125, 10, 46, 110, 111, 119, // .5em; }..now + 114, 97, 112, 32, 123, 32, 119, 104, 105, 116, 101, 45, // rap { white- + 115, 112, 97, 99, 101, 58, 32, 110, 111, 119, 114, 97, // space: nowra + 112, 59, 32, 125, 10, 46, 109, 115, 103, 32, 123, 32, // p; }..msg { + 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, // background: + 35, 100, 101, 102, 59, 32, 98, 111, 114, 100, 101, 114, // #def; border + 45, 108, 101, 102, 116, 58, 32, 53, 112, 120, 32, 115, // -left: 5px s + 111, 108, 105, 100, 32, 35, 53, 57, 100, 59, 32, 112, // olid #59d; p + 97, 100, 100, 105, 110, 103, 58, 32, 48, 46, 53, 101, // adding: 0.5e + 109, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, // m; font-size + 58, 32, 57, 48, 37, 59, 32, 109, 97, 114, 103, 105, // : 90%; margi + 110, 58, 32, 49, 101, 109, 32, 48, 59, 32, 125, 10, // n: 1em 0; }. + 46, 115, 101, 99, 116, 105, 111, 110, 32, 123, 32, 109, // .section { m + 97, 114, 103, 105, 110, 58, 32, 48, 32, 49, 101, 109, // argin: 0 1em + 59, 32, 125, 10, 46, 116, 111, 112, 105, 99, 44, 32, // ; }..topic, + 46, 100, 97, 116, 97, 44, 32, 46, 113, 111, 115, 32, // .data, .qos + 123, 32, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, // { padding: + 48, 46, 50, 101, 109, 32, 48, 46, 53, 101, 109, 59, // 0.2em 0.5em; + 32, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, // border-radi + 117, 115, 58, 32, 48, 46, 52, 101, 109, 59, 32, 109, // us: 0.4em; m + 97, 114, 103, 105, 110, 45, 114, 105, 103, 104, 116, 58, // argin-right: + 32, 48, 46, 53, 101, 109, 59, 32, 32, 125, 10, 46, // 0.5em; }.. + 113, 111, 115, 32, 123, 32, 98, 97, 99, 107, 103, 114, // qos { backgr + 111, 117, 110, 100, 58, 32, 35, 101, 102, 97, 59, 32, // ound: #efa; + 125, 10, 46, 116, 111, 112, 105, 99, 32, 123, 32, 98, // }..topic { b + 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 35, // ackground: # + 102, 101, 97, 59, 32, 125, 10, 46, 100, 97, 116, 97, // fea; }..data + 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, // { backgroun + 100, 58, 32, 35, 97, 101, 102, 59, 32, 125, 10, 10, // d: #aef; }.. + 47, 42, 32, 71, 114, 105, 100, 32, 42, 47, 10, 46, // /* Grid */.. + 114, 111, 119, 32, 123, 32, 100, 105, 115, 112, 108, 97, // row { displa + 121, 58, 32, 102, 108, 101, 120, 59, 32, 102, 108, 101, // y: flex; fle + 120, 45, 119, 114, 97, 112, 58, 32, 119, 114, 97, 112, // x-wrap: wrap + 59, 32, 125, 10, 46, 99, 111, 108, 32, 123, 32, 109, // ; }..col { m + 97, 114, 103, 105, 110, 58, 32, 48, 59, 32, 112, 97, // argin: 0; pa + 100, 100, 105, 110, 103, 58, 32, 48, 59, 32, 111, 118, // dding: 0; ov + 101, 114, 102, 108, 111, 119, 58, 32, 97, 117, 116, 111, // erflow: auto + 59, 32, 125, 10, 46, 99, 111, 108, 45, 49, 50, 32, // ; }..col-12 + 123, 32, 119, 105, 100, 116, 104, 58, 32, 49, 48, 48, // { width: 100 + 37, 59, 32, 125, 10, 46, 99, 111, 108, 45, 49, 49, // %; }..col-11 + 32, 123, 32, 119, 105, 100, 116, 104, 58, 32, 57, 49, // { width: 91 + 46, 54, 54, 37, 59, 32, 125, 10, 46, 99, 111, 108, // .66%; }..col + 45, 49, 48, 32, 123, 32, 119, 105, 100, 116, 104, 58, // -10 { width: + 32, 56, 51, 46, 51, 51, 37, 59, 32, 125, 10, 46, // 83.33%; }.. + 99, 111, 108, 45, 57, 32, 123, 32, 119, 105, 100, 116, // col-9 { widt + 104, 58, 32, 55, 53, 37, 59, 32, 125, 10, 46, 99, // h: 75%; }..c + 111, 108, 45, 56, 32, 123, 32, 119, 105, 100, 116, 104, // ol-8 { width + 58, 32, 54, 54, 46, 54, 54, 37, 59, 32, 125, 10, // : 66.66%; }. + 46, 99, 111, 108, 45, 55, 32, 123, 32, 119, 105, 100, // .col-7 { wid + 116, 104, 58, 32, 53, 56, 46, 51, 51, 37, 59, 32, // th: 58.33%; + 125, 10, 46, 99, 111, 108, 45, 54, 32, 123, 32, 119, // }..col-6 { w + 105, 100, 116, 104, 58, 32, 53, 48, 37, 59, 32, 125, // idth: 50%; } + 10, 46, 99, 111, 108, 45, 53, 32, 123, 32, 119, 105, // ..col-5 { wi + 100, 116, 104, 58, 32, 52, 49, 46, 54, 54, 37, 59, // dth: 41.66%; + 32, 125, 10, 46, 99, 111, 108, 45, 52, 32, 123, 32, // }..col-4 { + 119, 105, 100, 116, 104, 58, 32, 51, 51, 46, 51, 51, // width: 33.33 + 37, 59, 32, 125, 10, 46, 99, 111, 108, 45, 51, 32, // %; }..col-3 + 123, 32, 119, 105, 100, 116, 104, 58, 32, 50, 53, 37, // { width: 25% + 59, 32, 125, 10, 46, 99, 111, 108, 45, 50, 32, 123, // ; }..col-2 { + 32, 119, 105, 100, 116, 104, 58, 32, 49, 54, 46, 54, // width: 16.6 + 54, 37, 59, 32, 125, 10, 46, 99, 111, 108, 45, 49, // 6%; }..col-1 + 32, 123, 32, 119, 105, 100, 116, 104, 58, 32, 56, 46, // { width: 8. + 51, 51, 37, 59, 32, 125, 10, 64, 109, 101, 100, 105, // 33%; }.@medi + 97, 32, 40, 109, 105, 110, 45, 119, 105, 100, 116, 104, // a (min-width + 58, 32, 49, 51, 49, 48, 112, 120, 41, 32, 123, 32, // : 1310px) { + 46, 99, 111, 110, 116, 97, 105, 110, 101, 114, 32, 123, // .container { + 32, 109, 97, 114, 103, 105, 110, 58, 32, 97, 117, 116, // margin: aut + 111, 59, 32, 119, 105, 100, 116, 104, 58, 32, 49, 50, // o; width: 12 + 55, 48, 112, 120, 59, 32, 125, 32, 125, 10, 64, 109, // 70px; } }.@m + 101, 100, 105, 97, 32, 40, 109, 97, 120, 45, 119, 105, // edia (max-wi + 100, 116, 104, 58, 32, 57, 50, 48, 112, 120, 41, 32, // dth: 920px) + 123, 32, 46, 114, 111, 119, 32, 46, 99, 111, 108, 32, // { .row .col + 123, 32, 119, 105, 100, 116, 104, 58, 32, 49, 48, 48, // { width: 100 + 37, 59, 32, 125, 32, 125, 10, 0 // %; } }. +}; +static const unsigned char v5[] = { + 137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, // .PNG........ + 73, 72, 68, 82, 0, 0, 0, 128, 0, 0, 0, 128, // IHDR........ + 8, 6, 0, 0, 0, 195, 62, 97, 203, 0, 0, 0, // ......>a.... + 4, 115, 66, 73, 84, 8, 8, 8, 8, 124, 8, 100, // .sBIT....|.d + 136, 0, 0, 0, 9, 112, 72, 89, 115, 0, 0, 30, // .....pHYs... + 140, 0, 0, 30, 140, 1, 53, 120, 124, 169, 0, 0, // ......5x|... + 0, 25, 116, 69, 88, 116, 83, 111, 102, 116, 119, 97, // ..tEXtSoftwa + 114, 101, 0, 119, 119, 119, 46, 105, 110, 107, 115, 99, // re.www.inksc + 97, 112, 101, 46, 111, 114, 103, 155, 238, 60, 26, 0, // ape.org..<.. + 0, 14, 141, 73, 68, 65, 84, 120, 218, 237, 157, 125, // ...IDATx...} + 112, 20, 229, 29, 199, 97, 100, 232, 76, 117, 232, 63, // p....ad.Lu.? + 117, 250, 15, 163, 157, 206, 104, 197, 247, 42, 173, 56, // u.....h..*.8 + 19, 234, 12, 180, 82, 35, 32, 160, 132, 18, 94, 242, // ....R# ...^. + 102, 18, 18, 67, 184, 75, 46, 111, 151, 203, 93, 238, // f..C.K.o..]. + 37, 151, 219, 187, 203, 27, 16, 224, 242, 166, 80, 17, // %.........P. + 9, 18, 4, 5, 35, 90, 130, 32, 146, 8, 113, 152, // ....#Z. ..q. + 193, 106, 153, 90, 108, 173, 213, 42, 104, 71, 163, 130, // .j.Zl..*hG.. + 81, 242, 235, 243, 219, 238, 198, 75, 184, 75, 238, 246, // Q......K.K.. + 158, 221, 125, 118, 111, 255, 248, 206, 56, 2, 123, 191, // ..}vo...8.{. + 223, 247, 251, 185, 219, 231, 217, 125, 246, 217, 41, 0, // .......}..). + 48, 69, 111, 186, 169, 199, 55, 131, 104, 54, 209, 170, // 0Eo...7.h6.. + 187, 158, 171, 247, 154, 186, 108, 131, 142, 192, 250, 79, // ......l....O + 157, 174, 252, 175, 92, 213, 217, 195, 181, 165, 171, 175, // ............ + 88, 11, 211, 192, 156, 181, 24, 214, 175, 89, 8, 150, // X........Y.. + 156, 165, 96, 45, 88, 62, 82, 107, 74, 191, 226, 173, // ..`-X>RkJ... + 205, 251, 198, 209, 108, 254, 40, 191, 171, 186, 255, 190, // ....l.(..... + 110, 175, 31, 143, 33, 28, 107, 134, 30, 189, 210, 67, // n...!.k....C + 216, 215, 18, 45, 32, 226, 136, 250, 136, 62, 186, 127, // ...- ....>.. + 167, 19, 138, 55, 150, 130, 179, 58, 27, 74, 178, 150, // ...7...:.J.. + 192, 19, 171, 30, 150, 36, 132, 195, 97, 74, 135, 234, // .....$..aJ.. + 102, 51, 204, 221, 93, 7, 120, 108, 225, 51, 56, 225, // f3..].xl.38. + 51, 175, 53, 0, 80, 62, 240, 233, 68, 243, 136, 60, // 3.5.P>..D..< + 68, 39, 136, 134, 137, 48, 28, 88, 183, 195, 14, 238, // D'...0.X.... + 170, 76, 201, 129, 79, 164, 226, 53, 139, 192, 83, 147, // .L..O..5..S. + 3, 185, 157, 86, 184, 69, 248, 60, 225, 179, 177, 6, // ...V.E.<.... + 183, 80, 211, 116, 3, 0, 249, 130, 159, 67, 212, 74, // .P.t.....C.J + 244, 217, 77, 63, 4, 192, 107, 77, 187, 21, 156, 101, // ..M?..kM...e + 107, 100, 9, 62, 146, 170, 159, 72, 131, 188, 14, 43, // kd.>...H...+ + 140, 175, 67, 168, 13, 107, 156, 99, 0, 64, 39, 244, // ..C..k.c.@'. + 27, 137, 108, 68, 231, 34, 152, 13, 139, 119, 214, 130, // ..lD."...w.. + 205, 156, 174, 88, 240, 227, 229, 182, 102, 195, 31, 158, // ...X....f... + 113, 69, 2, 1, 132, 154, 177, 246, 27, 13, 0, 226, // qE.......... + 15, 30, 7, 93, 61, 68, 35, 145, 204, 253, 37, 81, // ...]=D#...%Q + 93, 171, 5, 76, 25, 139, 85, 11, 95, 212, 134, 140, // ]..L..U._... + 69, 96, 15, 20, 195, 173, 61, 222, 104, 32, 140, 8, // E`....=.h .. + 189, 204, 54, 0, 152, 60, 248, 185, 68, 189, 81, 140, // ..6..<..D.Q. + 228, 245, 235, 221, 110, 242, 205, 203, 82, 61, 248, 241, // ....n...R=.. + 114, 149, 103, 192, 125, 221, 117, 48, 81, 237, 66, 111, // r.g.}.u0Q.Bo + 115, 13, 0, 174, 14, 126, 62, 209, 177, 73, 204, 131, // s....~>..I.. + 212, 237, 118, 176, 228, 46, 99, 46, 252, 240, 177, 193, // ..v...c..... + 195, 207, 56, 39, 131, 0, 132, 94, 231, 39, 61, 0, // ..8'...^.'=. + 196, 132, 153, 68, 123, 98, 48, 12, 214, 144, 243, 61, // ...D{b0....= + 206, 215, 89, 13, 95, 148, 37, 103, 9, 100, 62, 105, // ..Y._.%g.d>i + 139, 5, 2, 16, 122, 159, 153, 116, 0, 144, 166, 167, // ....z..t.... + 17, 149, 18, 13, 197, 98, 212, 202, 167, 93, 80, 166, // .....b...]P. + 129, 240, 195, 199, 5, 171, 159, 178, 199, 10, 193, 144, // ............ + 224, 197, 180, 164, 0, 128, 52, 154, 66, 116, 54, 70, // ......4.Bt6F + 115, 224, 193, 63, 57, 160, 236, 113, 237, 132, 47, 10, // s..?9..q../. + 129, 77, 141, 62, 67, 136, 36, 244, 36, 69, 183, 0, // .M.>C.$.$E.. + 144, 230, 174, 33, 242, 70, 27, 217, 71, 210, 189, 187, // ...!.F..G... + 61, 80, 158, 247, 168, 230, 194, 15, 31, 19, 220, 223, // =P.......... + 237, 141, 7, 130, 17, 193, 163, 107, 116, 5, 128, 112, // .......kt..p + 174, 63, 30, 135, 17, 112, 51, 145, 199, 158, 163, 217, // .?...p3..... + 240, 69, 225, 5, 170, 219, 247, 214, 199, 3, 1, 8, // .E.......... + 94, 205, 212, 5, 0, 164, 145, 84, 162, 139, 113, 26, // ^......T..q. + 0, 174, 182, 74, 205, 135, 47, 202, 214, 104, 142, 23, // ...J../..h.. + 0, 16, 60, 75, 213, 44, 0, 164, 248, 169, 68, 190, // ..9.......;. + 241, 236, 166, 244, 68, 0, 0, 193, 219, 235, 153, 4, // ....D....... + 128, 20, 118, 67, 180, 187, 118, 177, 42, 135, 156, 39, // ..vC..v.*..' + 99, 49, 82, 41, 237, 110, 40, 158, 48, 252, 112, 253, // c1R).n(.0.p. + 253, 80, 16, 26, 202, 39, 63, 117, 165, 237, 112, 36, // .P...'?u..p$ + 10, 1, 122, 124, 3, 83, 0, 8, 223, 252, 115, 9, // ..z|.S....s. + 54, 6, 245, 206, 60, 102, 194, 223, 219, 108, 142, 57, // 6....^_.... + 57, 255, 84, 162, 77, 221, 189, 187, 142, 95, 130, 197, // 9.T.M...._.. + 66, 248, 47, 135, 42, 36, 133, 47, 234, 235, 55, 219, // B./.*$./..7. + 160, 203, 179, 46, 226, 177, 77, 153, 143, 192, 189, 207, // ......M..... + 121, 105, 64, 112, 138, 198, 152, 128, 198, 104, 255, 48, // yi@p.....h.0 + 133, 102, 32, 63, 134, 121, 127, 45, 249, 102, 53, 85, // .f ?.y.-.f5U + 102, 192, 166, 234, 108, 216, 230, 200, 133, 14, 87, 62, // f...l.....W> + 116, 56, 243, 193, 74, 233, 106, 97, 197, 227, 75, 225, // t8..J.ja..K. + 196, 211, 142, 132, 194, 15, 215, 159, 59, 172, 17, 161, // ........;... + 46, 219, 92, 70, 3, 0, 113, 96, 56, 93, 21, 0, // ...F..q`8].. + 132, 121, 254, 46, 74, 141, 128, 187, 174, 32, 98, 40, // .y..J.... b( + 229, 57, 75, 225, 217, 96, 49, 156, 127, 169, 97, 66, // .9K..`1...aB + 179, 255, 249, 114, 19, 255, 205, 109, 169, 202, 140, 107, // ...r...m...k + 100, 142, 170, 204, 91, 6, 135, 67, 149, 240, 245, 64, // d...[..C...@ + 136, 90, 248, 162, 206, 189, 192, 241, 199, 31, 187, 146, // .Z.......... + 40, 139, 22, 0, 226, 20, 113, 170, 26, 0, 248, 104, // (.....q....h + 53, 129, 43, 124, 106, 158, 72, 27, 99, 82, 77, 193, // 5.+|j.H.cRM. + 114, 24, 236, 118, 195, 229, 211, 237, 113, 155, 254, 85, // r..v....q..U + 127, 27, 188, 185, 203, 9, 237, 174, 60, 176, 100, 95, // ........<.d_ + 125, 65, 169, 120, 237, 34, 112, 21, 175, 132, 182, 218, // }A.x."p..... + 92, 56, 210, 105, 133, 111, 200, 79, 54, 237, 224, 195, // .8.i.o.O6... + 117, 241, 88, 43, 4, 44, 63, 172, 89, 44, 207, 93, // u.X+.,?.Y,.] + 70, 19, 0, 148, 79, 81, 0, 132, 203, 187, 35, 180, // F...OQ....#. + 26, 88, 209, 93, 55, 38, 160, 96, 217, 90, 248, 252, // .X.]7&.`.Z.. + 245, 86, 106, 1, 124, 121, 114, 27, 124, 248, 74, 19, // .Vj.|yr.|.J. + 188, 187, 159, 131, 143, 143, 108, 132, 111, 199, 205, 235, // ......l.o... + 149, 16, 66, 233, 43, 89, 61, 218, 35, 94, 237, 164, // ..B.+Y=.#^.. + 8, 192, 136, 212, 203, 198, 82, 111, 236, 92, 164, 73, // ......Ro...I + 176, 169, 203, 54, 106, 204, 83, 228, 84, 112, 233, 205, // ...6j.S.Tp.. + 118, 197, 3, 82, 66, 8, 181, 67, 252, 165, 11, 85, // v..RB..C...U + 209, 254, 21, 184, 40, 229, 6, 146, 148, 91, 186, 199, // ....(....[.. + 41, 23, 14, 190, 87, 91, 96, 179, 45, 7, 14, 110, // )...W[`.-..n + 41, 211, 101, 240, 225, 250, 79, 223, 70, 126, 76, 224, // ).e...O.F~L. + 224, 138, 104, 3, 32, 222, 69, 188, 70, 78, 0, 188, // ..h. .E.FN.. + 50, 20, 13, 93, 71, 55, 203, 126, 30, 102, 73, 239, // 2..]G7.~.fI. + 247, 54, 128, 215, 153, 39, 7, 0, 40, 175, 44, 0, // .6...'..(.,. + 8, 43, 121, 70, 228, 40, 250, 197, 227, 91, 146, 38, // .+yF.(...[.& + 124, 81, 7, 122, 155, 228, 2, 96, 36, 158, 149, 69, // |Q.z...`$..E + 241, 172, 225, 59, 43, 83, 193, 48, 240, 198, 182, 164, // ...;+S.0.... + 3, 224, 216, 137, 173, 114, 1, 32, 46, 47, 155, 70, // .....r. ./.F + 19, 128, 82, 25, 139, 133, 243, 73, 244, 243, 47, 106, // ..R....I../j + 128, 204, 76, 228, 244, 20, 51, 163, 2, 128, 48, 234, // ..L...3...0. + 31, 50, 0, 160, 171, 51, 253, 33, 185, 1, 24, 138, // .2...3.!.... + 101, 86, 16, 11, 0, 123, 100, 46, 20, 6, 79, 38, // eV...{d...O& + 223, 41, 224, 221, 1, 217, 1, 224, 159, 59, 72, 8, // .).......;H. + 0, 225, 137, 29, 217, 11, 125, 149, 156, 15, 147, 13, // ......}..... + 128, 83, 242, 159, 2, 68, 205, 79, 4, 128, 99, 74, // .S...D.O..cJ + 20, 185, 231, 88, 107, 242, 205, 2, 200, 204, 71, 33, // ...Xk.....G! + 0, 142, 73, 2, 64, 120, 80, 83, 145, 34, 219, 142, // ..I.@xPS.".. + 110, 78, 58, 0, 66, 125, 155, 148, 2, 0, 38, 122, // nN:.B}....&z + 32, 117, 34, 0, 122, 149, 42, 176, 246, 213, 150, 164, // u".z.*..... + 3, 0, 123, 86, 16, 128, 222, 184, 0, 16, 158, 207, // ..{V........ + 87, 172, 192, 180, 131, 13, 73, 7, 64, 94, 111, 163, // W.....I.@^o. + 146, 0, 64, 180, 253, 9, 162, 1, 208, 163, 100, 113, // ..@.......dq + 119, 236, 227, 224, 114, 146, 1, 176, 240, 197, 160, 210, // w...r....... + 0, 244, 196, 4, 128, 176, 45, 203, 136, 194, 197, 193, // ......-..... + 95, 7, 146, 231, 90, 192, 215, 131, 29, 112, 59, 129, // _...Z....p;. + 94, 97, 143, 71, 34, 109, 87, 19, 9, 0, 155, 210, // ^a.G"mW..... + 225, 163, 246, 38, 209, 76, 224, 228, 27, 219, 64, 13, // ...&.L....@. + 143, 49, 219, 88, 0, 56, 167, 70, 113, 206, 36, 26, // .1.X.8.Fq.$. + 8, 54, 31, 217, 164, 22, 0, 231, 38, 4, 64, 216, // .6......&.@. + 138, 77, 149, 226, 230, 29, 8, 36, 13, 0, 233, 135, // .M.....$.... + 26, 212, 2, 0, 198, 111, 97, 55, 30, 128, 86, 21, // .....oa7..V. + 11, 131, 191, 244, 135, 116, 31, 254, 87, 228, 252, 127, // .....t..W... + 155, 242, 231, 255, 112, 109, 137, 8, 128, 176, 196, 251, // ....pm...... + 51, 53, 1, 104, 33, 63, 141, 122, 7, 224, 117, 245, // 35.h!?.z..u. + 206, 255, 225, 155, 89, 78, 143, 4, 192, 60, 149, 11, // ....YN...<.. + 131, 69, 100, 106, 164, 119, 0, 188, 202, 94, 0, 138, // .Edj.w...^.. + 166, 121, 145, 0, 240, 48, 80, 24, 188, 175, 227, 91, // .y...0P....[ + 195, 151, 6, 59, 225, 190, 253, 126, 22, 0, 240, 68, // ...;...~...D + 2, 224, 4, 11, 0, 180, 246, 233, 247, 52, 112, 232, // .........4p. + 245, 45, 44, 132, 143, 58, 49, 6, 0, 97, 203, 245, // .-,..:1..a.. + 97, 22, 138, 75, 33, 223, 16, 252, 166, 232, 17, 128, // a..K!....... + 156, 151, 26, 89, 1, 96, 88, 220, 234, 94, 4, 96, // ...Y.`X..^.` + 1, 35, 133, 241, 218, 167, 195, 69, 162, 31, 158, 106, // .#.....E...j + 15, 223, 102, 158, 5, 45, 8, 7, 128, 99, 9, 128, // ..f..-...c.. + 37, 58, 28, 12, 110, 238, 219, 196, 82, 248, 40, 46, // %:..n...R.(. + 28, 128, 62, 198, 138, 131, 126, 29, 173, 20, 30, 34, // ..>...~...." + 115, 255, 148, 3, 126, 214, 0, 232, 11, 7, 224, 35, // s...~......# + 214, 0, 200, 239, 109, 210, 13, 0, 173, 236, 125, 251, // ....m.....}. + 249, 215, 223, 240, 0, 8, 47, 88, 98, 177, 64, 254, // ....../Xb.@. + 166, 137, 214, 195, 255, 148, 156, 251, 127, 245, 60, 7, // ..........<. + 140, 122, 60, 67, 241, 197, 31, 241, 8, 239, 153, 95, // .z../.. + 127, 180, 228, 66, 0, 118, 50, 94, 36, 84, 191, 210, // ...B.v2^$T.. + 172, 185, 240, 119, 189, 214, 202, 122, 248, 168, 157, 8, // ...w...z.... + 192, 65, 13, 20, 170, 169, 39, 136, 241, 182, 246, 29, // .A....'..... + 251, 56, 45, 0, 112, 112, 138, 28, 27, 62, 200, 161, // .8-.pp...>.. + 187, 200, 169, 64, 11, 235, 6, 191, 56, 221, 1, 15, // ...@....8... + 190, 16, 208, 66, 248, 252, 134, 18, 8, 192, 25, 141, // ...B........ + 20, 11, 191, 39, 198, 254, 247, 116, 7, 211, 0, 152, // ...'...t.... + 95, 110, 210, 74, 248, 168, 51, 8, 192, 121, 13, 21, // _n.J..3..y.. + 12, 235, 200, 192, 106, 152, 209, 240, 219, 143, 110, 214, // ....j.....n. + 82, 248, 168, 243, 8, 192, 5, 141, 21, 13, 86, 50, // R.........V2 + 40, 100, 237, 250, 64, 211, 145, 141, 90, 11, 31, 117, // (d..@...Z..u + 1, 1, 248, 86, 131, 133, 67, 110, 111, 35, 127, 141, // ...V..Cno#.. + 93, 237, 224, 191, 37, 194, 89, 138, 22, 61, 196, 236, // ]...%.Y..=.. + 53, 11, 0, 106, 217, 193, 32, 124, 114, 74, 189, 107, // 5..j.. |rJ.k + 4, 248, 128, 71, 97, 111, 147, 86, 195, 31, 5, 224, // ...Gao.V.... + 130, 134, 27, 128, 249, 100, 96, 120, 90, 133, 13, 38, // .....d`xZ..& + 240, 249, 126, 4, 80, 203, 222, 137, 167, 128, 243, 26, // ..~.P....... + 111, 130, 87, 1, 249, 38, 158, 83, 96, 154, 248, 55, // o.W..&.S`..7 + 242, 25, 26, 255, 214, 95, 53, 8, 60, 163, 147, 102, // ....._5.<..f + 248, 21, 55, 85, 228, 124, 252, 177, 12, 167, 5, 188, // ..7U.|...... + 28, 109, 123, 165, 5, 110, 217, 231, 211, 75, 248, 163, // .m{..n...K.. + 211, 192, 227, 58, 106, 136, 215, 156, 253, 126, 126, 23, // ...:j....~~. + 46, 90, 225, 191, 117, 50, 4, 115, 217, 91, 208, 65, // .Z..u2.s.[.A + 237, 66, 208, 65, 29, 54, 6, 11, 94, 160, 247, 168, // .B.A.6..^... + 217, 162, 23, 131, 122, 12, 127, 244, 82, 240, 78, 157, // ....z...R.N. + 54, 7, 255, 160, 240, 140, 1, 30, 67, 175, 254, 136, // 6.......C... + 55, 131, 92, 122, 109, 240, 109, 10, 207, 26, 190, 221, // 7..zm.m..... + 31, 210, 51, 0, 46, 230, 23, 132, 72, 213, 61, 207, // ..3.....H.=. + 115, 252, 141, 25, 26, 55, 119, 238, 121, 158, 211, 43, // s....7w.y..+ + 0, 171, 152, 94, 18, 150, 208, 43, 104, 40, 238, 55, // ...^...+h(.7 + 224, 102, 123, 89, 87, 194, 75, 194, 102, 232, 169, 169, // .f{YW.K.f... + 7, 14, 4, 248, 85, 184, 159, 83, 188, 107, 136, 199, // ....U..S.k.. + 194, 99, 226, 177, 117, 6, 192, 12, 213, 151, 133, 63, // .c..u......? + 176, 155, 131, 194, 173, 126, 176, 4, 57, 40, 243, 248, // .....~..9(.. + 160, 164, 218, 11, 69, 37, 30, 200, 90, 231, 130, 244, // ....E%..Z... + 28, 39, 172, 140, 162, 154, 234, 122, 248, 172, 191, 157, // .'.....z.... + 191, 28, 27, 46, 57, 239, 20, 14, 11, 151, 127, 195, // ....9....... + 133, 53, 96, 45, 209, 234, 196, 30, 176, 23, 236, 9, // .5`-........ + 123, 195, 30, 177, 87, 236, 25, 123, 87, 125, 89, 184, // {...W..{W}Y. + 210, 15, 134, 204, 218, 235, 131, 21, 219, 73, 224, 13, // .........I.. + 28, 20, 149, 214, 193, 242, 204, 90, 201, 178, 89, 235, // .......Z..Y. + 97, 104, 64, 189, 27, 66, 248, 217, 88, 67, 34, 61, // ah@..B..XC"= + 160, 7, 232, 5, 122, 130, 222, 168, 245, 96, 136, 236, // ....z....`.. + 143, 134, 205, 34, 66, 234, 243, 139, 221, 9, 25, 198, // ..."B....... + 10, 4, 52, 194, 31, 47, 244, 6, 61, 154, 165, 194, // ..4../..=... + 163, 97, 11, 228, 12, 190, 96, 27, 253, 224, 213, 132, // .a....`..... + 64, 142, 240, 199, 131, 128, 158, 201, 12, 194, 2, 217, // @........... + 31, 15, 95, 246, 180, 31, 10, 54, 120, 100, 51, 74, // .._....6xd3J + 13, 8, 228, 14, 63, 92, 232, 29, 122, 40, 251, 227, // ....?...z(.. + 225, 114, 108, 16, 177, 190, 213, 207, 15, 130, 148, 48, // .rl........0 + 74, 41, 8, 148, 12, 95, 20, 122, 136, 94, 202, 186, // J)..._.z.^.. + 65, 4, 205, 45, 98, 238, 121, 142, 140, 230, 93, 62, // A..-b.y...]> + 69, 77, 82, 2, 2, 53, 194, 15, 23, 122, 138, 222, // EMR..5...z.. + 202, 185, 69, 76, 194, 155, 68, 165, 224, 148, 206, 228, // ..EL..D..... + 81, 205, 36, 185, 32, 80, 59, 124, 81, 232, 109, 10, // Q.$. P;|Q.m. + 157, 169, 227, 60, 234, 219, 196, 205, 222, 227, 75, 120, // ...<......Kx + 90, 199, 34, 4, 172, 132, 31, 62, 109, 68, 175, 169, // Z."....>mD.. + 111, 19, 151, 200, 70, 145, 119, 146, 159, 38, 83, 165, // o...F.w..&S. + 151, 25, 147, 104, 65, 192, 90, 248, 162, 208, 235, 59, // ...hA.Z....; + 165, 159, 14, 182, 80, 221, 42, 22, 167, 42, 165, 118, // ....P.*..*.v + 246, 76, 74, 20, 2, 86, 195, 23, 133, 158, 75, 156, // .LJ..V....K. + 38, 206, 161, 186, 89, 116, 73, 19, 199, 172, 73, 82, // &...YtI...IR + 33, 96, 61, 124, 81, 232, 61, 213, 205, 162, 227, 221, // !`=|Q.=..... + 46, 254, 161, 103, 56, 197, 167, 122, 114, 67, 160, 149, // ...g8..zrC.. + 240, 197, 41, 34, 102, 64, 123, 187, 248, 152, 94, 24, // ..)"f@{...^. + 113, 51, 145, 185, 202, 171, 9, 163, 98, 133, 64, 75, // q3......b.@K + 225, 139, 194, 12, 110, 166, 249, 194, 136, 88, 95, 25, // ....n....X_. + 131, 215, 172, 181, 100, 212, 100, 16, 104, 49, 252, 209, // ....d.d.h1.. + 233, 225, 214, 152, 46, 20, 245, 80, 123, 105, 212, 29, // .......P{i.. + 123, 57, 254, 22, 167, 22, 205, 138, 4, 129, 150, 195, // {9.......... + 71, 97, 22, 152, 9, 181, 151, 70, 77, 246, 218, 184, // Ga.....FM... + 130, 144, 95, 179, 102, 141, 135, 64, 235, 225, 143, 222, // .._.f..@.... + 55, 8, 249, 233, 189, 54, 110, 178, 23, 71, 154, 42, // 7....6n..G.* + 234, 52, 111, 152, 8, 129, 30, 194, 231, 175, 13, 144, // .4o......... + 76, 168, 190, 56, 50, 218, 171, 99, 23, 237, 244, 235, // L..82..c.... + 194, 48, 61, 10, 179, 161, 246, 234, 216, 104, 47, 143, // .0=......h/. + 46, 227, 124, 134, 217, 140, 10, 179, 161, 250, 242, 232, // ..|......... + 72, 175, 143, 207, 43, 114, 27, 102, 51, 42, 204, 134, // H...+r.f3*.. + 234, 235, 227, 5, 0, 102, 18, 13, 225, 1, 239, 239, // .....f...... + 230, 12, 163, 25, 23, 102, 36, 132, 143, 153, 205, 76, // .....f$....L + 24, 0, 1, 130, 82, 60, 232, 218, 46, 227, 252, 207, // ....R<...... + 186, 48, 35, 1, 128, 210, 88, 178, 141, 21, 128, 105, // .0#...X....i + 68, 103, 75, 154, 141, 95, 0, 230, 239, 15, 52, 243, // DgK.._....4. + 191, 0, 103, 49, 51, 106, 0, 8, 16, 164, 88, 28, // ..g13j....X. + 245, 134, 201, 140, 11, 51, 194, 172, 98, 205, 53, 102, // .....3..b.5f + 0, 80, 53, 126, 238, 3, 195, 100, 182, 133, 25, 197, // .P5~...d.... + 147, 105, 92, 0, 152, 182, 7, 126, 84, 106, 245, 126, // .i.....~Tj.~ + 103, 24, 205, 232, 26, 1, 146, 13, 102, 36, 27, 0, // g.......f$.. + 40, 203, 147, 193, 223, 230, 26, 83, 65, 230, 132, 153, // (......SA... + 96, 54, 241, 230, 25, 55, 0, 168, 202, 182, 64, 179, // `6...7....@. + 212, 117, 0, 143, 173, 173, 129, 37, 233, 21, 99, 180, // .u.....%..c. + 60, 211, 145, 132, 161, 57, 174, 242, 1, 189, 145, 186, // <....9...... + 46, 0, 51, 145, 146, 165, 36, 0, 80, 214, 22, 255, // ..3...$.P... + 59, 82, 138, 125, 100, 101, 57, 204, 75, 205, 28, 163, // ;R.}de9.K... + 71, 37, 54, 174, 101, 97, 207, 227, 125, 64, 111, 164, // G%6.ea..}@o. + 28, 11, 179, 144, 154, 163, 100, 0, 200, 72, 115, 106, // ......d..Hsj + 149, 203, 55, 100, 0, 160, 46, 0, 152, 1, 102, 161, // ..7d......f. + 56, 0, 40, 95, 71, 195, 207, 74, 171, 226, 27, 20, // 8.(_G..J.... + 26, 0, 208, 3, 0, 189, 199, 12, 18, 201, 48, 33, // ..........0! + 0, 248, 83, 65, 87, 240, 231, 230, 74, 239, 247, 6, // ..SAW...J... + 0, 202, 2, 128, 158, 163, 247, 137, 230, 151, 48, 0, // ..........0. + 168, 162, 237, 129, 91, 77, 21, 222, 43, 6, 0, 202, // ....[M..+... + 0, 128, 94, 163, 231, 52, 178, 163, 2, 0, 42, 111, // ..^..4....*o + 71, 224, 55, 27, 202, 235, 174, 24, 0, 200, 11, 0, // G.7......... + 122, 140, 94, 211, 202, 141, 26, 0, 168, 210, 39, 131, // z.^.......'. + 119, 111, 40, 155, 24, 2, 3, 0, 233, 0, 160, 183, // wo(......... + 232, 49, 205, 204, 168, 2, 128, 242, 182, 55, 220, 102, // .1.......7.f + 42, 175, 251, 222, 0, 128, 46, 0, 232, 41, 122, 75, // *........)zK + 59, 47, 234, 0, 160, 156, 157, 193, 159, 90, 221, 190, // ;/.......Z.. + 47, 13, 0, 232, 0, 128, 94, 162, 167, 114, 100, 37, // /.....^..rd% + 11, 0, 226, 117, 2, 188, 64, 241, 199, 108, 167, 1, // ...u..@..l.. + 128, 68, 0, 208, 59, 244, 48, 145, 121, 190, 106, 0, // .D..;.0.y.j. + 136, 170, 10, 5, 54, 229, 20, 186, 13, 0, 226, 4, // ....6....... + 0, 61, 67, 239, 228, 206, 71, 118, 0, 248, 107, 5, // .=C...Gv..k. + 29, 193, 7, 205, 21, 255, 31, 23, 24, 0, 76, 14, // ..........L. + 0, 122, 133, 158, 41, 145, 141, 34, 0, 160, 26, 219, // .z..)..".... + 27, 126, 82, 195, 113, 255, 94, 154, 110, 0, 16, 13, // .~R.q.^.n... + 0, 244, 6, 61, 66, 175, 148, 202, 69, 49, 0, 68, // ...=B...E1.D + 21, 214, 215, 6, 83, 151, 229, 27, 0, 140, 3, 0, // ....S....... + 61, 65, 111, 148, 206, 67, 113, 0, 80, 169, 53, 222, // =Ao..Cq.P.5. + 31, 103, 172, 183, 252, 107, 254, 194, 172, 164, 7, 0, // .g...k...... + 61, 64, 47, 208, 19, 53, 178, 80, 5, 128, 209, 171, // =@/..5.P.... + 135, 30, 123, 218, 163, 171, 139, 190, 75, 86, 0, 176, // ..{.....KV.. + 119, 244, 64, 205, 12, 84, 5, 64, 148, 125, 107, 160, // w.@..T.@.}k. + 181, 164, 42, 121, 150, 154, 97, 175, 216, 51, 11, 222, // ..*y..a..3.. + 51, 1, 128, 40, 91, 40, 224, 43, 183, 215, 95, 78, // 3..([(.+.._N + 203, 210, 95, 232, 216, 19, 246, 134, 61, 178, 228, 57, // .._.....=..9 + 83, 0, 136, 42, 239, 8, 174, 175, 242, 248, 134, 180, // S..*........ + 178, 253, 204, 100, 203, 181, 72, 47, 95, 98, 79, 44, // ...d..H/_bO, + 122, 205, 36, 0, 163, 107, 15, 59, 131, 15, 217, 125, // z.$..k.;...} + 220, 7, 90, 124, 30, 17, 107, 198, 218, 177, 7, 150, // ..Z|..k..... + 61, 102, 26, 128, 49, 207, 36, 132, 2, 78, 155, 159, // =f..1.$..N.. + 251, 152, 133, 157, 72, 39, 218, 201, 19, 107, 196, 90, // ....H'...k.Z + 181, 226, 171, 102, 0, 8, 223, 209, 212, 220, 25, 176, // ...f........ + 214, 4, 253, 231, 139, 45, 117, 87, 212, 14, 29, 107, // .....-uW...k + 192, 90, 176, 166, 240, 29, 56, 13, 0, 20, 18, 215, // .Z....8..... + 22, 188, 221, 190, 37, 208, 110, 107, 244, 191, 87, 233, // ....%.nk..W. + 244, 93, 34, 223, 194, 17, 57, 6, 145, 120, 76, 60, // .]"...9..xL< + 54, 126, 6, 126, 22, 126, 38, 126, 182, 214, 253, 211, // 6~.~.~&~.... + 60, 0, 145, 84, 214, 21, 248, 133, 115, 107, 192, 235, // <..T....sk.. + 108, 244, 247, 215, 248, 184, 15, 173, 30, 223, 23, 21, // l........... + 181, 245, 151, 44, 213, 222, 97, 83, 121, 221, 21, 12, // ...,..aSy... + 50, 187, 208, 53, 250, 94, 31, 252, 111, 252, 127, 248, // 2..5.^..o... + 103, 248, 119, 240, 239, 226, 191, 193, 127, 139, 199, 192, // g.w......... + 99, 225, 49, 245, 232, 213, 255, 0, 58, 21, 99, 155, // c.1.....:.c. + 126, 121, 49, 188, 0, 0, 0, 0, 73, 69, 78, 68, // ~y1.....IEND + 174, 66, 96, 130, 0 // .B`. +}; static const struct packed_file { const char *name; @@ -2795,11 +2795,11 @@ static const struct packed_file { size_t size; time_t mtime; } packed_files[] = { - {"/web_root/index.html", v1, sizeof(v1), 1655487950}, - {"/web_root/preact.min.js", v2, sizeof(v2), 1655487950}, - {"/web_root/style.css", v3, sizeof(v3), 1655487950}, - {"/web_root/user.png", v4, sizeof(v4), 1655487950}, - {"/web_root/main.js", v5, sizeof(v5), 1656008519}, + {"/web_root/index.html", v1, sizeof(v1), 1654437619}, + {"/web_root/main.js", v2, sizeof(v2), 1656330076}, + {"/web_root/preact.min.js", v3, sizeof(v3), 1652374364}, + {"/web_root/style.css", v4, sizeof(v4), 1654709515}, + {"/web_root/user.png", v5, sizeof(v5), 1626172939}, {NULL, NULL, 0, 0} }; diff --git a/mongoose.c b/mongoose.c index 7fe5478d..ffd800fc 100644 --- a/mongoose.c +++ b/mongoose.c @@ -107,6 +107,145 @@ int mg_base64_decode(const char *src, int n, char *dst) { return len; } +#ifdef MG_ENABLE_LINES +#line 1 "src/dbl.c" +#endif + + +double mg_atod(const char *p, int len, int *numlen) { + double d = 0.0; + int i = 0, sign = 1; + + // Sign + if (i < len && *p == '-') { + sign = -1, i++; + } else if (i < len && *p == '+') { + i++; + } + + // Decimal + for (; i < len && p[i] >= '0' && p[i] <= '9'; i++) { + d *= 10.0; + d += p[i] - '0'; + } + d *= sign; + + // Fractional + if (i < len && p[i] == '.') { + double frac = 0.0, base = 0.1; + i++; + for (; i < len && p[i] >= '0' && p[i] <= '9'; i++) { + frac += base * (p[i] - '0'); + base /= 10.0; + } + d += frac * sign; + } + + // Exponential + if (i < len && (p[i] == 'e' || p[i] == 'E')) { + int j, exp = 0, minus = 0; + i++; + if (i < len && p[i] == '-') minus = 1, i++; + if (i < len && p[i] == '+') i++; + while (i < len && p[i] >= '0' && p[i] <= '9' && exp < 308) + exp = exp * 10 + (p[i++] - '0'); + if (minus) exp = -exp; + for (j = 0; j < exp; j++) d *= 10.0; + for (j = 0; j < -exp; j++) d /= 10.0; + } + + if (numlen != NULL) *numlen = i; + return d; +} + +static int addexp(char *buf, int e, int sign) { + int n = 0; + buf[n++] = 'e'; + buf[n++] = (char) sign; + if (e > 400) return 0; + if (e < 10) buf[n++] = '0'; + if (e >= 100) buf[n++] = (char) (e / 100 + '0'), e -= 100 * (e / 100); + if (e >= 10) buf[n++] = (char) (e / 10 + '0'), e -= 10 * (e / 10); + buf[n++] = (char) (e + '0'); + return n; +} + +static int xisinf(double x) { + union { + double f; + uint64_t u; + } ieee754 = {x}; + return ((unsigned) (ieee754.u >> 32) & 0x7fffffff) == 0x7ff00000 && + ((unsigned) ieee754.u == 0); +} + +static int xisnan(double x) { + union { + double f; + uint64_t u; + } ieee754 = {x}; + return ((unsigned) (ieee754.u >> 32) & 0x7fffffff) + + ((unsigned) ieee754.u != 0) > + 0x7ff00000; +} + +size_t mg_dtoa(char *dst, size_t dstlen, double d, int width) { + char buf[40]; + int i, s = 0, n = 0, e = 0; + double t, mul, saved; + if (d == 0.0) return mg_snprintf(dst, dstlen, "%s", "0"); + if (xisinf(d)) return mg_snprintf(dst, dstlen, "%s", d > 0 ? "inf" : "-inf"); + if (xisnan(d)) return mg_snprintf(dst, dstlen, "%s", "nan"); + if (d < 0.0) d = -d, buf[s++] = '-'; + + // Round + saved = d; + mul = 1.0; + while (d >= 10.0 && d / mul >= 10.0) mul *= 10.0; + while (d <= 1.0 && d / mul <= 1.0) mul /= 10.0; + for (i = 0, t = mul * 5; i < width; i++) t /= 10.0; + d += t; + // Calculate exponent, and 'mul' for scientific representation + mul = 1.0; + while (d >= 10.0 && d / mul >= 10.0) mul *= 10.0, e++; + while (d < 1.0 && d / mul < 1.0) mul /= 10.0, e--; + // printf(" --> %g %d %g %g\n", saved, e, t, mul); + + if (e >= width) { + n = (int) mg_dtoa(buf, sizeof(buf), saved / mul, width); + // printf(" --> %.*g %d [%.*s]\n", 10, d / t, e, n, buf); + n += addexp(buf + s + n, e, '+'); + return mg_snprintf(dst, dstlen, "%.*s", n, buf); + } else if (e <= -width) { + n = (int) mg_dtoa(buf, sizeof(buf), saved / mul, width); + // printf(" --> %.*g %d [%.*s]\n", 10, d / mul, e, n, buf); + n += addexp(buf + s + n, -e, '-'); + return mg_snprintf(dst, dstlen, "%.*s", n, buf); + } else { + for (i = 0, t = mul; t >= 1.0 && s + n < (int) sizeof(buf); i++) { + int ch = (int) (d / t); + if (n > 0 || ch > 0) buf[s + n++] = (char) (ch + '0'); + d -= ch * t; + t /= 10.0; + } + // printf(" --> [%g] -> %g %g (%d) [%.*s]\n", saved, d, t, n, s + n, buf); + if (n == 0) buf[s++] = '0'; + while (t >= 1.0 && n + s < (int) sizeof(buf)) buf[n++] = '0', t /= 10.0; + if (s + n < (int) sizeof(buf)) buf[n + s++] = '.'; + // printf(" 1--> [%g] -> [%.*s]\n", saved, s + n, buf); + for (i = 0, t = 0.1; s + n < (int) sizeof(buf) && n < width; i++) { + int ch = (int) (d / t); + buf[s + n++] = (char) (ch + '0'); + d -= ch * t; + t /= 10.0; + } + } + while (n > 0 && buf[s + n - 1] == '0') n--; // Trim trailing zeros + if (n > 0 && buf[s + n - 1] == '.') n--; // Trim trailing dot + buf[s + n] = '\0'; + return mg_snprintf(dst, dstlen, "%s", buf); +} + #ifdef MG_ENABLE_LINES #line 1 "src/dns.c" #endif @@ -407,6 +546,228 @@ void mg_error(struct mg_connection *c, const char *fmt, ...) { if (buf != mem) free(buf); } +#ifdef MG_ENABLE_LINES +#line 1 "src/fmt.c" +#endif + + + +size_t mg_rprintf(void (*out)(char, void *), void *ptr, const char *fmt, ...) { + size_t len = 0; + va_list ap; + va_start(ap, fmt); + len = mg_vrprintf(out, ptr, fmt, &ap); + va_end(ap); + return len; +} + +static void mg_putchar_iobuf(char ch, void *param) { + struct mg_iobuf *io = (struct mg_iobuf *) param; + if (io->len < io->size) io->buf[io->len++] = (uint8_t) ch; +} + +void mg_putchar_stralloc(char ch, void *param) { + char *s, *buf = *(char **) param; + size_t len = buf == NULL ? 0 : strlen(buf), chunksize = 256; + size_t new_size = len + 1 + 1 + chunksize; + new_size -= new_size % chunksize; + if ((s = (char *) realloc(buf, new_size)) != NULL) { + s[len] = ch; + s[len + 1] = '\0'; + *(char **) param = s; + } +} + +size_t mg_vsnprintf(char *buf, size_t len, const char *fmt, va_list *ap) { + struct mg_iobuf io = {(uint8_t *) buf, len, 0}; + size_t n = mg_vrprintf(mg_putchar_iobuf, &io, fmt, ap); + if (n < len) buf[n] = '\0'; + return n; +} + +static bool is_digit(int c) { + return c >= '0' && c <= '9'; +} + +size_t mg_lld(char *buf, int64_t val, bool is_signed, bool is_hex) { + const char *letters = "0123456789abcdef"; + uint64_t v = (uint64_t) val; + size_t s = 0, n, i; + if (is_signed && val < 0) buf[s++] = '-', v = (uint64_t) (-val); + // This loop prints a number in reverse order. I guess this is because we + // write numbers from right to left: least significant digit comes last. + // Maybe because we use Arabic numbers, and Arabs write RTL? + if (is_hex) { + for (n = 0; v; v >>= 4) buf[s + n++] = letters[v & 15]; + } else { + for (n = 0; v; v /= 10) buf[s + n++] = letters[v % 10]; + } + // Reverse a string + for (i = 0; i < n / 2; i++) { + char t = buf[s + i]; + buf[s + i] = buf[s + n - i - 1], buf[s + n - i - 1] = t; + } + if (val == 0) buf[n++] = '0'; // Handle special case + return n + s; +} + +static size_t scpy(void (*out)(char, void *), void *ptr, char *buf, + size_t len) { + size_t i = 0; + while (i < len && buf[i] != '\0') out(buf[i++], ptr); + return i; +} + +static char mg_esc(int c, bool esc) { + const char *p, *esc1 = "\b\f\n\r\t\\\"", *esc2 = "bfnrt\\\""; + for (p = esc ? esc1 : esc2; *p != '\0'; p++) { + if (*p == c) return esc ? esc2[p - esc1] : esc1[p - esc2]; + } + return 0; +} + +static char mg_escape(int c) { + return mg_esc(c, true); +} + +static size_t qcpy(void (*out)(char, void *), void *ptr, char *buf, + size_t len) { + size_t i = 0, extra = 2; + out('"', ptr); + for (i = 0; i < len && buf[i] != '\0'; i++) { + char c = mg_escape(buf[i]); + if (c) { + out('\\', ptr), out(c, ptr), extra++; + } else { + out(buf[i], ptr); + } + } + out('"', ptr); + return i + extra; +} + +static size_t bcpy(void (*out)(char, void *), void *ptr, uint8_t *buf, + size_t len) { + size_t i, n = 0; + const char *t = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + out('"', ptr), n++; + for (i = 0; i < len; i += 3) { + uint8_t c1 = buf[i], c2 = i + 1 < len ? buf[i + 1] : 0, + c3 = i + 2 < len ? buf[i + 2] : 0; + char tmp[4] = {t[c1 >> 2], t[(c1 & 3) << 4 | (c2 >> 4)], '=', '='}; + if (i + 1 < len) tmp[2] = t[(c2 & 15) << 2 | (c3 >> 6)]; + if (i + 2 < len) tmp[3] = t[c3 & 63]; + n += scpy(out, ptr, tmp, sizeof(tmp)); + } + out('"', ptr), n++; + return n; +} + +size_t mg_vrprintf(void (*out)(char, void *), void *param, const char *fmt, + va_list *ap) { + size_t i = 0, n = 0; + while (fmt[i] != '\0') { + if (fmt[i] == '%') { + size_t j, k, x = 0, is_long = 0, w = 0 /* width */, pr = ~0U /* prec */; + char pad = ' ', minus = 0, c = fmt[++i]; + if (c == '#') x++, c = fmt[++i]; + if (c == '-') minus++, c = fmt[++i]; + if (c == '0') pad = '0', c = fmt[++i]; + while (is_digit(c)) w *= 10, w += (size_t) (c - '0'), c = fmt[++i]; + if (c == '.') { + c = fmt[++i]; + if (c == '*') { + pr = (size_t) va_arg(*ap, int); + c = fmt[++i]; + } else { + pr = 0; + while (is_digit(c)) pr *= 10, pr += (size_t) (c - '0'), c = fmt[++i]; + } + } + while (c == 'h') c = fmt[++i]; // Treat h and hh as int + if (c == 'l') { + is_long++, c = fmt[++i]; + if (c == 'l') is_long++, c = fmt[++i]; + } + if (c == 'p') x = 1, is_long = 1; + if (c == 'd' || c == 'u' || c == 'x' || c == 'X' || c == 'p' || + c == 'g') { + bool s = (c == 'd'), h = (c == 'x' || c == 'X' || c == 'p'); + char tmp[40]; + size_t xl = x ? 2 : 0; + if (c == 'g' || c == 'f') { + double v = va_arg(*ap, double); + if (pr == ~0U) pr = 6; + k = mg_dtoa(tmp, sizeof(tmp), v, (int) pr); + } else if (is_long == 2) { + int64_t v = va_arg(*ap, int64_t); + k = mg_lld(tmp, v, s, h); + } else if (is_long == 1) { + long v = va_arg(*ap, long); + k = mg_lld(tmp, s ? (int64_t) v : (int64_t) (unsigned long) v, s, h); + } else { + int v = va_arg(*ap, int); + k = mg_lld(tmp, s ? (int64_t) v : (int64_t) (unsigned) v, s, h); + } + for (j = 0; j < xl && w > 0; j++) w--; + for (j = 0; pad == ' ' && !minus && k < w && j + k < w; j++) + n += scpy(out, param, &pad, 1); + n += scpy(out, param, (char *) "0x", xl); + for (j = 0; pad == '0' && k < w && j + k < w; j++) + n += scpy(out, param, &pad, 1); + n += scpy(out, param, tmp, k); + for (j = 0; pad == ' ' && minus && k < w && j + k < w; j++) + n += scpy(out, param, &pad, 1); + } else if (c == 'M') { + mg_pm_t f = va_arg(*ap, mg_pm_t); + n += f(out, param, ap); + } else if (c == 'c') { + int ch = va_arg(*ap, int); + out((char) ch, param); + n++; + } else if (c == 'H') { + // Print hex-encoded double-quoted string + size_t bl = (size_t) va_arg(*ap, int); + uint8_t *p = va_arg(*ap, uint8_t *), dquote = '"'; + const char *hex = "0123456789abcdef"; + n += scpy(out, param, (char *) &dquote, 1); + for (j = 0; j < bl; j++) { + n += scpy(out, param, (char *) &hex[(p[j] >> 4) & 15], 1); + n += scpy(out, param, (char *) &hex[p[j] & 15], 1); + } + n += scpy(out, param, (char *) &dquote, 1); + } else if (c == 'V') { + // Print base64-encoded double-quoted string + size_t len = (size_t) va_arg(*ap, int); + uint8_t *buf = va_arg(*ap, uint8_t *); + n += bcpy(out, param, buf, len); + } else if (c == 's' || c == 'Q') { + char *p = va_arg(*ap, char *); + size_t (*f)(void (*)(char, void *), void *, char *, size_t) = + c == 's' ? scpy : qcpy; + if (pr == ~0U) pr = p == NULL ? 0 : strlen(p); + for (j = 0; !minus && pr < w && j + pr < w; j++) + n += f(out, param, &pad, 1); + n += f(out, param, p, pr); + for (j = 0; minus && pr < w && j + pr < w; j++) + n += f(out, param, &pad, 1); + } else if (c == '%') { + out('%', param); + n++; + } else { + out('%', param); + out(c, param); + n += 2; + } + i++; + } else { + out(fmt[i], param), n++, i++; + } + } + return n; +} + #ifdef MG_ENABLE_LINES #line 1 "src/fs.c" #endif @@ -4230,10 +4591,6 @@ const char *mg_strstr(const struct mg_str haystack, return NULL; } -static bool is_digit(int c) { - return c >= '0' && c <= '9'; -} - static bool is_space(int c) { return c == ' ' || c == '\r' || c == '\n' || c == '\t'; } @@ -4419,321 +4776,6 @@ int64_t mg_to64(struct mg_str str) { return result * neg; } -size_t mg_lld(char *buf, int64_t val, bool is_signed, bool is_hex) { - const char *letters = "0123456789abcdef"; - uint64_t v = (uint64_t) val; - size_t s = 0, n, i; - if (is_signed && val < 0) buf[s++] = '-', v = (uint64_t) (-val); - // This loop prints a number in reverse order. I guess this is because we - // write numbers from right to left: least significant digit comes last. - // Maybe because we use Arabic numbers, and Arabs write RTL? - if (is_hex) { - for (n = 0; v; v >>= 4) buf[s + n++] = letters[v & 15]; - } else { - for (n = 0; v; v /= 10) buf[s + n++] = letters[v % 10]; - } - // Reverse a string - for (i = 0; i < n / 2; i++) { - char t = buf[s + i]; - buf[s + i] = buf[s + n - i - 1], buf[s + n - i - 1] = t; - } - if (val == 0) buf[n++] = '0'; // Handle special case - return n + s; -} - -static size_t mg_copys(char *buf, size_t len, size_t n, char *p, size_t k) { - size_t j = 0; - for (j = 0; j < k && p[j]; j++) - if (j + n < len) buf[n + j] = p[j]; - return j; -} - -static char mg_esc(int c, bool esc) { - const char *p, *esc1 = "\b\f\n\r\t\\\"", *esc2 = "bfnrt\\\""; - for (p = esc ? esc1 : esc2; *p != '\0'; p++) { - if (*p == c) return esc ? esc2[p - esc1] : esc1[p - esc2]; - } - return 0; -} - -static char mg_escape(int c) { - return mg_esc(c, true); -} - -static size_t mg_copyq(char *buf, size_t len, size_t n, char *p, size_t k) { - size_t j = 0, extra = 2; - if (n < len) buf[n++] = '"'; - for (j = 0; j < k && p[j]; j++) { - char c = mg_escape(p[j]); - if (c) { - if (j + n < len) buf[n + j] = '\\'; - n++; - extra++; - if (j + n < len) buf[n + j] = c; - } else { - if (j + n < len) buf[n + j] = p[j]; - } - } - if (j + n < len) buf[n + j] = '"'; - return j + extra; -} - -// %M specifier printer function -typedef size_t (*mg_spfn_t)(char *, size_t, va_list *); - -size_t mg_vsnprintf(char *buf, size_t len, const char *fmt, va_list *ap) { - size_t i = 0, n = 0; - while (fmt[i] != '\0') { - if (fmt[i] == '%') { - size_t j, k, x = 0, is_long = 0, w = 0 /* width */, pr = ~0U /* prec */; - char pad = ' ', minus = 0, c = fmt[++i]; - if (c == '#') x++, c = fmt[++i]; - if (c == '-') minus++, c = fmt[++i]; - if (c == '0') pad = '0', c = fmt[++i]; - while (is_digit(c)) w *= 10, w += (size_t) (c - '0'), c = fmt[++i]; - if (c == '.') { - c = fmt[++i]; - if (c == '*') { - pr = (size_t) va_arg(*ap, int); - c = fmt[++i]; - } else { - pr = 0; - while (is_digit(c)) pr *= 10, pr += (size_t) (c - '0'), c = fmt[++i]; - } - } - while (c == 'h') c = fmt[++i]; // Treat h and hh as int - if (c == 'l') { - is_long++, c = fmt[++i]; - if (c == 'l') is_long++, c = fmt[++i]; - } - if (c == 'p') x = 1, is_long = 1; - if (c == 'd' || c == 'u' || c == 'x' || c == 'X' || c == 'p' || - c == 'g') { - bool s = (c == 'd'), h = (c == 'x' || c == 'X' || c == 'p'); - char tmp[40]; - size_t xl = x ? 2 : 0; - if (c == 'g' || c == 'f') { - double v = va_arg(*ap, double); - if (pr == ~0U) pr = 6; - k = mg_dtoa(tmp, sizeof(tmp), v, (int) pr); - } else if (is_long == 2) { - int64_t v = va_arg(*ap, int64_t); - k = mg_lld(tmp, v, s, h); - } else if (is_long == 1) { - long v = va_arg(*ap, long); - k = mg_lld(tmp, s ? (int64_t) v : (int64_t) (unsigned long) v, s, h); - } else { - int v = va_arg(*ap, int); - k = mg_lld(tmp, s ? (int64_t) v : (int64_t) (unsigned) v, s, h); - } - for (j = 0; j < xl && w > 0; j++) w--; - for (j = 0; pad == ' ' && !minus && k < w && j + k < w; j++) - n += mg_copys(buf, len, n, &pad, 1); - n += mg_copys(buf, len, n, (char *) "0x", xl); - for (j = 0; pad == '0' && k < w && j + k < w; j++) - n += mg_copys(buf, len, n, &pad, 1); - n += mg_copys(buf, len, n, tmp, k); - for (j = 0; pad == ' ' && minus && k < w && j + k < w; j++) - n += mg_copys(buf, len, n, &pad, 1); - } else if (c == 'M') { - char *dst = buf ? buf + n : NULL; - size_t dstlen = n < len ? len - n : 0; - mg_spfn_t fn = va_arg(*ap, mg_spfn_t); - n += fn(dst, dstlen, ap); - } else if (c == 'c') { - int p = va_arg(*ap, int); - if (n < len) buf[n] = (char) p; - n++; - } else if (c == 'H') { - // Print hex-encoded double-quoted string - size_t bl = (size_t) va_arg(*ap, int); - uint8_t *p = va_arg(*ap, uint8_t *), dquote = '"'; - const char *hex = "0123456789abcdef"; - n += mg_copys(buf, len, n, (char *) &dquote, 1); - for (j = 0; j < bl; j++) { - n += mg_copys(buf, len, n, (char *) &hex[(p[j] >> 4) & 15], 1); - n += mg_copys(buf, len, n, (char *) &hex[p[j] & 15], 1); - } - n += mg_copys(buf, len, n, (char *) &dquote, 1); - } else if (c == 'V') { - // Print base64-encoded double-quoted string - size_t bl = (size_t) va_arg(*ap, int); - uint8_t *p = va_arg(*ap, uint8_t *), dquote = '"'; - const char *t = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - n += mg_copys(buf, len, n, (char *) &dquote, 1); - for (j = 0; j < bl; j += 3) { - uint8_t c1 = p[j], c2 = j + 1 < bl ? p[j + 1] : 0, - c3 = j + 2 < bl ? p[j + 2] : 0; - char tmp[4] = {t[c1 >> 2], t[(c1 & 3) << 4 | (c2 >> 4)], '=', '='}; - if (j + 1 < bl) tmp[2] = t[(c2 & 15) << 2 | (c3 >> 6)]; - if (j + 2 < bl) tmp[3] = t[c3 & 63]; - n += mg_copys(buf, len, n, tmp, sizeof(tmp)); - } - n += mg_copys(buf, len, n, (char *) &dquote, 1); - } else if (c == 's' || c == 'Q') { - char *p = va_arg(*ap, char *); - size_t (*fn)(char *, size_t, size_t, char *, size_t) = - c == 's' ? mg_copys : mg_copyq; - if (pr == ~0U) pr = p == NULL ? 0 : strlen(p); - for (j = 0; !minus && pr < w && j + pr < w; j++) - n += fn(buf, len, n, &pad, 1); - n += fn(buf, len, n, p, pr); - for (j = 0; minus && pr < w && j + pr < w; j++) - n += fn(buf, len, n, &pad, 1); - } else if (c == '%') { - if (n < len) buf[n] = '%'; - n++; - } else { - if (n < len) buf[n] = '%'; - n++; - if (n < len) buf[n] = c; - n++; - } - i++; - } else { - if (n < len) buf[n] = fmt[i]; - n++, i++; - } - } - if (n < len) buf[n] = '\0'; - return n; -} - -double mg_atod(const char *p, int len, int *numlen) { - double d = 0.0; - int i = 0, sign = 1; - - // Sign - if (i < len && *p == '-') { - sign = -1, i++; - } else if (i < len && *p == '+') { - i++; - } - - // Decimal - for (; i < len && is_digit(p[i]); i++) { - d *= 10.0; - d += p[i] - '0'; - } - d *= sign; - - // Fractional - if (i < len && p[i] == '.') { - double frac = 0.0, base = 0.1; - i++; - for (; i < len && is_digit(p[i]); i++) { - frac += base * (p[i] - '0'); - base /= 10.0; - } - d += frac * sign; - } - - // Exponential - if (i < len && (p[i] == 'e' || p[i] == 'E')) { - int j, exp = 0, minus = 0; - i++; - if (i < len && p[i] == '-') minus = 1, i++; - if (i < len && p[i] == '+') i++; - while (i < len && is_digit(p[i]) && exp < 308) - exp = exp * 10 + (p[i++] - '0'); - if (minus) exp = -exp; - for (j = 0; j < exp; j++) d *= 10.0; - for (j = 0; j < -exp; j++) d /= 10.0; - } - - if (numlen != NULL) *numlen = i; - return d; -} - -static int addexp(char *buf, int e, int sign) { - int n = 0; - buf[n++] = 'e'; - buf[n++] = (char) sign; - if (e > 400) return 0; - if (e < 10) buf[n++] = '0'; - if (e >= 100) buf[n++] = (char) (e / 100 + '0'), e -= 100 * (e / 100); - if (e >= 10) buf[n++] = (char) (e / 10 + '0'), e -= 10 * (e / 10); - buf[n++] = (char) (e + '0'); - return n; -} - -static int xisinf(double x) { - union { - double f; - uint64_t u; - } ieee754 = {x}; - return ((unsigned) (ieee754.u >> 32) & 0x7fffffff) == 0x7ff00000 && - ((unsigned) ieee754.u == 0); -} - -static int xisnan(double x) { - union { - double f; - uint64_t u; - } ieee754 = {x}; - return ((unsigned) (ieee754.u >> 32) & 0x7fffffff) + - ((unsigned) ieee754.u != 0) > - 0x7ff00000; -} - -size_t mg_dtoa(char *dst, size_t dstlen, double d, int width) { - char buf[40]; - int i, s = 0, n = 0, e = 0; - double t, mul, saved; - if (d == 0.0) return mg_snprintf(dst, dstlen, "%s", "0"); - if (xisinf(d)) return mg_snprintf(dst, dstlen, "%s", d > 0 ? "inf" : "-inf"); - if (xisnan(d)) return mg_snprintf(dst, dstlen, "%s", "nan"); - if (d < 0.0) d = -d, buf[s++] = '-'; - - // Round - saved = d; - mul = 1.0; - while (d >= 10.0 && d / mul >= 10.0) mul *= 10.0; - while (d <= 1.0 && d / mul <= 1.0) mul /= 10.0; - for (i = 0, t = mul * 5; i < width; i++) t /= 10.0; - d += t; - // Calculate exponent, and 'mul' for scientific representation - mul = 1.0; - while (d >= 10.0 && d / mul >= 10.0) mul *= 10.0, e++; - while (d < 1.0 && d / mul < 1.0) mul /= 10.0, e--; - // printf(" --> %g %d %g %g\n", saved, e, t, mul); - - if (e >= width) { - n = (int) mg_dtoa(buf, sizeof(buf), saved / mul, width); - // printf(" --> %.*g %d [%.*s]\n", 10, d / t, e, n, buf); - n += addexp(buf + s + n, e, '+'); - return mg_snprintf(dst, dstlen, "%.*s", n, buf); - } else if (e <= -width) { - n = (int) mg_dtoa(buf, sizeof(buf), saved / mul, width); - // printf(" --> %.*g %d [%.*s]\n", 10, d / mul, e, n, buf); - n += addexp(buf + s + n, -e, '-'); - return mg_snprintf(dst, dstlen, "%.*s", n, buf); - } else { - for (i = 0, t = mul; t >= 1.0 && s + n < (int) sizeof(buf); i++) { - int ch = (int) (d / t); - if (n > 0 || ch > 0) buf[s + n++] = (char) (ch + '0'); - d -= ch * t; - t /= 10.0; - } - // printf(" --> [%g] -> %g %g (%d) [%.*s]\n", saved, d, t, n, s + n, buf); - if (n == 0) buf[s++] = '0'; - while (t >= 1.0 && n + s < (int) sizeof(buf)) buf[n++] = '0', t /= 10.0; - if (s + n < (int) sizeof(buf)) buf[n + s++] = '.'; - // printf(" 1--> [%g] -> [%.*s]\n", saved, s + n, buf); - for (i = 0, t = 0.1; s + n < (int) sizeof(buf) && n < width; i++) { - int ch = (int) (d / t); - buf[s + n++] = (char) (ch + '0'); - d -= ch * t; - t /= 10.0; - } - } - while (n > 0 && buf[s + n - 1] == '0') n--; // Trim trailing zeros - if (n > 0 && buf[s + n - 1] == '.') n--; // Trim trailing dot - buf[s + n] = '\0'; - return mg_snprintf(dst, dstlen, "%s", buf); -} - #ifdef MG_ENABLE_LINES #line 1 "src/timer.c" #endif @@ -5090,7 +5132,7 @@ void mg_tls_init(struct mg_connection *c, const struct mg_tls_opts *opts) { SSL_set_verify(tls->ssl, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, NULL); if ((rc = SSL_CTX_load_verify_locations(tls->ctx, opts->ca, NULL)) != 1) { - mg_error(c, "parse(%s): err %d", opts->ca, mg_tls_err(tls, rc)); + mg_error(c, "load('%s') %d err %d", opts->ca, rc, mg_tls_err(tls, rc)); goto fail; } } @@ -5119,9 +5161,9 @@ void mg_tls_init(struct mg_connection *c, const struct mg_tls_opts *opts) { #if OPENSSL_VERSION_NUMBER > 0x10002000L if (opts->srvname.len > 0) { char mem[128], *buf = mem; - size_t len = mg_asprintf(&buf, sizeof(mem), "%.*s", (int) opts->srvname.len, - opts->srvname.ptr); - X509_VERIFY_PARAM_set1_host(SSL_get0_param(tls->ssl), buf, len); + mg_asprintf(&buf, sizeof(mem), "%.*s", (int) opts->srvname.len, + opts->srvname.ptr); + SSL_set1_host(tls->ssl, buf); if (buf != mem) free(buf); } #endif diff --git a/mongoose.h b/mongoose.h index 54628b1b..1bb70329 100644 --- a/mongoose.h +++ b/mongoose.h @@ -715,15 +715,9 @@ bool mg_match(struct mg_str str, struct mg_str pattern, struct mg_str *caps); bool mg_globmatch(const char *pattern, size_t plen, const char *s, size_t n); bool mg_commalist(struct mg_str *s, struct mg_str *k, struct mg_str *v); bool mg_split(struct mg_str *s, struct mg_str *k, struct mg_str *v, char delim); -size_t mg_vsnprintf(char *buf, size_t len, const char *fmt, va_list *ap); -size_t mg_snprintf(char *, size_t, const char *fmt, ...); char *mg_hex(const void *buf, size_t len, char *dst); void mg_unhex(const char *buf, size_t len, unsigned char *to); unsigned long mg_unhexn(const char *s, size_t len); -size_t mg_asprintf(char **, size_t, const char *fmt, ...); -size_t mg_vasprintf(char **buf, size_t size, const char *fmt, va_list ap); -char *mg_mprintf(const char *fmt, ...); -char *mg_vmprintf(const char *fmt, va_list ap); int mg_check_ip_acl(struct mg_str acl, uint32_t remote_ip); int64_t mg_to64(struct mg_str str); uint64_t mg_tou64(struct mg_str str); @@ -731,6 +725,19 @@ size_t mg_lld(char *buf, int64_t val, bool is_signed, bool is_hex); double mg_atod(const char *buf, int len, int *numlen); size_t mg_dtoa(char *buf, size_t len, double d, int width); +typedef void (*mg_pc_t)(char, void *); // Custom putchar +typedef size_t (*mg_pm_t)(mg_pc_t, void *, va_list *); // %M printer +void mg_putchar_stralloc(char ch, void *param); // Print to malloced str + +size_t mg_vrprintf(void (*)(char, void *), void *, const char *fmt, va_list *); +size_t mg_rprintf(void (*fn)(char, void *), void *, const char *fmt, ...); +size_t mg_vsnprintf(char *buf, size_t len, const char *fmt, va_list *ap); +size_t mg_snprintf(char *, size_t, const char *fmt, ...); +size_t mg_asprintf(char **, size_t, const char *fmt, ...); +size_t mg_vasprintf(char **buf, size_t size, const char *fmt, va_list ap); +char *mg_mprintf(const char *fmt, ...); +char *mg_vmprintf(const char *fmt, va_list ap); + diff --git a/src/dbl.c b/src/dbl.c new file mode 100644 index 00000000..9e45dcec --- /dev/null +++ b/src/dbl.c @@ -0,0 +1,135 @@ +#include "str.h" + +double mg_atod(const char *p, int len, int *numlen) { + double d = 0.0; + int i = 0, sign = 1; + + // Sign + if (i < len && *p == '-') { + sign = -1, i++; + } else if (i < len && *p == '+') { + i++; + } + + // Decimal + for (; i < len && p[i] >= '0' && p[i] <= '9'; i++) { + d *= 10.0; + d += p[i] - '0'; + } + d *= sign; + + // Fractional + if (i < len && p[i] == '.') { + double frac = 0.0, base = 0.1; + i++; + for (; i < len && p[i] >= '0' && p[i] <= '9'; i++) { + frac += base * (p[i] - '0'); + base /= 10.0; + } + d += frac * sign; + } + + // Exponential + if (i < len && (p[i] == 'e' || p[i] == 'E')) { + int j, exp = 0, minus = 0; + i++; + if (i < len && p[i] == '-') minus = 1, i++; + if (i < len && p[i] == '+') i++; + while (i < len && p[i] >= '0' && p[i] <= '9' && exp < 308) + exp = exp * 10 + (p[i++] - '0'); + if (minus) exp = -exp; + for (j = 0; j < exp; j++) d *= 10.0; + for (j = 0; j < -exp; j++) d /= 10.0; + } + + if (numlen != NULL) *numlen = i; + return d; +} + +static int addexp(char *buf, int e, int sign) { + int n = 0; + buf[n++] = 'e'; + buf[n++] = (char) sign; + if (e > 400) return 0; + if (e < 10) buf[n++] = '0'; + if (e >= 100) buf[n++] = (char) (e / 100 + '0'), e -= 100 * (e / 100); + if (e >= 10) buf[n++] = (char) (e / 10 + '0'), e -= 10 * (e / 10); + buf[n++] = (char) (e + '0'); + return n; +} + +static int xisinf(double x) { + union { + double f; + uint64_t u; + } ieee754 = {x}; + return ((unsigned) (ieee754.u >> 32) & 0x7fffffff) == 0x7ff00000 && + ((unsigned) ieee754.u == 0); +} + +static int xisnan(double x) { + union { + double f; + uint64_t u; + } ieee754 = {x}; + return ((unsigned) (ieee754.u >> 32) & 0x7fffffff) + + ((unsigned) ieee754.u != 0) > + 0x7ff00000; +} + +size_t mg_dtoa(char *dst, size_t dstlen, double d, int width) { + char buf[40]; + int i, s = 0, n = 0, e = 0; + double t, mul, saved; + if (d == 0.0) return mg_snprintf(dst, dstlen, "%s", "0"); + if (xisinf(d)) return mg_snprintf(dst, dstlen, "%s", d > 0 ? "inf" : "-inf"); + if (xisnan(d)) return mg_snprintf(dst, dstlen, "%s", "nan"); + if (d < 0.0) d = -d, buf[s++] = '-'; + + // Round + saved = d; + mul = 1.0; + while (d >= 10.0 && d / mul >= 10.0) mul *= 10.0; + while (d <= 1.0 && d / mul <= 1.0) mul /= 10.0; + for (i = 0, t = mul * 5; i < width; i++) t /= 10.0; + d += t; + // Calculate exponent, and 'mul' for scientific representation + mul = 1.0; + while (d >= 10.0 && d / mul >= 10.0) mul *= 10.0, e++; + while (d < 1.0 && d / mul < 1.0) mul /= 10.0, e--; + // printf(" --> %g %d %g %g\n", saved, e, t, mul); + + if (e >= width) { + n = (int) mg_dtoa(buf, sizeof(buf), saved / mul, width); + // printf(" --> %.*g %d [%.*s]\n", 10, d / t, e, n, buf); + n += addexp(buf + s + n, e, '+'); + return mg_snprintf(dst, dstlen, "%.*s", n, buf); + } else if (e <= -width) { + n = (int) mg_dtoa(buf, sizeof(buf), saved / mul, width); + // printf(" --> %.*g %d [%.*s]\n", 10, d / mul, e, n, buf); + n += addexp(buf + s + n, -e, '-'); + return mg_snprintf(dst, dstlen, "%.*s", n, buf); + } else { + for (i = 0, t = mul; t >= 1.0 && s + n < (int) sizeof(buf); i++) { + int ch = (int) (d / t); + if (n > 0 || ch > 0) buf[s + n++] = (char) (ch + '0'); + d -= ch * t; + t /= 10.0; + } + // printf(" --> [%g] -> %g %g (%d) [%.*s]\n", saved, d, t, n, s + n, buf); + if (n == 0) buf[s++] = '0'; + while (t >= 1.0 && n + s < (int) sizeof(buf)) buf[n++] = '0', t /= 10.0; + if (s + n < (int) sizeof(buf)) buf[n + s++] = '.'; + // printf(" 1--> [%g] -> [%.*s]\n", saved, s + n, buf); + for (i = 0, t = 0.1; s + n < (int) sizeof(buf) && n < width; i++) { + int ch = (int) (d / t); + buf[s + n++] = (char) (ch + '0'); + d -= ch * t; + t /= 10.0; + } + } + while (n > 0 && buf[s + n - 1] == '0') n--; // Trim trailing zeros + if (n > 0 && buf[s + n - 1] == '.') n--; // Trim trailing dot + buf[s + n] = '\0'; + return mg_snprintf(dst, dstlen, "%s", buf); +} diff --git a/src/fmt.c b/src/fmt.c new file mode 100644 index 00000000..4ec57070 --- /dev/null +++ b/src/fmt.c @@ -0,0 +1,218 @@ +#include "iobuf.h" +#include "str.h" + +size_t mg_rprintf(void (*out)(char, void *), void *ptr, const char *fmt, ...) { + size_t len = 0; + va_list ap; + va_start(ap, fmt); + len = mg_vrprintf(out, ptr, fmt, &ap); + va_end(ap); + return len; +} + +static void mg_putchar_iobuf(char ch, void *param) { + struct mg_iobuf *io = (struct mg_iobuf *) param; + if (io->len < io->size) io->buf[io->len++] = (uint8_t) ch; +} + +void mg_putchar_stralloc(char ch, void *param) { + char *s, *buf = *(char **) param; + size_t len = buf == NULL ? 0 : strlen(buf), chunksize = 256; + size_t new_size = len + 1 + 1 + chunksize; + new_size -= new_size % chunksize; + if ((s = (char *) realloc(buf, new_size)) != NULL) { + s[len] = ch; + s[len + 1] = '\0'; + *(char **) param = s; + } +} + +size_t mg_vsnprintf(char *buf, size_t len, const char *fmt, va_list *ap) { + struct mg_iobuf io = {(uint8_t *) buf, len, 0}; + size_t n = mg_vrprintf(mg_putchar_iobuf, &io, fmt, ap); + if (n < len) buf[n] = '\0'; + return n; +} + +static bool is_digit(int c) { + return c >= '0' && c <= '9'; +} + +size_t mg_lld(char *buf, int64_t val, bool is_signed, bool is_hex) { + const char *letters = "0123456789abcdef"; + uint64_t v = (uint64_t) val; + size_t s = 0, n, i; + if (is_signed && val < 0) buf[s++] = '-', v = (uint64_t) (-val); + // This loop prints a number in reverse order. I guess this is because we + // write numbers from right to left: least significant digit comes last. + // Maybe because we use Arabic numbers, and Arabs write RTL? + if (is_hex) { + for (n = 0; v; v >>= 4) buf[s + n++] = letters[v & 15]; + } else { + for (n = 0; v; v /= 10) buf[s + n++] = letters[v % 10]; + } + // Reverse a string + for (i = 0; i < n / 2; i++) { + char t = buf[s + i]; + buf[s + i] = buf[s + n - i - 1], buf[s + n - i - 1] = t; + } + if (val == 0) buf[n++] = '0'; // Handle special case + return n + s; +} + +static size_t scpy(void (*out)(char, void *), void *ptr, char *buf, + size_t len) { + size_t i = 0; + while (i < len && buf[i] != '\0') out(buf[i++], ptr); + return i; +} + +static char mg_esc(int c, bool esc) { + const char *p, *esc1 = "\b\f\n\r\t\\\"", *esc2 = "bfnrt\\\""; + for (p = esc ? esc1 : esc2; *p != '\0'; p++) { + if (*p == c) return esc ? esc2[p - esc1] : esc1[p - esc2]; + } + return 0; +} + +static char mg_escape(int c) { + return mg_esc(c, true); +} + +static size_t qcpy(void (*out)(char, void *), void *ptr, char *buf, + size_t len) { + size_t i = 0, extra = 2; + out('"', ptr); + for (i = 0; i < len && buf[i] != '\0'; i++) { + char c = mg_escape(buf[i]); + if (c) { + out('\\', ptr), out(c, ptr), extra++; + } else { + out(buf[i], ptr); + } + } + out('"', ptr); + return i + extra; +} + +static size_t bcpy(void (*out)(char, void *), void *ptr, uint8_t *buf, + size_t len) { + size_t i, n = 0; + const char *t = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + out('"', ptr), n++; + for (i = 0; i < len; i += 3) { + uint8_t c1 = buf[i], c2 = i + 1 < len ? buf[i + 1] : 0, + c3 = i + 2 < len ? buf[i + 2] : 0; + char tmp[4] = {t[c1 >> 2], t[(c1 & 3) << 4 | (c2 >> 4)], '=', '='}; + if (i + 1 < len) tmp[2] = t[(c2 & 15) << 2 | (c3 >> 6)]; + if (i + 2 < len) tmp[3] = t[c3 & 63]; + n += scpy(out, ptr, tmp, sizeof(tmp)); + } + out('"', ptr), n++; + return n; +} + +size_t mg_vrprintf(void (*out)(char, void *), void *param, const char *fmt, + va_list *ap) { + size_t i = 0, n = 0; + while (fmt[i] != '\0') { + if (fmt[i] == '%') { + size_t j, k, x = 0, is_long = 0, w = 0 /* width */, pr = ~0U /* prec */; + char pad = ' ', minus = 0, c = fmt[++i]; + if (c == '#') x++, c = fmt[++i]; + if (c == '-') minus++, c = fmt[++i]; + if (c == '0') pad = '0', c = fmt[++i]; + while (is_digit(c)) w *= 10, w += (size_t) (c - '0'), c = fmt[++i]; + if (c == '.') { + c = fmt[++i]; + if (c == '*') { + pr = (size_t) va_arg(*ap, int); + c = fmt[++i]; + } else { + pr = 0; + while (is_digit(c)) pr *= 10, pr += (size_t) (c - '0'), c = fmt[++i]; + } + } + while (c == 'h') c = fmt[++i]; // Treat h and hh as int + if (c == 'l') { + is_long++, c = fmt[++i]; + if (c == 'l') is_long++, c = fmt[++i]; + } + if (c == 'p') x = 1, is_long = 1; + if (c == 'd' || c == 'u' || c == 'x' || c == 'X' || c == 'p' || + c == 'g') { + bool s = (c == 'd'), h = (c == 'x' || c == 'X' || c == 'p'); + char tmp[40]; + size_t xl = x ? 2 : 0; + if (c == 'g' || c == 'f') { + double v = va_arg(*ap, double); + if (pr == ~0U) pr = 6; + k = mg_dtoa(tmp, sizeof(tmp), v, (int) pr); + } else if (is_long == 2) { + int64_t v = va_arg(*ap, int64_t); + k = mg_lld(tmp, v, s, h); + } else if (is_long == 1) { + long v = va_arg(*ap, long); + k = mg_lld(tmp, s ? (int64_t) v : (int64_t) (unsigned long) v, s, h); + } else { + int v = va_arg(*ap, int); + k = mg_lld(tmp, s ? (int64_t) v : (int64_t) (unsigned) v, s, h); + } + for (j = 0; j < xl && w > 0; j++) w--; + for (j = 0; pad == ' ' && !minus && k < w && j + k < w; j++) + n += scpy(out, param, &pad, 1); + n += scpy(out, param, (char *) "0x", xl); + for (j = 0; pad == '0' && k < w && j + k < w; j++) + n += scpy(out, param, &pad, 1); + n += scpy(out, param, tmp, k); + for (j = 0; pad == ' ' && minus && k < w && j + k < w; j++) + n += scpy(out, param, &pad, 1); + } else if (c == 'M') { + mg_pm_t f = va_arg(*ap, mg_pm_t); + n += f(out, param, ap); + } else if (c == 'c') { + int ch = va_arg(*ap, int); + out((char) ch, param); + n++; + } else if (c == 'H') { + // Print hex-encoded double-quoted string + size_t bl = (size_t) va_arg(*ap, int); + uint8_t *p = va_arg(*ap, uint8_t *), dquote = '"'; + const char *hex = "0123456789abcdef"; + n += scpy(out, param, (char *) &dquote, 1); + for (j = 0; j < bl; j++) { + n += scpy(out, param, (char *) &hex[(p[j] >> 4) & 15], 1); + n += scpy(out, param, (char *) &hex[p[j] & 15], 1); + } + n += scpy(out, param, (char *) &dquote, 1); + } else if (c == 'V') { + // Print base64-encoded double-quoted string + size_t len = (size_t) va_arg(*ap, int); + uint8_t *buf = va_arg(*ap, uint8_t *); + n += bcpy(out, param, buf, len); + } else if (c == 's' || c == 'Q') { + char *p = va_arg(*ap, char *); + size_t (*f)(void (*)(char, void *), void *, char *, size_t) = + c == 's' ? scpy : qcpy; + if (pr == ~0U) pr = p == NULL ? 0 : strlen(p); + for (j = 0; !minus && pr < w && j + pr < w; j++) + n += f(out, param, &pad, 1); + n += f(out, param, p, pr); + for (j = 0; minus && pr < w && j + pr < w; j++) + n += f(out, param, &pad, 1); + } else if (c == '%') { + out('%', param); + n++; + } else { + out('%', param); + out(c, param); + n += 2; + } + i++; + } else { + out(fmt[i], param), n++, i++; + } + } + return n; +} diff --git a/src/str.c b/src/str.c index 132b5686..dfc6065e 100644 --- a/src/str.c +++ b/src/str.c @@ -83,10 +83,6 @@ const char *mg_strstr(const struct mg_str haystack, return NULL; } -static bool is_digit(int c) { - return c >= '0' && c <= '9'; -} - static bool is_space(int c) { return c == ' ' || c == '\r' || c == '\n' || c == '\t'; } @@ -271,318 +267,3 @@ int64_t mg_to64(struct mg_str str) { } return result * neg; } - -size_t mg_lld(char *buf, int64_t val, bool is_signed, bool is_hex) { - const char *letters = "0123456789abcdef"; - uint64_t v = (uint64_t) val; - size_t s = 0, n, i; - if (is_signed && val < 0) buf[s++] = '-', v = (uint64_t) (-val); - // This loop prints a number in reverse order. I guess this is because we - // write numbers from right to left: least significant digit comes last. - // Maybe because we use Arabic numbers, and Arabs write RTL? - if (is_hex) { - for (n = 0; v; v >>= 4) buf[s + n++] = letters[v & 15]; - } else { - for (n = 0; v; v /= 10) buf[s + n++] = letters[v % 10]; - } - // Reverse a string - for (i = 0; i < n / 2; i++) { - char t = buf[s + i]; - buf[s + i] = buf[s + n - i - 1], buf[s + n - i - 1] = t; - } - if (val == 0) buf[n++] = '0'; // Handle special case - return n + s; -} - -static size_t mg_copys(char *buf, size_t len, size_t n, char *p, size_t k) { - size_t j = 0; - for (j = 0; j < k && p[j]; j++) - if (j + n < len) buf[n + j] = p[j]; - return j; -} - -static char mg_esc(int c, bool esc) { - const char *p, *esc1 = "\b\f\n\r\t\\\"", *esc2 = "bfnrt\\\""; - for (p = esc ? esc1 : esc2; *p != '\0'; p++) { - if (*p == c) return esc ? esc2[p - esc1] : esc1[p - esc2]; - } - return 0; -} - -static char mg_escape(int c) { - return mg_esc(c, true); -} - -static size_t mg_copyq(char *buf, size_t len, size_t n, char *p, size_t k) { - size_t j = 0, extra = 2; - if (n < len) buf[n++] = '"'; - for (j = 0; j < k && p[j]; j++) { - char c = mg_escape(p[j]); - if (c) { - if (j + n < len) buf[n + j] = '\\'; - n++; - extra++; - if (j + n < len) buf[n + j] = c; - } else { - if (j + n < len) buf[n + j] = p[j]; - } - } - if (j + n < len) buf[n + j] = '"'; - return j + extra; -} - -// %M specifier printer function -typedef size_t (*mg_spfn_t)(char *, size_t, va_list *); - -size_t mg_vsnprintf(char *buf, size_t len, const char *fmt, va_list *ap) { - size_t i = 0, n = 0; - while (fmt[i] != '\0') { - if (fmt[i] == '%') { - size_t j, k, x = 0, is_long = 0, w = 0 /* width */, pr = ~0U /* prec */; - char pad = ' ', minus = 0, c = fmt[++i]; - if (c == '#') x++, c = fmt[++i]; - if (c == '-') minus++, c = fmt[++i]; - if (c == '0') pad = '0', c = fmt[++i]; - while (is_digit(c)) w *= 10, w += (size_t) (c - '0'), c = fmt[++i]; - if (c == '.') { - c = fmt[++i]; - if (c == '*') { - pr = (size_t) va_arg(*ap, int); - c = fmt[++i]; - } else { - pr = 0; - while (is_digit(c)) pr *= 10, pr += (size_t) (c - '0'), c = fmt[++i]; - } - } - while (c == 'h') c = fmt[++i]; // Treat h and hh as int - if (c == 'l') { - is_long++, c = fmt[++i]; - if (c == 'l') is_long++, c = fmt[++i]; - } - if (c == 'p') x = 1, is_long = 1; - if (c == 'd' || c == 'u' || c == 'x' || c == 'X' || c == 'p' || - c == 'g') { - bool s = (c == 'd'), h = (c == 'x' || c == 'X' || c == 'p'); - char tmp[40]; - size_t xl = x ? 2 : 0; - if (c == 'g' || c == 'f') { - double v = va_arg(*ap, double); - if (pr == ~0U) pr = 6; - k = mg_dtoa(tmp, sizeof(tmp), v, (int) pr); - } else if (is_long == 2) { - int64_t v = va_arg(*ap, int64_t); - k = mg_lld(tmp, v, s, h); - } else if (is_long == 1) { - long v = va_arg(*ap, long); - k = mg_lld(tmp, s ? (int64_t) v : (int64_t) (unsigned long) v, s, h); - } else { - int v = va_arg(*ap, int); - k = mg_lld(tmp, s ? (int64_t) v : (int64_t) (unsigned) v, s, h); - } - for (j = 0; j < xl && w > 0; j++) w--; - for (j = 0; pad == ' ' && !minus && k < w && j + k < w; j++) - n += mg_copys(buf, len, n, &pad, 1); - n += mg_copys(buf, len, n, (char *) "0x", xl); - for (j = 0; pad == '0' && k < w && j + k < w; j++) - n += mg_copys(buf, len, n, &pad, 1); - n += mg_copys(buf, len, n, tmp, k); - for (j = 0; pad == ' ' && minus && k < w && j + k < w; j++) - n += mg_copys(buf, len, n, &pad, 1); - } else if (c == 'M') { - char *dst = buf ? buf + n : NULL; - size_t dstlen = n < len ? len - n : 0; - mg_spfn_t fn = va_arg(*ap, mg_spfn_t); - n += fn(dst, dstlen, ap); - } else if (c == 'c') { - int p = va_arg(*ap, int); - if (n < len) buf[n] = (char) p; - n++; - } else if (c == 'H') { - // Print hex-encoded double-quoted string - size_t bl = (size_t) va_arg(*ap, int); - uint8_t *p = va_arg(*ap, uint8_t *), dquote = '"'; - const char *hex = "0123456789abcdef"; - n += mg_copys(buf, len, n, (char *) &dquote, 1); - for (j = 0; j < bl; j++) { - n += mg_copys(buf, len, n, (char *) &hex[(p[j] >> 4) & 15], 1); - n += mg_copys(buf, len, n, (char *) &hex[p[j] & 15], 1); - } - n += mg_copys(buf, len, n, (char *) &dquote, 1); - } else if (c == 'V') { - // Print base64-encoded double-quoted string - size_t bl = (size_t) va_arg(*ap, int); - uint8_t *p = va_arg(*ap, uint8_t *), dquote = '"'; - const char *t = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - n += mg_copys(buf, len, n, (char *) &dquote, 1); - for (j = 0; j < bl; j += 3) { - uint8_t c1 = p[j], c2 = j + 1 < bl ? p[j + 1] : 0, - c3 = j + 2 < bl ? p[j + 2] : 0; - char tmp[4] = {t[c1 >> 2], t[(c1 & 3) << 4 | (c2 >> 4)], '=', '='}; - if (j + 1 < bl) tmp[2] = t[(c2 & 15) << 2 | (c3 >> 6)]; - if (j + 2 < bl) tmp[3] = t[c3 & 63]; - n += mg_copys(buf, len, n, tmp, sizeof(tmp)); - } - n += mg_copys(buf, len, n, (char *) &dquote, 1); - } else if (c == 's' || c == 'Q') { - char *p = va_arg(*ap, char *); - size_t (*fn)(char *, size_t, size_t, char *, size_t) = - c == 's' ? mg_copys : mg_copyq; - if (pr == ~0U) pr = p == NULL ? 0 : strlen(p); - for (j = 0; !minus && pr < w && j + pr < w; j++) - n += fn(buf, len, n, &pad, 1); - n += fn(buf, len, n, p, pr); - for (j = 0; minus && pr < w && j + pr < w; j++) - n += fn(buf, len, n, &pad, 1); - } else if (c == '%') { - if (n < len) buf[n] = '%'; - n++; - } else { - if (n < len) buf[n] = '%'; - n++; - if (n < len) buf[n] = c; - n++; - } - i++; - } else { - if (n < len) buf[n] = fmt[i]; - n++, i++; - } - } - if (n < len) buf[n] = '\0'; - return n; -} - -double mg_atod(const char *p, int len, int *numlen) { - double d = 0.0; - int i = 0, sign = 1; - - // Sign - if (i < len && *p == '-') { - sign = -1, i++; - } else if (i < len && *p == '+') { - i++; - } - - // Decimal - for (; i < len && is_digit(p[i]); i++) { - d *= 10.0; - d += p[i] - '0'; - } - d *= sign; - - // Fractional - if (i < len && p[i] == '.') { - double frac = 0.0, base = 0.1; - i++; - for (; i < len && is_digit(p[i]); i++) { - frac += base * (p[i] - '0'); - base /= 10.0; - } - d += frac * sign; - } - - // Exponential - if (i < len && (p[i] == 'e' || p[i] == 'E')) { - int j, exp = 0, minus = 0; - i++; - if (i < len && p[i] == '-') minus = 1, i++; - if (i < len && p[i] == '+') i++; - while (i < len && is_digit(p[i]) && exp < 308) - exp = exp * 10 + (p[i++] - '0'); - if (minus) exp = -exp; - for (j = 0; j < exp; j++) d *= 10.0; - for (j = 0; j < -exp; j++) d /= 10.0; - } - - if (numlen != NULL) *numlen = i; - return d; -} - -static int addexp(char *buf, int e, int sign) { - int n = 0; - buf[n++] = 'e'; - buf[n++] = (char) sign; - if (e > 400) return 0; - if (e < 10) buf[n++] = '0'; - if (e >= 100) buf[n++] = (char) (e / 100 + '0'), e -= 100 * (e / 100); - if (e >= 10) buf[n++] = (char) (e / 10 + '0'), e -= 10 * (e / 10); - buf[n++] = (char) (e + '0'); - return n; -} - -static int xisinf(double x) { - union { - double f; - uint64_t u; - } ieee754 = {x}; - return ((unsigned) (ieee754.u >> 32) & 0x7fffffff) == 0x7ff00000 && - ((unsigned) ieee754.u == 0); -} - -static int xisnan(double x) { - union { - double f; - uint64_t u; - } ieee754 = {x}; - return ((unsigned) (ieee754.u >> 32) & 0x7fffffff) + - ((unsigned) ieee754.u != 0) > - 0x7ff00000; -} - -size_t mg_dtoa(char *dst, size_t dstlen, double d, int width) { - char buf[40]; - int i, s = 0, n = 0, e = 0; - double t, mul, saved; - if (d == 0.0) return mg_snprintf(dst, dstlen, "%s", "0"); - if (xisinf(d)) return mg_snprintf(dst, dstlen, "%s", d > 0 ? "inf" : "-inf"); - if (xisnan(d)) return mg_snprintf(dst, dstlen, "%s", "nan"); - if (d < 0.0) d = -d, buf[s++] = '-'; - - // Round - saved = d; - mul = 1.0; - while (d >= 10.0 && d / mul >= 10.0) mul *= 10.0; - while (d <= 1.0 && d / mul <= 1.0) mul /= 10.0; - for (i = 0, t = mul * 5; i < width; i++) t /= 10.0; - d += t; - // Calculate exponent, and 'mul' for scientific representation - mul = 1.0; - while (d >= 10.0 && d / mul >= 10.0) mul *= 10.0, e++; - while (d < 1.0 && d / mul < 1.0) mul /= 10.0, e--; - // printf(" --> %g %d %g %g\n", saved, e, t, mul); - - if (e >= width) { - n = (int) mg_dtoa(buf, sizeof(buf), saved / mul, width); - // printf(" --> %.*g %d [%.*s]\n", 10, d / t, e, n, buf); - n += addexp(buf + s + n, e, '+'); - return mg_snprintf(dst, dstlen, "%.*s", n, buf); - } else if (e <= -width) { - n = (int) mg_dtoa(buf, sizeof(buf), saved / mul, width); - // printf(" --> %.*g %d [%.*s]\n", 10, d / mul, e, n, buf); - n += addexp(buf + s + n, -e, '-'); - return mg_snprintf(dst, dstlen, "%.*s", n, buf); - } else { - for (i = 0, t = mul; t >= 1.0 && s + n < (int) sizeof(buf); i++) { - int ch = (int) (d / t); - if (n > 0 || ch > 0) buf[s + n++] = (char) (ch + '0'); - d -= ch * t; - t /= 10.0; - } - // printf(" --> [%g] -> %g %g (%d) [%.*s]\n", saved, d, t, n, s + n, buf); - if (n == 0) buf[s++] = '0'; - while (t >= 1.0 && n + s < (int) sizeof(buf)) buf[n++] = '0', t /= 10.0; - if (s + n < (int) sizeof(buf)) buf[n + s++] = '.'; - // printf(" 1--> [%g] -> [%.*s]\n", saved, s + n, buf); - for (i = 0, t = 0.1; s + n < (int) sizeof(buf) && n < width; i++) { - int ch = (int) (d / t); - buf[s + n++] = (char) (ch + '0'); - d -= ch * t; - t /= 10.0; - } - } - while (n > 0 && buf[s + n - 1] == '0') n--; // Trim trailing zeros - if (n > 0 && buf[s + n - 1] == '.') n--; // Trim trailing dot - buf[s + n] = '\0'; - return mg_snprintf(dst, dstlen, "%s", buf); -} diff --git a/src/str.h b/src/str.h index a35778bc..aecece68 100644 --- a/src/str.h +++ b/src/str.h @@ -31,18 +31,25 @@ bool mg_match(struct mg_str str, struct mg_str pattern, struct mg_str *caps); bool mg_globmatch(const char *pattern, size_t plen, const char *s, size_t n); bool mg_commalist(struct mg_str *s, struct mg_str *k, struct mg_str *v); bool mg_split(struct mg_str *s, struct mg_str *k, struct mg_str *v, char delim); -size_t mg_vsnprintf(char *buf, size_t len, const char *fmt, va_list *ap); -size_t mg_snprintf(char *, size_t, const char *fmt, ...); char *mg_hex(const void *buf, size_t len, char *dst); void mg_unhex(const char *buf, size_t len, unsigned char *to); unsigned long mg_unhexn(const char *s, size_t len); -size_t mg_asprintf(char **, size_t, const char *fmt, ...); -size_t mg_vasprintf(char **buf, size_t size, const char *fmt, va_list ap); -char *mg_mprintf(const char *fmt, ...); -char *mg_vmprintf(const char *fmt, va_list ap); int mg_check_ip_acl(struct mg_str acl, uint32_t remote_ip); int64_t mg_to64(struct mg_str str); uint64_t mg_tou64(struct mg_str str); size_t mg_lld(char *buf, int64_t val, bool is_signed, bool is_hex); double mg_atod(const char *buf, int len, int *numlen); size_t mg_dtoa(char *buf, size_t len, double d, int width); + +typedef void (*mg_pc_t)(char, void *); // Custom putchar +typedef size_t (*mg_pm_t)(mg_pc_t, void *, va_list *); // %M printer +void mg_putchar_stralloc(char ch, void *param); // Print to malloced str + +size_t mg_vrprintf(void (*)(char, void *), void *, const char *fmt, va_list *); +size_t mg_rprintf(void (*fn)(char, void *), void *, const char *fmt, ...); +size_t mg_vsnprintf(char *buf, size_t len, const char *fmt, va_list *ap); +size_t mg_snprintf(char *, size_t, const char *fmt, ...); +size_t mg_asprintf(char **, size_t, const char *fmt, ...); +size_t mg_vasprintf(char **buf, size_t size, const char *fmt, va_list ap); +char *mg_mprintf(const char *fmt, ...); +char *mg_vmprintf(const char *fmt, va_list ap); diff --git a/test/unit_test.c b/test/unit_test.c index 1c7c55d6..8b48cb9a 100644 --- a/test/unit_test.c +++ b/test/unit_test.c @@ -1374,17 +1374,16 @@ static bool sccmp(const char *s1, const char *s2, int expected) { return n1 == expected; } -static size_t pf1(char *buf, size_t len, va_list *ap) { +static size_t pf1(void (*out)(char, void *), void *ptr, va_list *ap) { int a = va_arg(*ap, int); int b = va_arg(*ap, int); - return mg_snprintf(buf, len, "%d", a + b); + return mg_rprintf(out, ptr, "%d", a + b); } -static size_t pf2(char *buf, size_t len, va_list *ap) { +static size_t pf2(void (*out)(char, void *), void *ptr, va_list *ap) { int cnt = va_arg(*ap, int); size_t n = 0; - while (cnt-- > 0) - n += mg_snprintf(buf ? buf + n : 0, n < len ? len - n : 0, "%d", cnt); + while (cnt-- > 0) n += mg_rprintf(out, ptr, "%d", cnt); return n; } @@ -1491,7 +1490,13 @@ static void test_str(void) { free(p); p = mg_mprintf("[%M,%d]", pf2, 10, 7); - // printf("-> %s\n", p); + ASSERT(strcmp(p, "[9876543210,7]") == 0); + free(p); + + p = mg_mprintf("[%M", pf2, 10); + mg_rprintf(mg_putchar_stralloc, &p, ","); + mg_rprintf(mg_putchar_stralloc, &p, "%d]", 7); + printf("-> %s\n", p); ASSERT(strcmp(p, "[9876543210,7]") == 0); free(p); }