From 58b47746dfec6b79a2ffe43abe21852a195c4d99 Mon Sep 17 00:00:00 2001 From: Hokori Date: Mon, 2 Nov 2026 19:12:18 +0800 Subject: [PATCH] Add HImage application icon and Windows packaging resources --- Cargo.lock | 41 ++++ Cargo.toml | 3 + README.md | 12 ++ assets/icon.ico | Bin 0 -> 45824 bytes assets/icon.png | Bin 0 -> 61474 bytes assets/icon.svg | 14 ++ build.rs | 16 ++ examples/generate_icon.rs | 48 +++++ licenses/DEPENDENCIES.md | 8 + licenses/memchr-2.8.3/COPYING | 3 + licenses/memchr-2.8.3/LICENSE-MIT | 21 ++ licenses/memchr-2.8.3/UNLICENSE | 24 +++ licenses/serde_spanned-1.1.2/LICENSE-APACHE | 202 ++++++++++++++++++ licenses/serde_spanned-1.1.2/LICENSE-MIT | 19 ++ licenses/toml-1.1.8+spec-1.1.0/LICENSE-APACHE | 202 ++++++++++++++++++ licenses/toml-1.1.8+spec-1.1.0/LICENSE-MIT | 19 ++ .../LICENSE-APACHE | 202 ++++++++++++++++++ .../LICENSE-MIT | 19 ++ .../LICENSE-APACHE | 202 ++++++++++++++++++ .../toml_parser-1.1.5+spec-1.1.0/LICENSE-MIT | 19 ++ .../LICENSE-APACHE | 202 ++++++++++++++++++ .../toml_writer-1.1.3+spec-1.1.0/LICENSE-MIT | 19 ++ licenses/winnow-1.0.4/LICENSE-MIT | 18 ++ licenses/winresource-0.1.34/LICENSE | 25 +++ platform/windows/installer.iss | 1 + scripts/package.ps1 | 7 + src/main.rs | 11 +- 27 files changed, 1356 insertions(+), 1 deletion(-) create mode 100644 assets/icon.ico create mode 100644 assets/icon.png create mode 100644 assets/icon.svg create mode 100644 build.rs create mode 100644 examples/generate_icon.rs create mode 100644 licenses/memchr-2.8.3/COPYING create mode 100644 licenses/memchr-2.8.3/LICENSE-MIT create mode 100644 licenses/memchr-2.8.3/UNLICENSE create mode 100644 licenses/serde_spanned-1.1.2/LICENSE-APACHE create mode 100644 licenses/serde_spanned-1.1.2/LICENSE-MIT create mode 100644 licenses/toml-1.1.8+spec-1.1.0/LICENSE-APACHE create mode 100644 licenses/toml-1.1.8+spec-1.1.0/LICENSE-MIT create mode 100644 licenses/toml_datetime-1.1.2+spec-1.1.0/LICENSE-APACHE create mode 100644 licenses/toml_datetime-1.1.2+spec-1.1.0/LICENSE-MIT create mode 100644 licenses/toml_parser-1.1.5+spec-1.1.0/LICENSE-APACHE create mode 100644 licenses/toml_parser-1.1.5+spec-1.1.0/LICENSE-MIT create mode 100644 licenses/toml_writer-1.1.3+spec-1.1.0/LICENSE-APACHE create mode 100644 licenses/toml_writer-1.1.3+spec-1.1.0/LICENSE-MIT create mode 100644 licenses/winnow-1.0.4/LICENSE-MIT create mode 100644 licenses/winresource-0.1.34/LICENSE diff --git a/Cargo.lock b/Cargo.lock index fe2d8b7..5d522d8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1214,6 +1214,7 @@ dependencies = [ "natord", "resvg", "rfd", + "winresource", ] [[package]] @@ -2540,6 +2541,15 @@ dependencies = [ "syn 3.0.9", ] +[[package]] +name = "serde_spanned" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7523beb55eece201a2356bee0bbca0d1ab466c14c07703b2e0ee6d42cb0c2c" +dependencies = [ + "serde_core", +] + [[package]] name = "shlex" version = "2.0.1" @@ -2883,6 +2893,21 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "toml" +version = "1.1.8+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20489e00e4d8741d6be680764cc12e270655e375a20d1011e844a9c3379e678d" +dependencies = [ + "indexmap", + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow", +] + [[package]] name = "toml_datetime" version = "1.1.2+spec-1.1.0" @@ -2913,6 +2938,12 @@ dependencies = [ "winnow", ] +[[package]] +name = "toml_writer" +version = "1.1.3+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06bdbd8cfc056b8d2e2e85f29b56a3bdbecb527cef81eb39e3e7b98af4652770" + [[package]] name = "tracing" version = "0.1.44" @@ -3696,6 +3727,16 @@ dependencies = [ "memchr", ] +[[package]] +name = "winresource" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bc6d36480b829272a5bdabf08e6dca8004761c1da7e35efef800540c66221b" +dependencies = [ + "toml", + "version_check", +] + [[package]] name = "wit-bindgen" version = "0.57.1" diff --git a/Cargo.toml b/Cargo.toml index a798b16..59bdb31 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,3 +12,6 @@ natord = "1" resvg = "0.45" gif = "0.13" +[target.'cfg(windows)'.build-dependencies] +winresource = "0.1" + diff --git a/README.md b/README.md index 6edbb88..00a1fbd 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,17 @@ # HImage +![HImage 应用图标](assets/icon.png) + +应用图标源文件为 `assets/icon.svg`,PNG 用于窗口图标,多尺寸 ICO 用于 Windows EXE 和安装器。修改 SVG 后,在 PowerShell 中执行以下命令重新生成: + +```powershell +$env:HIMAGE_GENERATE_ICON = '1' +cargo run --example generate_icon +Remove-Item Env:HIMAGE_GENERATE_ICON +``` + +随后正常构建即可将图标嵌入程序。`build.rs` 仅在 Windows 构建时编译图标资源。 + HImage 是一款使用 Rust、egui/eframe 和 wgpu 构建的桌面图片浏览器。当前首版面向 Windows 10/11 x64。核心目录、解码和视图逻辑不依赖 Windows API。 ## 功能 diff --git a/assets/icon.ico b/assets/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..25fcee23955d82fd8dfe4cb1c8c8d790e96b8989 GIT binary patch literal 45824 zcmcG12|!a<_VlBqegR-bSEZ+mj~@%Kg9 z9-cEg4Z90Ii#e0HG~|J(YfUP@t$@Gdi0D`bW!6%Di@Op@xQXsY|8r-ZM6sqa=fmV!G!^dJ8M7SXY=;!v3Wj>i1(#9NWCx?$<+&wGpYaf$*yGi`UDlYeQ5e`adE zDp%ROwqL3lbnh(IhqKb#Bd#8b;`bG(vm~AMtD|?!dd2JPx|3V`S{5i2NzCZ19Fsgv zT}~5Ml_y<4ajkb&{`8|RQm-1Zi)f(csQ78p$;TUMu}6%xWEYpbqqcA9{+Y!q5}9A? z?8}w(+c)+`;wK^o%Y!i?DN8=fV?up{sJ@};n2);jNx1m9qw%XK@;BjcM%SgJHtz|w zSv{&m#itMIG^HQRyC1_*A7f{>XYZs|u-d+V5`Oh~TjTV032y}FS=s*g=j4;3wM!*$ zTuNjfIMq{9bL59b>xw$49{IAn@ZdD%-~CDtkm`j$yi%iTDAa#(cKwda&gq}RuYW$0 zx9H3o*~9ct?-f1cE{W1CxhVZ$dQ`__Ux~&wy01^*zca$c-K$16Y0eJvXqD?a-88mw zS`9hwytC<^Xs~H}*ZnXqHS}583+EK~Lt@$?;vkQ8`@r$7gQJ7vb44eaKR&K|S%JAH zw z3vYAwzJxiEI5-i^*%Y;`AHzn@_!G<-$Qrn!9O#!`D|(HxaBV|G3xC2IMq&W|w3?r& z{(JP9G=4{c5C7_C>>y)N7zR5_mU5_Wus6&rpTwm~qtb3vGz?TritJp3*3aHi?o|2J zV=}KArv#}NCp0026dGzH^Kwd-ns!w`*#)~*HaZAPH}bD|vg^obFeiI7Sg1XRi^k^I zdo5}IF*lX==Gi1KVP4frTCa;&{v^&t2d7Ys_^emjH0P<>uU&l{U|l<^ zTLtVM&Z45r4x9^xy$jjh$8uy+>2zCTqL`yH6!u;V>Ay-D+|XI5XN5-IKgAxrG7odA z7vDZ#G*!}9FDR=Plox0tbmM7#E5vmn#U4y^0@ES=mGM}DwNo7AS3OcioQaNRhp ztw?IHsrCO5_a_wa#(JqdM$B=mQH|o=Y?q8tbky^8lb=mnYie#?(3O~a{ie<2lKrpD z6^4~Cn5psA-mM>My3br*6KAElS+?#U6$jJ$zowiH ze-n$oX)K=RUDQ{RFhVJ*9p7cU3XYhJ%`lAN*q{ z=d%sp|8@O@YOyikqW(6$95!1za>JQdY-$=b?ljZ7ZtqQ%F`0kc{^^|gM~|Ng6zmUC z4(9$fbppKFrk>AEYwPIKzDedT9|_!4sJ!JL|H;GFvY1dBPNcnOYK$=Z0IAk&08$wel!ggDYCoTSzU(^nWLu*!&+ho=7%AVKLzQ1* zJX3K`EXgnRE!I>3vtuK!KAFv`2liDpr$&#?s;6=;l9JtPoJxcaPF%NV8k+WT1#@z} zFt7QBr}@)~%eBi6D($GD*{0KH_x?rzWFQY;8JvaK>-$n=CI>GWV&-}d7o)=C4rK1d zJO?MLP*OYAXNn6(2ujCWMP4njZZ+iOu#4`(lrZ461os+v>ENNfG?Qg~7=Xt(E@#lZ zmkm5%$By8%d@?6{JN%O|NBD{`5_C_5{zSj8vA4V~|K3{iZH40Q5J`_NVI%+R6A>r1_iC^jvOSsW2748TEx6=PwsE4)!gtj%HzkM) zdqjfRwBVHtt2O+Ly=vepDHH?7O>lRDZI^ffJ0_5l9XO#jE@HcZ^m@FrK$11@b;f;* z{k*KXkxeau&vD$)=fbei$cz;9DCnZJS|?RLD7sw*46dfQ-aKVFMjxz;h&OQ_Wv~0! z^9VtAm0;I5`8)4yXXCx$*wlY?omx%v7Q*^VIBu~1daOp}K}B1F8DUGn6Vy-|ZU2)~ zq`ATq5yvnutU53@vpV)vb<=FtKpw`y^d_eS9?8B$X)0Ih&r7t_hWP3tp;T!4xFp!F zX|t$XB_lUwhOF0LQTFZ&4GZh47U-f(zR~@soX2=+dLL>O(ngYu6WKSx{J}(wiq(tF zRLPuxfGn{-pqSFvu#1k5cQ&6(?CM}@d&G~HN@j!9F)=SMY(w@fAP%GF)_QgJ_0Bft z?T@ni7lI6#$AT8Y$lr`0j%REy#Za&~zg9$Rq!OF1ofcTF%rj~>{eq6 z7z72kQ&O+EaCPw65%o5zn-ew{12e$eJdo?q*c9S(jM=|8Vq4$#C~ZTdx)RT%MBfj< z`VT9MlZa0zlSYFGlicVvA$+s%{Tv_Zd48wwy|4w*;b~)ii%k{Tx6|;Nj|$P~l`y9e zy9lSn`YJ72QV`s_qS|wvgUXZDe2JN?4%V;m*4_YSp$eNafLk2WZLb-2u@43`b}w=Y z;D)AryGZ4|NpXt#%gN|(JVoZ6jNVH=$?eLgyLe`Mawu9!J;u>D>~`KcGc`t0ur2h~ z;zj!(I-Ql(OgYQy2r5)9VvQB11YA(7`uJ4Y@e};})h%V`#S0asm@GZ`yPZrb*ZEw1 zptgp>4`yg4pMAIP@|t^d?w_uz(hTNbUUNZ^=)E~K<@lViJL39)i*H38ZabQTObW;X zNr-rx(6e{s5yjb`f0mrfp)tV5hBR`=T$PsmG; zWY!06v-yAoTwfR(8FIAq=g(z79QMjMQ@eG}_M_V~*PdDJie6-XafEnNc~|nZ^5T^% zB-I!y7aM_r43{uWhbgNH9+eW)e9ApBh3f~?T!#6%A+Qic{XAH7@<-girF{O`A$TB@)n;g_($)t;ga@bg?4F{v@PaN`X zzQWc8Ev{ico~G>IR8wDXYm=@oFkczDL+@8~hrM+0FIY`r?BF7Cb5_v;de2XE5|$q9 zu8^jyIoY=wG$Qk}i2m<$3_+dO^xD9)16jTY_yjdo3J-=l%*3eokp$@wf>Mg@3KUPF(R$eb`ZEiMS3 zm&=0HF=?>(p7oKV_Sx24*W^olcD1f7F1!*rGpD5Z4%rRMC&7gFHBL4hDh5s!CewN! zh^XBYRcw4HF^6P3=#)u@4vUBjP2N+4ChmA&U75Bdz)c8 zrtG@3wXyzj0vrsO1Ku1e#&uI{MK7dI81f?{_vP{CB#;armqsad1(Lxf48Z|)D>2hr z)%sdK=qG9k#^Gk)B9}PHJtw0VZlLoqn;J}r9+jq7+8>FSzbYaU*$B4&#OUlwi$$t6 z-|kJ2Vl^0iT))N(lL1Ge7YXk0o>Pfx3|GGfm;rt~&C@Pcu^*XU6%95rT+3`2EgO{s z-=FLdxxqP->@hD@MktmnWgN|e7i8{&OCWm=m{V4;hf{K)90PY8d-eJQ-CG6b(g=K! z|2W16s`Z;O8;(tSWvJY<76XejhYK(4Wf;eXgJsQ2uJW9WUSM1-%eW*yZio3b#k?RPLCEZw;TQ|+^>vR)B*7wxLLGZtbICwY+UoiFH- zYNn}|?T-~M1L@*`qR?K@^z0Vb$4aK*(~A4*`Cn-a`Lq%CDi5yP;`)R=k_*^&2}BDZ zP}*?K;BIkyY|%7Z+eDK&0v}J<(TRi|eJbjiD^}Zz=b_(~QOx#mkXS;!pAB;p={>|% zg)N(u?HySEFO-2<*^{M_6@Az?j#!|u6l6rn; zj{XKHAS^3*#?>4Lp?f;M5Ls#i`V6J}NBZs~l(_r0y1n4{gRo2*A$$z9QfxJQil1`V zYfWO^yuebsZ9p)^o~8_f9}VmCq895+4gB4=?1Df@R2ieO_mG5{@0)IF8p<2*mPH!# z*>Pn0S4jGVvq+<}6Y@xM$wO-VqqDj%X@l7&zXj6{i5p$b<0U3_UtZKg9g2U5#r73+ z>h}^{xPPSZ_9Z83N#HgJq_lT6w|WyIwu1fMp;0b77;KW!^f%BNVg$M76%mjLG zaYX6QM;;#eVRr6pQU52jcMA%em`B{xgFO`QV9Q4cLEJ-G>EV$HY53_r*GZ8O+^nrU z9du)htdcKF)b9N`Wfa{|NRzHqYC59t5*ovWG`cg`4X7@-tzE3| zqThiP%7<3@k!SAgA$Q}DZ48Rzl6-yAkKg+G)-H`!b|U&gS~GhasJu@`EY~jg!pIO( zy0V`&GrBvJU%^6deZ9JJt93CM9@{e*{qf2};I-H`WqL<%JXCbs@BXJAS57bTyz=;3 zl)w*Mq6#}0&PF)BFu92j<6Y$OCsm(#{Jl?Sd^$Y81_Hj1Amn>tkG%d02`!j~Z!GMD z_!Q0P=LuWS@F;AasXSS`wpwRGEGJD5o`KyQ30j7J(~tiwwsgz8m0RDx51)fk;pnWR z-uik!PjN+~eHX$#3-#~82cjQF4#2|yD(A7tSc1F%EKKS-xrB@*S4Bq4ZHp%8vqWdF zZ2jyE{9PS#>qP?Q!cklP_mSVHerJwfKE7uD_W2o^ck{y5#ot^yA!&)Clmki_7+@Bm z#Fm6E`-QwtBCEVRv^2C32seQd&{AGPfeeUE&#Y;=<{2s}rRt~J%L2FQ!68oo3lb^$ zDes%0Em;d|=7fbF_3}EM5_V7Kwf*ASI`qbS)Oz#=C+l+F+PbeR7|8?w%qq-5hRo)D z>>MKrnIPWrCp%V$teyf-=dY$x(bL?a;mDR(m-D8h!SnN^l@k?Gq{v;s@1EtQ*y?8L zVVkExJhYQ8?MYf8r+y|}xwXe1`+IV%_? zB!ymh4@SL3*p@hD0q&;JnKg2Mf!~vKsKvZSo_#X%kyxJq8*^gt?M{$vz4bF4N$e?nZ zO2GV+!8sjv2@t=gft4n>)pPO@jcQDpO+$B!DE_=I;r}|JV(W6nRc*3_?*{gNd9HYo zmtqSSBdp!Ob0WU+TP0qkcvp)dzyRO%j+laZkxO7Z5F&v01McH*fM1Qh8&Qz$;qS=GVraxQ`WpP&-aRrH^KyiwcxEe zN>k{)b@Yx#8GE(oS*~EPTD;=`{;1#g z?Hx-F&AvV{4ud~`fVD1%UoR&-*dMol-iTq8>_6eb;weqI_gs8TYV?Bw{`OCc(~i;S zM>3kfcNYRjMKTk>k3-f1=*>t1MVLo&!^nC}MqVul+v)!>!uRVOgpqWJcz0b`BU9tr z3gYOc!S%>LwQ+(+QVMgVf!pA`GZ0&5mviKoz{$iCco_0Bfx%ua7~^Bimkf4jn)j^~ zk0a6&+INf#ny$DD!8s$r=hKao!4j5$n~I#)PwZukB;aPZbX#;-z})&b$xQ_zZSe@2 zDn6#B=teLGjwuJOxL(P*F|`6CmmsOy!UbcOHW_A~gB;LccX$jL9gcHJ4dW=O1QzC0 z5;$jf$lZ1n=nPgf=)gI@`19MVv;QUmB?94&J#0YMpa2d88mvLQpxEN3`UL!Sp_GBV zZo*a&>vmXPU0!J&$h9nzXUUaZk^F}XLjE}aNL0vtI^o9WGN{tXjK3-OEjjcbuBYl! z#+pN^T;qc52~zOmk11P<_EgLM6WXAq)FwkrD2mr}S*^J|uf6JT6i6igJ$Vb|1bMAP z*rb!$<(I}Igsdl*U5A1ZP(DCM`5@>8&|-?M$g2blHoF`~caj4l5bOc2J}5?X?LLypj%kPf`7~_?avjUS^XOs;3niP7Qxc-XxaS`}}i1LTMlV}6( zw31-HNzDa8a>Km(W=2l}_E+&$(tdstx@s87?IrYO{|{sbzO^S zU0VRFBb9t#dXSFm&US@C4v)2g>;_xU3jVHZD#0-3>qOemm8oyzeZ$Qo+lVX@_rc%#d-ez<2!+6##MAX7@pesSC zT!g76EA{WNzCvr?`DDjq_Etg-Wdu*Z3eFNzL;{ijKzd(GN^$4?UkbeXtNVvSqDW)y z#J>8anf-DNZwA}UUEj89vqgnLyp^4R!dXf6N^oAUw)LzOOUH00-RF|BR4b@KzyrSFI8!(j3xO8iwcTw-Wo%(k1t9X!AKQkssA*@F# z+7uwZ=PJPTp02mn+&dF=?;b=r=FOTLcM>8VOTGl<9qf^A9M4GNO-gXbC#CY$-fd+` z%T63WQ+s)h$J)16XRXoi%rSiXMV1}wHCJ|L`Bk$6J4LV*4j@6wu#-k2t?xzuv7P;7 zHm_`HvHSL;>pa%_-9JI(SLS%B#PYKOH~h#^y78~hI*6>+YPz;D9)lw;SVoKiXxfZu zmjrjk7X5d1S5>dkb(=NsUb5t8F5g<1vHHyRb)ROI&-d1zqr~~LzN!MaRH`xVUYI3+ zTz0oo`i;RF@$SRyzM>)c6OPM9Sis=W-;)t#PDrDi;9RVD^Bs>5nxp7_Gl+wUO)%|E*B{=MkNNYy6g z-k;L-H(;q?1e}FLI9CFL19|=88e;F?+nOn#6$Wewbbw=8b95a%za1c6BF82VzjlZ# zGQrIA(E<=l05v?;o_WJNyE&60@ZRFC9tC3Uh6EKk5`w#aanEA!pL}aY<>^{VuGX;fx>#WCPXh#|wDzpHAV1!pH1uWL{pgWMnA05Qc?bT)QRoVhVbbT<>%g-sB|1 zn<;xPKVkRg$#Y_;=b3nHHh_Z2fm6KQ##fO5Ys*kSyypaCg&sviq@Wsu{bj@uFjlA= zgn1AR!31RPJr0!%FC1i{V%X7uUZUP32c!`W2y{^*cs}}{U7071%S<0qMt!p+PwM66 z1p6b#2(AP$7T@FvW9lnmoKlmLeQL1*9Bu8dI#{Up@X62j=)#wIqz z_Qhj?QI8g3QyHxbJdVO?qmxIZho86K0|^5Lg0r7>|1=yl!9_?9tVIWfK8Bdj5A;Jy zSlxXM)^x4?0tsPtK?2+|8DpIE(vXMo^k~jlv>G>Ldyg#TKlT3G_ROQl5qEA!(-1rX zDs9e5;0Qt-VDLKNabhB162GHfpiUvDi0ZP=r${@f3n{>yUGO-I8fCo?`k+tkWgAxiS82bi` z;;lY)pyPPsjAv>incS3f(|8Fa{T!Sgu7+&SDuGn_JEAN7l>Ythu0vTK4 z1<`TfXKh7?7i`vt%2XuelP>UlN!(=7q%XSD{=fXiwJ}Tmjy8}8n?d%5AnEQ9}!*DWjEH{3bCVk z^WT6NX#4|3~+f1M9h{2yf2@obLfXtU2IF9YHelp+x+dVwv{m#bqNrW-(s-6 zFqOeQUA-BT2dN6vZGYlndIsPm@C!v1IP)wFVE>G=+;X&;_IN6DX@^p2jsxSkBc{|7& zWGC@lq!)6P`};egWTINIACEqOFSnLI9HZ?s-JMmzn*?bU@UgS$R8*fJ*F%uup%0YX z0Eh9Mf!DL?S?X=z6w?7p;w?}ufdhGWOSSgFqW(+}(t;>M>Yjdz7K-E^R!}}Re0Y6jSj-;N2m#Nx4HeO?G{XPl-uK(J3hEt5$7B)tJNW}rHvmcP9- z*tz6)2URHlgM%8Y`Xm|Xoguf$s5D~jiVeUp zK*_JFY=Ctac)~Au;h=W)Bb=}-^_FZvP`TNO;Fv6jBxR>-UOF?!kI-6#x6cS99CjGMG zq$J41`BP*L{)uNcHGM8uwyav&yh?k(pI0f$AAH!L0LFI#^vXk#<{;$p?NvMgL?B>L z?FofL1%`50q*XGIqkp$Ns*r-ZWn9(&fAPB|`m&+V=&a25yr=3LBDL@}ReA<$7Oj z9HVPv<3R4}L;5#ShWl5d@vp7K??l6Hn;V=pXu|Sd9o1PsC8A0{BihHKKK3QU{s$6g z85R^vg8S>rEcL23L+pI)&*%q&37BvKQuymq%peiGM$2D^-y8!GC0N>@0>KR6rNu`BrMQ>FSE^+H>v zyuiWe#lHWl8C83(wj)%w@3q?uiO2K7G2b92{T7)Z^7>DBz& zvpTJ>&ubVGd=Bh^!V%i)PJk!e4CRF=p-d=;;Ohtw?I?(!j;aUU5IBkIq<##puWNkV zoErB!T@K+5t=pMazAWmI9S{PvoK3p%(cs^iP%hF|2zdvK5{rzn64Y`sx<|?Z8={QD zzlb9;*NJY#3YxB?C4H^VhXuyQmt60foin(R@fA`(Lf-Vz*;zvxtNRFj@UJX9g>_V| zP7|1`d3e;|4nAIhA2`pts>C~(ErZIQQUgM8vva)TE>*W8dhr2QMAk*FcZn{xcn8(< zBmA2UUvD5V)bSn%AsuV~wcaD-H;_=EMl z7VGEY;B$aA53A!*-*oM*A$0wP0nJvVp1@Q)?!B$&67v*371$H5p?TDX>@2G_OFwUp z1v^36${M*Ln=<6{;n)4+pS{BB$#W&4@=Ru2!>VxR^~cQAAzN4l$Z_D1&B8@c2p`uO z>+@w)Ob0cZk3Q-tQ6Dtj%Xw5Gm}9Y?Rr(cLx(DI(;{HUj$$e3*L*tVx5ly2C4f4I3 zf&MgAh|lA4gJR3D+mUeFF34&Y@ujHZzPP=Wl?i~eWBJmeUI#4hXYavf_~BtmG|Y(J zV>QtRfx2c}MO3`WFA{)hk#3zR-iFqHhSI|Pa!6>z%SS5Gtd0#%k1xq;yaAP}rhvGH zdS)^=YZ{(MFc9nYz3RG|xPrsHXkC^e{edD00cR zg=$`_YmDavzBQGXL&xX!9-3ob#D5&s*%BboO*Z*@SpCLqgdba7NBk95uZ{9>f$^~D z@pKVB*W}+1XgRN5Veo{no@$j)oP5_&lZJ*?8PgXyiSY{uL1-;1d{Kx$IQi zqQ-fE0y?qGry3I;oqcqt^L}R&vmUmZIv|s%PZjGlya$d;Z=r+63UW5-67d~-5L_=J z7y|5qer1~hq=#_W@SU#CF`o1ub3`hs9xxK^6t?z5(`}<*Qfc#ee4|-QTcAY);4#+q zh+Tl*R)^YL*%Lq&KXl|T%ts(46nXrd;=t7EEy^?Lb+Kdp_r*MuI##Akcr|UA`VzEk}e!_*d_P;;!Bq97$~P5gpVT>5^zSD zmv_;fd7tasi(kcEGlpVPbwZQjqBSfv`Cn^3#{M#~s5}I!Qf2{|h`>rHOL5X4q4kD8 zV?2J>EP@0ris|f@YXgTIWBk}5X7?Oc?@Z-1gtfw70AXPSz$Wu~-z&_cuT_o0{U<}c z54h9&T%ti|Bd?VG1GI+)F1Gz1u$4;1pEePKg4f2+A6*ncgLgKECnRl^Rq z=>v$jtUk9HdOzl~60_LqV*tm7$|pkG5m8GFfFLB$t0fQT?P#WD-`*tApEdc`#{JWQ z(R;Kp=cl};XBvFe`oUhBT5`zh3erbQC1sXyG^ed*Wq3<@V_%pBfhLM`oGb)E#Xhe> zK@CHdpgh3emv=7;QnRfzorr>|tQQk)dE`f0?-ZY`oj9NU6m4(O-o$r?iKJM)z9aP z-t?AKX6e{BAb@!jN-I?cm*^GNp)*)!*xa=xuGV9qQeWjl5t0-@^dZipQg6#nqzzoA zoC#mhUvQ3U=RCMtlRC)`PFr?b>J`k=Y+Q_XAeaj*f}r&bM`4ozvR&YQn1W;S`r-rD z71xwPALBjFnz|Yev^B!tS+f0?Eut_bc{Nl&ZPp)e=lycMXcRt)!jlwmKiBU<&^fTv zb~hEOtUpvF=K_JC=E3=AI1?5xY~UqM|H5*lJR3lX#r ze`TkeGpnPQgh#jftJ$s7A^S8nHlyMzL{PL8AY|2AO^?@`;lp2UD+K$ z#0)UYd&%gy{wj~YSyAkrlqG6qCR%X~#On|U6VQfS;twT>vwgZZy+Msc&G zM&)9!5|WCBq=KaH_vM#e_k^lL$8E;Dl(rQbeLe`64Au!`LE>3f^G$g&wXro9Ml^FX ztiY6hrS`jvDAZRmZ=8Y}_Zq%71&DjCTdsd|m7k!@UwfmkHQn~eX2MAsHKrxH%`@CY{W$i>0;>8tA+jDyTd z!AKA~Lj90Nv&LC4Haz^1YHylRPALaETV>+3G~FV4R)uIex99Af09quA+W2H`E&u10 z*j3%h#;>7>Z!=K~c#x1;p!ezock6*K3Rj5yI0hl6=*rw|s_qHiq+J>4B@ zKq0|Ntx}(eQ+v;z6ls2B1(|K7c4+GahTN9J_P?``imc`m5s(8UB zktRnQ-OgPJD<$+LY!a=sj!?sMNT6|0@)GTzP-4jLgo06X`UpC=@6)>Olx?{q$*{oE zqg)ouh+T*v!F&u~BucT*Zym<~6cvWc?&$XCUc@j@(T?Smp@BLMoJ)CUPINc0xUEf;&*81au2z zdXXN6@u(5F>>uV98n{Px(3fW^beaKsQcnS1}7P%5wh-G$IAgEU~S5*)>R4>|QNo^RWM}Ip6-LffypH~(t zpFSHE%5?z^hD6v>rfsPzAPUHT<55|RidBOlgM!%AQYZleZc%8+M?!Vpgcto>K|;+p zAI-?)Lrq`wBx_P=^fAYq77*NCpidJh^m+vK7;_byPA}axl`sa@^COJG%gqDgawmJ$ z7-*@*WEPeXrWD=)idfzu&O?~OTgS>RR3expJI9sT{07v~6ZxKf)1!-rh*DV;rL2gI z?Sba}{QLs!YWLsIZU*0PD4=+$C;MWQl7}=e=utwwTjL3e39 z8omL8$)eGu+4Tr71GYn1JtDY%o+1F1=gKI^?U?Ulxa0#Beu5rK#-Wcvdp@T-iqM=; z75{U(TQnbGn22H#%dsMjWKmGanFGTFO6oU;iK;j8qEegbI7ztP{EyVlA+bs7-dKsj zmXHs7)v6WRxS{lgjn)<|j!7VPu7ZaZZqw%T2BJ(O@8A9MMdyvsgs6Z83?ecA^LWeB zya2)5%k?H<&W7z)mgDX7iz?au)5L-LTRA=M;(-vj2|kEagh@D%%QMAjDePS2@= zR1iv3^j+`kG+yo89}-eZEObT7&O=}pS*>IqlnmyvXH1H`cHi}b`ACBZ9SFY- zL+u9OJ^(X;nwyN=2heLE&;#n7dcWcekW3|#K@AtKcS5;|u^5$` zu+pK^>xZdRr;ga+eJcnG_YlUz$)+PpJx;j8$W1I*C zcBsIlba2RW21d)+Nzg2x7QlMCE8+@o+)$2aL2S)Tn%rBU@sE5U5ckC=QXb!0A3dgT zC{ZPhwp3N1^5(q4iO&;k*#oD~>T7elS50-Ey7Pe`89+>*o>M+Yk%%=YhLh7xA46Gl z2&|Wc4C0LX9aISi;w2U(H!k-oxwwH%h>$^ymbfE zT}^5HgtYJ_gA<=;Od+}QO(L`FTk+G7qE`XYW;{DgX&dE9e^sy9ipeF14gPNQFJV7F zOnpYv#!7l@83x_@7xUzA+^alM)FZ+(fwHs$@#FSqbyIEJewPgbMg(&It1J)^M*lvE z=XBc75$Zo$5eZ6F1*D-g?@&g_nraxvbbpt9wYupq)(YqY?S)MRJl05s?;E;DkmiQ0 zElTf-IphT3E^G*}|Bupv6zwA@$hU*;=;GcBRqk+B&(n^I)S+C&?^FAKm{t2^X!nqq zE73lH?CSGuV>S&i&auyN_!sLW{y0_jUU8;6wQ1BjslQ*~jbDuj(9+O|p+h-}7ZR`W>tgJBU&FP!CHkf%+B$$0Ap876F3f`FBSh{u$>C4zQ3m2= zIaX}o$n_juwL}g%zqfzB?Qf%K0yx@wRFLSi=2j3Q|Jx!A0yueT=AHCp@=~e4e(!kk zIMlhLc|UHU;(0<8`>z-kSbM?I{$Bzj2HQ8W+{WO0i;Us%H|{K=EZH0#goVD4z=MR= zzf5EU#a@~t4|k ze|wsW{jPS#)43vt7%~9-kYjm)51!`={!IlAkz4hDPf;^oRF$;9Y1J3R)gRSQa%XR9 zSpp7Eb`TBY)jw8~m)T&50xv27o0k;1 zOiCDnbbnieQTTSuyW>UHf~YSJ2og|r2aQ(ITc4f=Xgq+DL<$ka7L^D+uksACMCR7V}ZphUK^e6~YTPR@>} zvP6DVNa68rkMt!JODgo`>vb6dVt!M5aoX=2dhIKX#!l4aX6RdCvW?L~k&kY3y3eN% zeW^6h|AJ#zU3;hN0Z6Vgrk$@KNZP_)p}zD>lm(pQJl5oT6Vy8UMS2vE_`FJLYMt_XpUSdWmX5gJR!M zb=z>68&unU<*!?_cWFcj27mr_wH*n5OTvh1yTG02wqbD1#hC{;{01_s(mQUpJecN7edqShm$dRQW;o3Tm1|-`hhAt4r`XG&`B?X8qn`hk%Alk zK3D>|q^x0mizts@KVGt_W&jm|osBXm9dwePEsb0m5wrCVW%Q~`>5ek6dka+Ta?}*G zDrf zRYKl}kW0qW1+$^RSjFDL0!R_YH$563r?AxVX@vdkre=}pp(v%!cXQ(u{fPg5=^2hC z>GMW1J8o1rfI%IsH!1e_)1DE7J9JzUR+CHM==MR!$bUh1@p9Of$}kW%CMU82uJee{ zGbgkNzVR*Y3Mfu%zLY`({(w_+0#EBdcLYU#~Rx_Gy`RErPEs z6)>0LCu-}U!iyxggLYd;$cVOJaF*WzT^$bs^Ndxk;s8YKSOQEM>8@f+;WRdbF5{Sw z0n4Tf4)XTE(%|G9G|zi9@yX+Go8fD?UhBUEcs`t4G89_`%Aq|7wv%)l?o^ls?6V}@ zaSv}rC=1iia95P43r0Z^!9Jc#WQM`tLm`DYRyE3lE_4Us2(_!MMb)1r|0*cHEX*m({U)_=P{TK#HE32gOYY8Owau5@z9S+Zg5dDa zp20{sKK0J2(Q0nB&*T2a_yY47eAzhM!Flj@#9-4I(;M~lDrmmM{)7aKZ~`F*;juGc z`?!cGXD#SrCpAfG2wKJb#W?TfbAU7WM^cuS@q&~M&EaQHU$zK;P(|0(MN|pqkHPmj z>tG{|X9mZ)sSWO+2sWdFp)KZ(_5c7wTOT^(K2L>IJX&tI1qtIp-U69vo>PhVb*N2* zXz2)VELl%?hqO6_D&s+m!0~^g^3otnjqXqjz%%hFubGqJ>Xyc?^K1C-^aH==+_a28 z;@rS(zvWzDdb&FWE~SBMA2%6YdOKrf8f{MM4Z$8?aaTZmn$8w(0|5bW1K$WLGUk#2 zOQ+9;@Zm7%Z#9QCQZ*_MR*_W3aO9dN+H+X1K}{W|V&7ueCK%G72SSX=V8`(2tI&+< zM$y)x8cnG&I7jDcQh%q-c{W~T`dAs%Rm5BIKVdNtN(`!mTECCFz|$u5DSTRk`xPsj znZV43+~Uf|vH#Qk(98TZf%+y}O-{T_q0LFSAvoeIz8%27@^ZR?bNmN%12+6ubffQ0 z^V!{za5+lp$s&me9of;3M;Es>O=b|DEtai|+!@nyIuz(;Md2 z5Be!xLp9C+>#acH{etV^>P*|58m2Lstx{5Sw5G$Nu7?pP!q>z z9>mDUhO3^HwmMC>#a;0?_{%5&Ja2ItuOmo)#7%_P7POtyV=E1<_`q%y)spPqThn%Ee z&4WP|KmJoOor3D;jUSuCMw_Rd=r|w!Kk)~K`MXdK&cwpj#qo~#?$^vI$O=KniZ6K2 zzw_99Y_C3PNUByFmRU9x}n4-wqM67xV7{D$A;kgzj$jSi=-=n8U5X|Y5#vVWcRb; z=|Q63iFbFLY2KR8B2xaxdK)~ZW8mrU`&0y_``^v%_y6E&5!5sP$%x>&MGc0lj;vF7 zxU|LUzMC06ei?DuUAcszn-k&y2fpF^?q*N{x64+37_VXOacdi3}u z`dlcv`&0253J}1bvvm`~Z40QBFX=Xf)Neycp=5J}!`4{z1r6i7lKyW z`L?avaanZ*<%@n5mxE;glotJ@0=rmv|U0;F1y5{`y*^>|8~~mGIWt=_i;f` z*Y~{XFN7uLAh`2ne^k7vpzRoYu&owSU;y)6LfINfF}V`=iS;$a(-pAXVJ5~PC{0^! z>e-ZvC#0c^jYd10-;W4qjeapg4-W}B8pVTgbCu?`03P9=F?FTP%D#9b<@1XI4D~u9 z#VGy&po8VAB@NKuFplWiLbnpxuFuZCV~2V^hC=ciMd+r;h@RdE`NM~E{5SO|+c>x| z$JCtD7AxsU1l2iA%&plK$(_>+e3}a)+D4t~qNk@jLtyd3SbM|ZhG!D3w-epsJPC~z z1}WM;lQ62Su3gkjl{~G7PJ+kmZ9`O)>le8%bGmxWF}aD|TgRZi7z)+Ea@gG)b7buj zUC8GTHsVLcce5luY~5P+&4;~n=qHeB@jxV_3s-kt;WdvokMgJhXXJ%&ss=Goacg36 zW}=Tt8o28L{tj`s&Ym3eZfEnZzxv|hL20LTON=?7cIJ4WIolF}d-@Ir)n5xP-| ze>v}S5_P3qdn)(|65hovS;a!=P0v31!ZHfknE;Z3qI(f1lR|5b;XBd5LZU_IN8AAt z>-}Fw47{D6?@fYU8VjQ$Q!jc)I|KUdhLN6TpQh5rlS3M&J5#|AOTLOH;#-IztHz24exKxdb2EI8aSkYn&75YP{Uo-52S6L9tHRr;e1A>!8 z4-0Ay0ZtU0_ZM{dH$Pw-H%7O53*yc58+%VGkL2_NFL5+NN11itebH|8srv-dTUpMA zS`>{FfxJ0LGq^`{!>_oTYp5P*m-H_!?vE_~l7@eqqskA^G=cam3%}komS{_nn3E(# zs|;$FVV}zBk#Acj==Bvy?Y4l_6MmD^;>A%$wRZ1#z^aDgYy2l9;sHgEsCrRPB@=It z>$Z)5RWRr%s070JqFDoc1`>P@vdspzn%y3zG|VrA{5&KeLFO${^bF`<9SYYoqvACM zt?c$Bruuw8wAZ{3?7_V6DCqU?D$mhxG=&sZ!&R#asL&=TiZnP>P|yKK@#jhQW_;_ zr)WjGdvJX#WbqN75io^>EEUYMz{{i(?QM~{OMH&t0yKFW9MDp@e$g~vV$w_QBt6~8 z)*l;snCymF$Z?#>*Mc3xok^&}EcVf4)&>a) zoFVM6l4w%uGJ}}x`WC4gkBSv(=H*2Jvzc7%~ zB*I%X{oWRD)NYG;;yF|7Fe1DpFcPf@DQ3`KOsP~#qW_4by!-_ia7KTD2LXVC71g6_ zxWwns?ORAQ>_s==iqD}7D|Ti)_ogD2w<&K}KyAzo2FBA~_}x2g?8+g)`!~PSEN^3% zK7Vf41N|`CIpLV&u_3?{X8v*5-NCU9tk+(^l3>qx*$~LI;+)BEm?ksa(R2rg&@`J5 z;f7X}IUpfWc2Eu{q6{APq4e}`yJmRM=UQh@1GKbVu?kp~aRwKBMOK^1;MaUk|UozcoU7$r*;tJqmEGvGSB)lyt0Y}RM8p6Um zT9xL_(5j>?fu1G?v%+g0YPuptLp#eWB^|+OrkfGU@-)2vBZCCuPlFpm(daYg;?u3@ zJ`B-*lGRQozRLu)MTI{ zkzhX}EYt7_T>)?7PXO?=YR`?M&1;8q8ih~s!#Vx%g-57;%MB!=filS>xb`p`1_T1AL};&L>(@M2sDN z%%^E>L^GNTx}}CcK3;s&dXm`*u%HY@yvSFlY>rg6e`rz!TbI3QG;7w2q>`iWYVzjo z3+dNr=ZJPV5EN5;Sm04Sd?Y?&80ot(Aov9i_g(YSB6O8AzQ%ff%#qTh8^g&jSm-if z#0jRTnASAOew;U)DKObVZT@q3`n*|#TKEus@so%Q=-VFfPc5Q^)DQ*GW+Gj5-W+kw zkU0vU&=6O(7e6+PLW78Cwhn(r^H%xjiWpjj> zWPzjg9Q^_I(}Ezn;wSkAMQ7`fm4PImuS+!K{f6Q2jd+1+FxP16%28Gb64_?G5p~`f zXca?h5{x5#1{4Ut_=tDBEQ)y;ADg3lwEnSR>hNj2Cr|o&6T5UMZvY%{4H`uwjOF$H zqV6zBG!+RaGxddJC-4kw!%*%D=&uZpQ%vYb#9%i=r{ZBnf3~X@#OyhP*?^4e=)5fy2teq=LZ{Om*)iKXV_%rPkyJ z`)#de3z4}C>;>2Nv)b)^zGM#w6ri~k2J-_;3hI3J{Y7-cd#nMQMyNA~;NB@x5+0IJZ8D{* zs+j|J2FWu`#3MEOOLUpy;J;gGA(|5{8AK<%( zjg%>NoGEE2^=1&XNueW_(K4UqSPwPgC1m(k94=hPM70;X%e+Kp9&L3&p>!jd+#y?{ z*R0Y;Y#mPADR-H^_16DI)3=*=+@6!{PEK$@mF3Cs#UVdeSsF^un;nO_rv#~Thv8%| zejUDjhvkRz@LMUQZjR6|jpvEw-nls^dcx?&;>T2~L)C5_LnZRbRV9#)Y zhd>z;C-wc%+v_6Sz{?GVyT716AQUdHBZrm%rQwT_IQC99UY3@i#)#65_|hT!p*+x} zEVHEi@#3^NydYRT-TU)>(4PcraVn8PeY}lV4VlV?yQ87SA(=#l^25m1cJT}f|5A0! zkN765UDU@-4uwbx|IB(=egChvtB;GaOxKLaUVVDPsi5Fh!U_cl?4L=-~ z7g!izJ*=I98F@=v&ibCmtI3zGf&NdtuN}zS1%xif`n7ad530mfgSg@JYX+ZEr28k8Zv5cNbi$G7iqWcJ^u%kv z7!?_o#}+KTREcqE=w9G2mjqfwvO<%D{lKEaMK8aZqE)kvFiNPx^NeMGf2^N)DO@7F z>EHEHqv8CtC8wniPKwI&3Yc3C77R!rt3cJjAhvw;6=Niuv(hb6b>lyMJJO@i3eTl^ zoLrq|>TD(IuSE?#EQW3Bio?vA(`(dpEW~CW{kH|x*WNweur0K2WJ%0e*aTctVl`L0D${mxS{V0~41Bv=kg`jZe%P zg%5pG>4w57JB589N){%b>&jkcZUyBfY+12;NG)-H4_y&_QEl0n7ot|8@q}DPj_sk) z2pzSu#Wf5jlZ5GXVDiu|gQ|o6dPA7BD_|ngBTKp?vlKqqx}uc$=t1GLTU4)rj9fk^ zQ5&=*SAk~7$jEGbG7*U9;2&t$F^fPliwl26zJ8t9o?wY?{VJo4xNF!ccYbnwz|w)c zg{y?S4M~fNM2{BcBZ!_f&kK$IpM#IOAtfQ2nCDwV>bp(p5S$Hjg5AU5vyOMH@U=p^ zR(M&09h3V=fZ6lPYCuB5DdwkeCuK=(QuLLpjn+>rbDFc- zwDFtu^%@KYg))C0=7&|RxIK-HT@?1ptv8udo1zzpU1!3)D$B{tGt;W;kK`H1fcS|7 z2QxX}z&#QuP3*Z)ZfDC25(9Wx$#l}nazR(Wn5KJ9s5-CfEMC_6LnzE+lpEMT_zFbt z4luLbqgzi}GGwTze$hXd`!I9*rX!a(DIbD6C_DD7?Xe`b6d}E$-5dE>zbBT1<->Otbhr zPFEMa$4Z->+SwGVsml)rYYc`4g+7G_ytSkgr!l&b93AL7z+CjBV5F79s=%3oIVu9m z5%B`T(hdjKot@G-d0$#T>wZj!@etO>jsQnKX;UEJ6gYlZRj^X9Vrd{*6MI=`jVD{J-R6jPlcp$Ir&>$4)E8Y*K;HCCe|J12wEN_3vO3c zzc2KKo7p|3x%=jvr(M}vfD03Vt--R9^P37nb`xA_=fx52`U2KU*bzIdJyq%^6yDw& zYI!{5PC_*%V(`Dhm*Zo7DzWtGMULkH8>XRuX%*(4g{7CSB4+^w(8{;WPx%*ainjc0 z2|v}b%k=Tt(Pazp|HCqzVcx_uCQBQrj2y7h+r#={EJPqWOh(Zcxeh^1QS5@VhW{Mo zsjDB6>&I3;FpRy7fj$|g76fJ`yb_!bKONXSL^UV}Yp{pl%VBC;41`_-A)%UNY8^e{ z&h~Z988x58#*Leu(^-s(Kg_G;LonY!Aq=tWC^l^5oE2&bUKh|WBOLE(w_ zJ$FbAqpGq|33p~(hdMo21$$mI&WnKiHT)|_Z8xRI!VHnUf zodIVhPSD7WE-998+AzeqJ%zNFTRv-xn}oSQc3uK|r}1%9g6P2TbfLOt@o_6iumB}Q zeqE0SBvw|Hn+?sXqE|A_{}pnhG;}}!dp!&Wb|N?e@CVkcd@x48;iN%_Rr92$+4CpW}U0>cspsY$`cRC+rUp8d(fOi#)A> zMQ~UesVUeoS3B`we8Jr7Ca8cfFJG54>QG=IwpM9#^3u|`W#=Po1Y!tIYh%Zydfn~a z9qJ-(demsx$GV$0@F9~H`jCh~`-Rv&kzzkklwMFV)Vr6k^CPZ;go9wEuh*(xTP(AopxqpoIWsrgV z%PMz>JF?8oxQHhtP?<(TGWGdEZ0HsM*YtPIll0!C3PQ`uS6@5;7-*2E1i9M5zSeK@ zF4Gsz`*TpOWllJALTKIf^af($J>TdFN?As@eRuV(17O%P7)>8ei3e2ZSc)lHTM*1y zKIn)C$eYOs2v(8rA{Q<}W;munbhb=wQE{*CTyZ4z>g`+lvCO?ADkA#Az4J^Kwg$Y* zQ&DMqFc`Y9)UP%D<4qHVzu3~pKlBz}mwWA1Gkj2NyxU$Ss>R2P=k)}W_`Wn7DlEdHXd8h^+NE% zd*K3j=fGw*xIi$i5;%srdoo*EQw^Lap>@g>DRCleF#y_ObZoW;hpgU%Fp#LvaiAdHOT4~LJSkN?g5 zKCKp^cMTOG!p2PMIGSm!|7S!;##vr?Fl~a&p-fTPO|wGkr&aHOKn#T=I&HRiCxsFb z#IWo@@*z|*IWd-Wpyog|peO>SdDu535|~;_3l{)q$y{L2(fqK_CME1F zroV^Rht|YB0T(_2iI|&M8xf6^5_Kh_(D$cuCmz~vHWl;rSGnQpS?Lk3CkH5?Y?I@brn&q%a=tSenGk zlh7tPRB9RSTeJ`Pi?vWD@+h`xT}2L?brj9)>9bg~8kKRh19o}4)lRH%f|UHKd_*hE zKnQHh27el=(;-`-w}CMUAZ4HxA`yuOTDp|xNDNfWhzqJ@;^y8!5$34|G*LlRCqHBa z1|+lMJ&$qtn|v0y4hI^G@(iPN&lc=zJ0zUa8iYPlwQLyf8=&wlGMR+mv&z(^q-c!p z%*G2z#j?mCv=GpMBxlTy`VdVKB_WUlVWE#lPMV~kBsFeVXlgG^FA5`>ZD_%P-`bsw zKa_sU3C%f05X$ZbC-^KC<5uIJF0O^j6(V%V*1)CpkcfQizy!-h{dN5|sT?xuPaVOM z1%sof)!kCx8hE_TCwLulJzg)wX`W-LZm zU=Reb0g5{s-#l0#y%Aq@G0 z3l_P=CDiIjR@76=Y_@I!8#b74h zBPe6XSPEfI&b7B)_2a5Gm9?nPi|ie%J1z!D311{`_+_HNd)qbVnZ+@yrQ!$`o0Ed;z-iRR# zMz=>0#7R1lf!hYL&c-e-6!%6<>RSg8Xu;gp06q`MbZS+YF=6%~Ma@qP+H$qw1W z>e!~E?4Y6hFN9RW0^`DFO*~XkUx>GYC``!!l9Ez~90oX+Z9dOoM8F5H=v_#s1>EHq0jXV1sBX+M&A)Gm>^l;0)0L_fB}xm;eeKJNV^MGEEC&E6?6AeB7$i zZoqZgmU&P-`?_DMSH^pjgk|zeVm8KUnF{2W5123JwGcl7RzRxx05HXB(RY;|u(~My zOW6b54S`*R4AF6kZpFU#hHpffRIE2psz~`a%mp=cR6fMIBFnrbpp8vH5>s*q<)YTL z5$!1pWZpV8LC%!fd%~;iCIF=yxJX{YpGVV$l7Mn>n-oCPD=-`eCl!YY&!>0eKE?Ppx`!C7qzSX^#i6NJx5zxp zfFtXKx&VH`34b(EY%wtquEba*jP^_m+)n*uqW;1cpSAd%=3HKZh7$t@9s(Nzx2U*I z#WJLq;xMyiU_LE%&tUo3c!LmUi=7=Q^2E?(9Fit(6ZspaK89`Ee)_@ zpGjT;6Th&OsKEhb(xWdM3CDH#L$sbtH~9bI55f|z-eB2_Wo6J$Ji+Yxm;Kz`*S~mi zz74Kp$$5|r%udWax7$&h$FegHd*8=AF)YBgrSx0)^sJ6Kcw2fqq+MvVna_0sI*hdR zM0&u&P4v#g3*yR#vI3ca4N*g~z*%cTYd(ZA-M$Q`)7Nt0+F%QWjmABNs$IKgsCvh!@B`d3ivaG?oP|J1Wxv@+ktxW? zA7%@AL>ylBRnE}lr$V4(dZ;NKA(*Zz#(X|MoLg~S6W5fPmUYLhsEVxXsFilVv{cv;@a z&z)p^ESZ|b^ONf28*E(QMjd-O;vx>|OYRky_Jz0-L1>h2&F!#qwm03bF?1>2{gS_y@9wBjXcuEqDWsbc>MfIQ(Cu>z zz;WpYoq{VbCxvH=*Mnjo9bKa;=xR+2m|2PuFy zd5%UJkJKvgpoG?k7fksTy$=LusR7905%7_`?~IE7!iwrD&59p?3Aw;X69({qz~g8P z7MyUXMVSdzUsUPrlqT{_mLE*!%;svp_JbkE;uBljaCkUmpwf3>n0O~F-9REvF~9*} zfy%7yzJ*Gh$k}KS_$J`ovyvW)2DTiO@)YUrpDst)Bk*|+mz>!D``|e3sUM;(fyQ5Q zR88|iYrz!T2vODt#nP903s1>vASbSQB-YKD5HjJX>8)V9Y+2b7p5W&3cdLi>gWZ)4 z7-4JI0tEbUuZ2=2p7p4RwFdEilvm`$OK((CS*_t7WXBq7v0=A1^{E=q#BwqKBLOA%J>Zwg%jFrW7Vmgyd z-2<%StJ_CcuL@4w7ptk+)A)hg8L7;VMXA1NX|;C z+4w1`V-CljN{Gn#MK48HDcs265bo;nM6(165rS9ffr*_P)cM8Z+v2Zd(ky#%?Iu%K zsS2&5k_MEg;+lGC@ywiqf%2D{Pd0Q$wC846Ubh|rKPeH?d^5p=R^o*OD=i(i0iD5l$swt zEr=EZf2;~WVIm>gCPQ?y64bEkKKfCyrZ^9Dd`|@hB6Cqgto4$9kiQqGaTvtdQo+Ti zAd6#pdhp=GIXOj|P|K^92nyiW$=e*SgL-UTL%jF-#{a?Jeq6e)dRFYu6Fek%2LQlc z)D8f!M!i|ESOjq7EddO~BCGQV(};;%1rjP&)l&r6RrN3&#ttYVbM2TDIN7>yaAIM~ zN1km?%WtN}zYGmv)mmZz)~Ih4<_aU)H>o>E19`7TITGqC7yhR$-FVeynx)^8#GITxl7+YgC<=CI(6S1@K)QP%z{hL_|d010r;}K z65kahrl=1_nGE;YAz(+y$|3M9=#H@>ED!an^w_rT>F>GjH(8!(x#sJXX?-)ZWWWB- ze!g+@h{L-%+H$bI@#&`1HmR^WC}Lh?pBJ~UEa!*X7edsM##BLkt}w~$i&0&c_-EEpcoop(gdL~KF>AvYh z-SXgSYM^y=VtZ2ev?Ll9 znO<;1v{@0-S~RB)JjM}hO7*1N=2I;{VX(C489+QykHlD<1@d~6|N8YNObwNlNnD87 zd|h?>V*3y3cE%FkqVC+GzWR)*O;c`~bj1Y&F(ppE*|VuqxAaM?3j~3leXr}CbU*AR z*VmePso)zwOGAd!HH@t5lVFMg?|DAd$=g>qT88G{nVGwK!Q`g*ZAMq?a_dap;QH$9 z;(lwFKYrP=B~ydpb2gPLh1xd|sxlCnyGdM%2v7Nk?SuAb8y<8FLkGVSo_FnXwNyu26{gl# zOa&MoUI2w4dBKEU&B3G=3}*E1mSG>ZRvP?WRyn+4nD34BQ;jt_-j}ED52k(qoD|#^gw0PFhm^nLgb?!dS5J^ZmP5L|2W~_H}%7ON8$G z;+)=LL|=y3_Bs9Ljxw+o(O4inK~yJ9V+0LiOf96CK){J>8IW;0-#XMu+ZwJ#+`n5% z%xOz?tu*r4Ge1e)c_8K3dpCy}Q<8{y)if{oubUS@Kh{*csox$|!*jF3{^ z13zq);yx;Txo$EEp$GBCscTKO(2pJV!AKQVG?~iWOtLl0t-B-_IJb9uU4hJ7CaQ+5 zZ(V8_lC=Kpw5v|EHdX1~=`ZvR)}Og$8Q;E#+Q3D9HYPFUAi+SoE~sR9m@`F|HvZ`b zTU$TtL$niR5dzhrkOV%a-rtfiSUlRKF-a_BUR|W$;Ja}LH*Gqz( zA}5WR8zhBwLqzh#U7DaMPxd?PY%1Nj`HK4LCB5~R`T0ip9HyGb1jayCbI_OoQN>Y% z(Oxek7t^chO!cg-+5Zhy46|!`SkanH2oj_DPuzdJuf603r{B-Ik5=VM37p*x|L&UU%0E+=|6)>xZtNlj!QnIj)!Ob4}&C#=A=GI0aJO%ydJ9;m%_&%#MJAS6nP+3Mlu%ysR-CvOf{cfG#FwRy07JpW~m z00JU?Z$^&^xt^(JqEyf9Fv7j`D2pR9_U+U_zCde=d~SLW`*e^@%zkO*cp+%Lc3oPi z<%rg2`DjY9fv-jRvIni1%$(~{CsvBv___1rIi_=GHnhSsYE7H3nD)J%`_yeW zxGlD9k7jBQ^3c6@)IB>{Got;!tqFasyO>Vuw)S^0Hxp%4?PO=vBV}!*o{T`Ijy_!R z)%>BT)ox7~X>lz-)p%({{afY_2jq>y7;vVKqoBrmX^4h4->k$&xitBqv+PNZa&uiOT0N_-D&ONZup0ryCQsV_rJ0SEVO@J{4uY5 zOlySl{hgc+xqk8K* z*7!fQM}O@&^Z*=7E|k|(Fn9z+5VIxy^9x;~hekXIuB3Rd^JMeqrmCkR$jaMjK)$((*|Dj8Mm} z<&E(Oo%1>}6wRs&oBZ!Q)fm;49q4gw4VpGc!tA$i2j*J%Y{;a63EE&Gdx+Kb)XlT% z?ju$0kp&UWn5rWRS3$a2&YTEWKOl3G>O{cDE@NNne0qa%N-W%QkT7nj)$=&}^>MA= zmPfmwM9Rgse&gu|{NH_LzY#}GUn)ed7pD7KzROHlnX{yEbWMDv?#YKp3HRXN9g{Kl zrm9IzRea(HsrLVD@QnW@_2}MXN8_TJA{1fw=&Oo491nL)4I^&Gy6LM5Vofo()TVR7 zl=Xr$fBC;2D;ty;Rhb#J{P&QJa#Z&Q`j=Iz9~9A7xBKKrJL_}Y^$9FH5|*qNcKcdx zz%I|+zVfVk-nHdWnyc`23&AiSyO9aM3JPZ}UyI3Czht_fQt0Pjy~NE@?+S^%x!v07 bOCRyS&Z>I#|EPKNw%51abi#k6*%|)_LLXww literal 0 HcmV?d00001 diff --git a/assets/icon.png b/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..516046c6adee0c1f78c96610c83c84e5b7222c8b GIT binary patch literal 61474 zcmdRX3tUuX`ag(*C5BcChB20vZKeabfhICt*KMt=U$JaSGbkdzT`!cRFmgF4DHWlF2i5=?Q{R*;xY)|4ssdljxW~}e&}^^X}kEsb5FmX z;Ci*p?emA;_@t_XkH5Czh<4l3Sy4L|H|!Pv_s8{lpZu;cFL26(*G$Wc{C+dU zl<&K=yxpQ@kM?#|}t>sJS6 z<#>FMk{i>o*;4QFdE=uU_1UwEtX+kcC&DeU>H98m8?sWa7KNtlS|VR<`RN(2pcH@o zS1Zqztkt?@b1O}=qw|i2DD;Xn^=O0aSV*wpnH+wcUUx{ZD>J7D@PpzMhWxUSO{UBR z$`OXg^@<$z7usmO?l-#@UMyT4TY2WbO3j8$OYIKMa^gTlm&UbaJO81wcaN^uSiZmX z-ct+HRKAAqo6ni2XM6bbgADn{LN=*Ww46I#>tpp2JU{=mRKkN5r){ghS*4J1=e4jZ<-yM zcho#{ihM10AYWVZiayZL7Oi~!Zf-+Y!$#xPL#NtocWWFGZYfe9E;!gVYr0`aS>Xot zV&ynP+g!ggoDBCE&czhKkD+sUMPHobea!3;z>f~%-Svv~ChzRN9DcAqN6Y=%uqrzy zfIo_}ojiqC>UD?Dv=x12ytvl5We(q4Z~e5uIvvZBcdZRizMS>v3yH3=i_MYN=k>aZ zkW^fUe;rpbL|LcMRld;1O_6_W@|tIzw8%PK%lR1O{ykIpJG4`B`2W=p383yqrgh7KS@_Sz&+O}C`0~SjVeKbJ zCe=Za8=%OsEB9SeT@_C2ubo>zP}~>yS?dBwm?mBA0vY4KhJ>|Nn`8VTVbA8YE>J#d zkR3M9Ic@gM=Kb}m$ZIjyd$MB!`R}yD=H*qICqPPzwdTYe?jER~R+D#l=h=dV?N2~D zV%wIU)VQ~7_x^E~rhAS|@rMgDAK-qipIVoB%eImaz5BqL!ky*y&}0qlhWySu!%Khb zXF3*ZQeOT<<5?2m-wM@rzXgJiXVxnYk2U-h)Rtu4@6o2*-*ZZHb~|?m7I^7wq4`wd zq|O8DW!hm;w`?Ne0kcE7Aa9F}(>%(NtZ;7J8 zq{%-xJUi=9HEm_`#PAuxcZSc%OxJYIN%{Rpis2#I+`3zLZ14jo+yrn%L9W zJ3XT7skH@p7bN?baR?H}c^ObKi$&9cmTCl8;@>xB6L+#ae#)i{)PZRQY4%rDps`e!9k-o6WgJ z5r|l6%KGh@KV43~X6(~h7hCxUjog)yg`Jx>Bu!7y#cA$@tXZolba zWnY1jAJ)NtJ6_qfLv>$k{EsPrv_1h_YU=qTFshUE0X5v5iy42)jN}ql#*29hEJd6KcpKbWu4uSlq9`#StZ?x2F`mmztykfu~^fqk7#nZVYmEtN*BY6Rd86_UUaE{G_$~v!XFOri$(? zH5K{aT4Tl!)enJn%~RNKdH-5|ym-r>G|{cIZr3VH-tN7;^8^!~(i%QxE${YUx$FO4 zuYYTsO+^|<@HHYn+r!ly&q54!Ydw>7e6}}5V)fst;S|{CNd#+feb_K%ZWR_+1 z7nd!uT-G&R;AE@#)&GryHTRjms{T$>$-g|9A9nvvbJ+5Ozvf5ZYMWkO;zHrzSk3hf z^6ocvm3-*E)-3hmiJFt~IZ3g%Ye)IP^3u54G+7DPJw{Q%``v5xRvQaSx@JC`5_sFz z_+?g8vHpRq?z*PlYIECDXSsFcEH%M@k8QbKT2j{<9GcSjY~DBVx*c3CpR|@A;@7b~ z*7E)F?r`%QV4_N9p>MbTYid7Hb*w*ZJc)eHaKZ{ zD!39=waag>oO;u5>17q)J(-UiY4(cWcU*U9Y^$o~_L!i;sB5j~jZ@FZb|`#T^W}aW z$6`C)S`)0lefP_&Jkz#6sy@Vcxar3jb09zERio_E$U^hzw#CLp);+h!`tVPJf{IJL zuw|j&_4StBMV2Rc!#JzQ3dR665NbBn-yR=oy$o`vt|ImD*EY>`6>k+MJ{q6@3sLpPEr?ET7 zVh#{F@hd2hbu zm|9fVkPNk-UiIaizEGuJaN~W@*?0CGud5o{`h4_l0fOS`s$VshpUci?t92D(&2LjO zZue3r*ms$eui{;wOYy$tv2A7~A#A;7BUs!Jtwy;Z#hbT0Y7R~`f}4v;(|zi_`nDdY z?uyYN!l7&V-(;p-C`xI6F7ZkEowp^JurF1m%Sso>7=Ff3tM5yHQdQn+Qp5&53#0NX zL%a;KD4(CgJ9Hi$y7P>Q8Gg0Mn01?6>N3#jt#hs8bA~EgH)?o`POtGR=kEDXSE)IC zyPTV_$fGV(O^;aRk!(;XX@I&4?cK$VM#FGHG;2nGDo+2xgqk# zpL#At3s_roS2_1hT38BrSozx9syK>|)K+uz-0aX#`8U_{&qx6ik{q{+a0W+ekBLQ7 zXv&KJM1To`n`QBWRa|<&q1IdzZQtd3Aab6+rh0U$|9xP?}l>aoBFC=bnzO%Wm z{{E%G{IsD~L&+%qv0Ie{yqV<2PjPV{cOtfuyK5CcSf~a$=V5s8zp+fO_GVwzl|8CY z`Gmpzm^Tjw%Tep_AD1ss{`h8g(0pKwi=pJtJ$eOD+s2}n=jYwZgqAbthktn{hYNO# z%*%gKGm7sRYE2Vz7BKmmBeyL7Ij}qDm$;XejPN?xQK{_v%9QzhyG)xCTl-(Rt$9{p zb-i9Ox}2M;2|_W*EljJ4G%O=RY)+=pGgbZF&pS++tBqdQ1?u^es}IUQ_%GboRG(eD z{~lH|&?!r6R($*2r}g?Ff&T>q!M|Ctzch${XQiW!A``qR}DO&w4G0TbP!WaIt!+COy>r^rFR!m!1p@f2&J& zHj+=>7JBjGnYLJKXWO*Xisr9pr#zYNF*D@C3$xED(pkK0R~_q1o}Z{P_^E68aUv4` zadPL_8&}(t_;ZDyc2>#tsDyP{DW39h?0`YRrjNz1+G{V=3U8 ze>Ho>eS8Y&G>H_Ubf+#bH-3T;ap=4{WI{N(p&_>8@f)o$mQ`MIvY|Af(0oZ=ck0w5 z;cqQF8OHmLy&`M(&=@9|f5Hplbt z<@cV=KbLo)?Sg877%!5~taZsog-giYN?+q*t7QcLG;u5)4cYaB`WxDJc9vfAZ0l9V z)?C(fEPRI@7WZAD*&N%Rtg}{}iR&p1;cnP4d1^}QwFzeHLPJ}+(W|pPd__jajn#GQ zX(u!pzhKwyc$*iZlV%qjUUx74p*$qncFvbZ|`^+3%OIhf$7QJrU=`16>))+K$5 zt;v5edyH7ID}aB~`MC|>rYqKFn*PtLYaRY8(leDD0$7(q$@hVNHPT{yT%&zh1J|x z(c2Nc`LrX=)U&l+)_i_LrunhR;~7VsN(GZcn=6{qdQ4^UU$iAMsouHbZ0{R&1*NAZ z?#5Q+TRK#oZBcf0LBRjf#>;*`Vf>S^ zJ(FWAC#2|ScErX=uj8^e)6h2atnT8-!roKz4Td!JNau5Dw4IAx4VInM)KV9CzqyY-C>Un`2vb>CL)XEB=U55?4vxXq&-R)_sl4t6r!)=6$@l z^Usz09g3p~p2|<=lf#6-_ugFK)Jy-=NA63!vlJYGmEt$jS^7Sw;2T{K35P z)GR}i^ETJf_ICb0wx^1jgSWc!FE7@aCaKA$-5X@ep4~eRUyFrO zZcWvx?$P<}IkHN81%?n+4$F9EFu&6I?rm$_vPg!`#$mF_j#Q^sk$6yEbLwq+m&)AuD;Yf zM{o&5?5#}9Yfo>{ZERMolGHVyE4iGgxu4&h*ZF_jI=+)#Kbq7L!#&({W|>@Y_^&nM zGD*GF$$m1+)A?F5tk#L8^&TY?`QI~tz;e6RXGc)AsiVOC_@4SLXS;MiKVd5Dtmiu7 zldgLt2h!o!2##Ph`+g?(?F0k;+8nN~fNJbKaQ02>9#7N{i{+u4Og#@8XGhyg4KurT zwpo^&!%eisp}lFL>+D-xL|AL9;^$3l`>h2f>=EyiKH^C8wg6itZS{WaDC||~BmAg? z#<+v;%dJ-m&kMVGfPJ5#Xe}@nwy%k`u84@Q*i-VT7Mt#d>A@8vaG5b>3WexPVT% zlk`114|B}^Yiky&jpJp<43di}MwO$e-QG6f*8clg{tQ#ff^ZvWO6iAOg!g`aF^>;Ykzu9A(!Y zUUb)TqgQdk(u<^rUMUCA?##cy_UE$3I7iqYjgh`*O3ptHfDvN;&}&E; zgN85@Gql{8RjB{B7f>f01%&2v4))FAQUwGZ%e0k$QQoywzS6Fbf<3UqG9cy&X%y9O0#F?ZI%`D+n>| z-BWQS^N6(M585I<-v4#$R>vctB3-zNMHg)&!DMTXp>{~xHze-F0sCE^B{U;#ViF{# zS5spPU===_`4N)VBk3g`F+51U8XE7-FkRBdGT~wQaN-pT=fa)wLtjV7hNJUL`hgeq z&kM!%{L8Of({cv>5W5PBpj;6p1v=WG1Tow>NYnvpaFe}v48(`MCyN=J6-$Ei-)P^S zIitKbW^~Evw4!NyUoAF$I)wi9siOS1mi8sjntcCD=87GCXHu3Qm4#k=kpA@~AF5YX zFt=xQd({NkJ;l}*#WuSqaa;ZVmEp-(UQl*bzWlZ!XNdg$+`7m2nY4pagVn1S?$ce3 z$ugf+M4b1M#jli^wj4mmTqsV&w&3!=n5Xw&aE2lw*DGO@M@LoR+rz7aCi1T?3Ekbi zMVVMWy|jCH(zV1HpQ^08`;2>4E8IEma%i}vE(#UztV2xUx|x5+)*?oG!xx1of3qpc z+%V%~`o^QYpme*m1XgVPq1&o_$khy-gh(qs_j~6@*+AUy)kJ) zd41B6jE?Q{ixV3ghlVZa8gSr|xQ)>dHf0cUNIK{bJvxew{$+4;W>VE<1LKA8?lD-mH>4W&B-U z=eSQZx%Bjo%c{=D&fp=#_+?J`UU6?ZH{H<|NXN&&8rykieLMX{i7~Cnlz*vGR#IEY z9W7{o1X~|&X`O--ceG8uJ(%CoZ$D<1o>-_m5}$0I6}M=2r=szj+GF&C;pM{Q@%Z}y zr@y~8EC{HUF0>9$5q3w=r06uxgwf%U3(${1<)*|o#Vo&)epa<*+Z~=M%NeA-Q z;9Q^V|94Cv=rH*(xwUz5sP%rosxTN0TNmYpp|m}={zkG8R<8qiq)e_ay@P9H5=c*| ze9m1GuIpAcD>gV9S($q6D>QxJeU8syU$*m)+F@zXVE$MA4!gSaQpT3^BDl#l?E16= zVJN$`0lJYx(Ut1F?0jQtaPkOVm0Xq^y0!qNj92O#G$O3og8*JbT~H6|dTtP!00OwpgTin1PvI zaw%$dJKyN5IrKzCm)st|#Q2kQ7%%C4Wg6^P*n9dOGuK0wJxspdCQOPnlh;%2ZPAY2 zL3Z&(G7MxixOkXq*#5UqBAOHYqbI<4Ml&3T*cHv5KZ|T;#InkQgQs6W&+G!x9h6v0R?(x(Yp~{Dir6l)@C;ZW52ne`OxWu4Ye_PJSY9PD_?5^F8T2P_c%SK zhP)F!CjP7VQ1Y1WkMYB8&AtKz*njDH+j^;WdG#?aKzb?IpcNlFfSx(#%TCo1TZ6ZN z5em@jYezu*k3+2)wv9k1C)>-PF;s~?1zoWyB$zJ*a%axA` zcJ8D9Lcr`1f;s$)PORC{TTbRt71{Q`=eJMn-uN5z>QbkQ*o3ZH*Nk;L8pGK(AJ*yi z*M)_fEj#)my4oC|%b?nDjJw;mYV^r7q4=<&ZYTDT{a1>MHEx^Hg6-(cW&#?>8NIym zX@xm`82Vl%*Ve6WR%G{ol5c?*XgBzHz>jzOetbCG;wxEc{DVfX`HnVoW+CL=>6r)0 z_;}8^kM1B@t8PQHVr~CBoFQz(>nxr5jn!fN?<5Cw&j_djGbgSsvb0Pw z@|PM?I>tl*fjiW}E85yf2Fupz&i3tWhyrFu?Nl7`NzWg|Al9{M%uj3mNCQHE}Ps=H{re69f9MTw|j4P3>YwZJ>Q;x z)ZT|ra;IzEda$F-#JA9w;!Dp*OUDD4aDFh^;>ZPddTsCGkX6=mvoG-b<$TAsrR>Zb zB$$wMSp`IFYcyq>uta5zntef*_e~ui#<#Ce#+veuh4ITJa~5RpH7h=~H}12Yu1Ms5 zRPB!cbq815^xa|lA?~DRi=&;@?D3#6bH3Bl=|}`+T^qPM{t5O4;t3g(Ob6i0haw8G z&2(Tp-DCb9vNbdLgrc3RWM5`+%Vpt~hHMA2=LW4p*^Sep-cocn#CI;%B>3_T$qn+R zs!VhDmVP&T;V)p_BsUutcXd|i`{^Z36XWy`%PRGIw(V<+%|DXN^*oe!eTwGj+ixEZ zvS(1Ak_dOM$T!ZUD5~G% zKG%+J9M-~5kNa}S^##g{TXn;HJ+oV*%TgEbD%MR*x}LbS<%{6Bll){R;-f;%J;sXa zx6W%C$ZQq1pVd@n@uy!azQo<r@SD!*CQ%V;pV=pT))!OCt-)& z{J*_BhC@Fubnl+k)E#GCUt~F>Xhm4|A^#`R?vksm)@iYQ)3_=o<5Hl+@PhDSBrB8Nu}$=1vCJYElDvnd$2E;!C^){qv&; z*xLr$M09bli?Z-quy zE>%6*-80B13XU_f%-s`Fch!}U>yId}ZEZ?p5F=0`+$Z4!rAs=!F1<-hnldP|EW{hC zUX`j|;_itbJfhYI)OCMepBU|TeMKRqvATeD9D{f68jOK1wqZDkApffSsW~k4YMOs! zUWRL0fb=@*yYPS|S7sjcsFtm`hi#D5q#YPR(|a5nv@hK9cdvP*5*}&8t9%S*pIxqQ zde`*Z6NqqNXEI7J=far#-Qhx8_z@n z*{#*7!+nsAT_1oa^oM9<22{DYYj>aN++V1zXlhwT89(AfZJ{Q4WGp%3N7N7SG{^)N zX$L!ouC%|*8OG#tk$94jR61EaG!7`u)lF_qiLJiq%?)PHI7;%2PiqMzJR_L}RA4Py z@pTV3eWT*~BYC;5Zg@0^eO@~J4R$oj^K`1KVJrkMu+Vr^R#x@IHuj*yawMaLp2lNJ z=B?mCFO?VeJQhO6z#}ly&0Xt8heCpaeej85yXqh5cO)|HizSm2R?kl1_SX(!&+00f z{RCp3bCnF73ghS8&%vabVbXBqr=c4Vpa@SNxP=8}w#(L4y8FUWOx!r*{3A+pvTh@( zi6Y1Dvql(X>zfrhk~vS?`5iF$%C6TGLrGEdAm7=o^VosAuXpujTWWa9-FFf0)Ar~3 z(@6qwkpS)dx%T{9hx+o&M9saK>a5^%DOEUrXt}H5j3?xstc4pq zW6^ymmQ(h1S|^Xfx!bT zfK4v!{FUstjS-P_W&E)$YP~CVAhIk~JuYp-a0Wz3Sc>yqnXH^KK3RD9*(UQIcJV&@ z#31hnjIc}6$3Bpiz!yceei7U;b|4uego9mXk1Uv1Y>WCzU&-)oO7lpzDarPDXV^%y zhut=use^TBOjEXPR)2fB6x58}xHvW&$C(dh#2M06Vb6km{9!LFo+Vc%9F+Oie?}SE z-ohB0sHoOA>yA3@&2qBG@}5`QTyNC7D4ec&3@#po`AGJMca5X-eb;xGviqK<{3UTz zT+yYfw#CadBWt8NYl=9*25WdrQ(QigJLa*<$@~~17VY|`JcOfN$5HeNu9QyJ?+E=v z%#Z3L8$$G@x-}$~nl&~Z(yTVck2lJr#d&D(rmMnxKlX}zr}kH5iyfBebR^s|E+1J2 zGmr}RQS7q_Vo64dj1A;KyP?qVeu%MFs8Ug2YMVWjr?0ea3(N_KK}UL&!CL0_}V*hDzja8+0=`BBCVDKHojYOn|)_D ztKOffG2|{??P`?zawMa$yKYf=vNeYbcrGxbq+&7PCZgV_GsHry@TqWX66lJ?)_ce?&iI|Rxb;>8RF z+2cAKG)|wc58&ZTOM@JUmJcEjK&qUuo%Oo5{8eHh+)atG(oYf>%SSk##ecHl=|D;QdWbd*&^9J zy<%87cc*QrVHh8NrW1&0QeodQa;41fFJihFBp5!yiuk~X0pYR7Sq}*eq(#CY_%uZ3 zRcvj#yrWn@O1X-TN>yjmAH+1isCM;&oY;wehVh*_vomn2B{Gxh8WZ$TizK zK^nxZQ$(#VcPGC*QE7fww|a|*?g%OCms1=}n5phJ?XqKz*@+Qdy3YZGHiuqtbMa>) zQ3V$dk#NHFia*&ID$do$JT4(Aoa3T=%9M2GqH`fJHo|WURb@4$> zt~}Ls{Yr?%k&NUc(+%}1>st|BvVtX#Pc>YU*Bs4C4hWLHJ0m*k_*d164ZAhGcZ9j7 zddmHi;AFfc+GmnKdqMFYJ&SFQW86t@2h%FFgSXIs8eo!!p+Oi*2`OfdFo@DLk|53SiUQ}HqVfBE0f zuT%9|uFN?5N7%&=QG*74ICide)=2Y#90uRSIdtKc`u*0;%J*lM8gd7@+~E4i%)sC? zOHAlaJOkz+*Dr>6KqMnPPoIYCuP%EQr8WDQoLMb9)f=+Ty$Yp2Ts4-kzym>}L-d;z zsU8H9Pa;gW&9~&9ScP?9ink?~;}Y8bxCjz|%ivw9G)N0GH(TC%ZQQz$h4U z+4Oa8oL^sg+jAtYTA;0$s&%=l zp3MnMZag$XJi^`+rmD0bnz(kiAjl9imN9{dO6o3aYcx~6)P2F24_K?86x_b6hf8GO zKyXs^wQZe$UUX*ZjBtxQicx-mTlccP@E6;R?heI%*}f zV9_pYHLT^adF5Lb9hM*WU04A!A14>U|H++&4eOgVX{hJx6Xu;oL*?PEYkmJeVXkQD`hnzjJ7g-UrQ_kv!|E=7fkGr4 zo?G35UEgf5V?Q{_Kj1_&&4+uoE)-(Gk4U&n zctW`58sS)7qZTy@PcEz5`wmVDw|EJ}GfCe)BhBGX(pSB#@cKs~o%iboi=l)U%qd(c z0bBeF?Gf`n=pO~5h%lP*Thh!I)Xv%2I#SlLgxMlrdde#CRs`#M z4s>kMef(Ns_ul{lSBiAa^Fyr|$R*j%R*DsWOgZur8QYtn+M78DKx9UZ2|LNce3Sr5L#_$%X^l6d+!mL8zVZ-3`v<&Z&cWoe+jEn+UGEwI!kb-ewRsrUL zLh6uhJ3Jc8wuZLfZ{q(C4|{z=sbcqu2?^s!JX{=jQgBve`4WuP8kuiVL>+pUKpT=m zWsJliUHhzUnDaVj&XbJ?Ivxk5<|L&!r??z~D_R2t(t%B+0#GFgHyH?We~#ycd??(Q zUVYne(3Mx6>6{#UtZGs{0tO+b79$5{37NSj;rV#O7%$Ve@n0-L>Ky56QN4yEujC{T z+ZrN>_(*XPO*?iA3V^^)>YIHjxWd_|Er#>UXEBgXVhQ!b0SUrD@waOl=^8=hpwl5g zFV>}=kn{7*s-Dl|ljC02^w!L!4HhjGsilbE1nz`>_<8o0=8-b~;Kv)L0sW9ON3a|F zOuOu;W0d-KUMc6-wbiv~f3=9f*FSPdAqu8bE{G<{rb-PK3sXfq?6$X@ehg`GYx
cH&(^A;gdPjx^77GP?ESbr)Zn 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 F{tc}t)<^&V literal 0 HcmV?d00001 diff --git a/assets/icon.svg b/assets/icon.svg new file mode 100644 index 0000000..36e38cc --- /dev/null +++ b/assets/icon.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..22f01c1 --- /dev/null +++ b/build.rs @@ -0,0 +1,16 @@ +fn main() { + println!("cargo:rerun-if-changed=assets/icon.ico"); + println!("cargo:rerun-if-env-changed=HIMAGE_GENERATE_ICON"); + if std::env::var_os("HIMAGE_GENERATE_ICON").is_some() { + return; + } + if std::env::var("CARGO_CFG_TARGET_OS").as_deref() == Ok("windows") { + #[cfg(windows)] + winresource::WindowsResource::new() + .set_icon("assets/icon.ico") + .set("FileDescription", "HImage 图片浏览器") + .set("ProductName", "HImage") + .compile() + .expect("failed to compile Windows icon resource"); + } +} diff --git a/examples/generate_icon.rs b/examples/generate_icon.rs new file mode 100644 index 0000000..e35faec --- /dev/null +++ b/examples/generate_icon.rs @@ -0,0 +1,48 @@ +//! Regenerate the PNG and multi-resolution Windows ICO from the editable SVG. +use image::codecs::ico::{IcoEncoder, IcoFrame}; +use std::{error::Error, fs::File}; + +fn main() -> Result<(), Box> { + let tree = resvg::usvg::Tree::from_data( + include_bytes!("../assets/icon.svg"), + &resvg::usvg::Options::default(), + )?; + let mut frames = Vec::new(); + for size in [16, 24, 32, 48, 64, 128, 256, 512] { + let mut pixmap = resvg::tiny_skia::Pixmap::new(size, size).ok_or("invalid size")?; + resvg::render( + &tree, + resvg::tiny_skia::Transform::from_scale(size as f32 / 512.0, size as f32 / 512.0), + &mut pixmap.as_mut(), + ); + // tiny-skia stores premultiplied pixels; PNG and ICO need straight alpha. + let mut rgba = pixmap.take(); + for pixel in rgba.as_chunks_mut::<4>().0 { + let alpha = pixel[3] as u32; + for channel in &mut pixel[..3] { + *channel = (*channel as u32 * 255 + alpha / 2) + .checked_div(alpha) + .unwrap_or(0) + .min(255) as u8; + } + } + if size == 512 { + image::save_buffer( + "assets/icon.png", + &rgba, + size, + size, + image::ColorType::Rgba8, + )?; + } else { + frames.push(IcoFrame::as_png( + &rgba, + size, + size, + image::ExtendedColorType::Rgba8, + )?); + } + } + IcoEncoder::new(File::create("assets/icon.ico")?).encode_images(&frames)?; + Ok(()) +} diff --git a/licenses/DEPENDENCIES.md b/licenses/DEPENDENCIES.md index 7d50708..d32bd1e 100644 --- a/licenses/DEPENDENCIES.md +++ b/licenses/DEPENDENCIES.md @@ -82,6 +82,7 @@ litemap 0.8.3: Unicode-3.0 litrs 1.0.1: MIT OR Apache-2.0 lock_api 0.4.14: MIT OR Apache-2.0 log 0.4.35: MIT OR Apache-2.0 +memchr 2.8.3: Unlicense OR MIT memmap2 0.9.12: MIT OR Apache-2.0 miniz_oxide 0.8.9: MIT OR Zlib OR Apache-2.0 miniz_oxide 0.9.1: MIT OR Zlib OR Apache-2.0 @@ -122,6 +123,7 @@ scopeguard 1.2.0: MIT OR Apache-2.0 serde 1.0.229: MIT OR Apache-2.0 serde_core 1.0.229: MIT OR Apache-2.0 serde_derive 1.0.229: MIT OR Apache-2.0 +serde_spanned 1.1.2: MIT OR Apache-2.0 simd-adler32 0.3.10: MIT simplecss 0.2.2: Apache-2.0 OR MIT siphasher 1.0.4: MIT OR Apache-2.0 @@ -148,6 +150,10 @@ tiny-skia 0.11.4: BSD-3-Clause tiny-skia-path 0.11.4: BSD-3-Clause tinystr 0.8.5: Unicode-3.0 tinyvec 1.13.3: Zlib OR Apache-2.0 OR MIT +toml 1.1.8+spec-1.1.0: MIT OR Apache-2.0 +toml_datetime 1.1.2+spec-1.1.0: MIT OR Apache-2.0 +toml_parser 1.1.5+spec-1.1.0: MIT OR Apache-2.0 +toml_writer 1.1.3+spec-1.1.0: MIT OR Apache-2.0 tracing 0.1.44: MIT tracing-attributes 0.1.31: MIT tracing-core 0.1.36: MIT @@ -190,6 +196,8 @@ windows-sys 0.61.2: MIT OR Apache-2.0 windows-targets 0.52.6: MIT OR Apache-2.0 windows_x86_64_msvc 0.52.6: MIT OR Apache-2.0 winit 0.30.13: Apache-2.0 +winnow 1.0.4: MIT +winresource 0.1.34: MIT writeable 0.6.4: Unicode-3.0 xml-rs 0.8.29: MIT xmlwriter 0.1.0: MIT diff --git a/licenses/memchr-2.8.3/COPYING b/licenses/memchr-2.8.3/COPYING new file mode 100644 index 0000000..bb9c20a --- /dev/null +++ b/licenses/memchr-2.8.3/COPYING @@ -0,0 +1,3 @@ +This project is dual-licensed under the Unlicense and MIT licenses. + +You may use this code under the terms of either license. diff --git a/licenses/memchr-2.8.3/LICENSE-MIT b/licenses/memchr-2.8.3/LICENSE-MIT new file mode 100644 index 0000000..3b0a5dc --- /dev/null +++ b/licenses/memchr-2.8.3/LICENSE-MIT @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Andrew Gallant + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/licenses/memchr-2.8.3/UNLICENSE b/licenses/memchr-2.8.3/UNLICENSE new file mode 100644 index 0000000..68a49da --- /dev/null +++ b/licenses/memchr-2.8.3/UNLICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/licenses/serde_spanned-1.1.2/LICENSE-APACHE b/licenses/serde_spanned-1.1.2/LICENSE-APACHE new file mode 100644 index 0000000..6aa81fe --- /dev/null +++ b/licenses/serde_spanned-1.1.2/LICENSE-APACHE @@ -0,0 +1,202 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright Individual contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/licenses/serde_spanned-1.1.2/LICENSE-MIT b/licenses/serde_spanned-1.1.2/LICENSE-MIT new file mode 100644 index 0000000..a2d0108 --- /dev/null +++ b/licenses/serde_spanned-1.1.2/LICENSE-MIT @@ -0,0 +1,19 @@ +Copyright (c) Individual contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/licenses/toml-1.1.8+spec-1.1.0/LICENSE-APACHE b/licenses/toml-1.1.8+spec-1.1.0/LICENSE-APACHE new file mode 100644 index 0000000..6aa81fe --- /dev/null +++ b/licenses/toml-1.1.8+spec-1.1.0/LICENSE-APACHE @@ -0,0 +1,202 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright Individual contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/licenses/toml-1.1.8+spec-1.1.0/LICENSE-MIT b/licenses/toml-1.1.8+spec-1.1.0/LICENSE-MIT new file mode 100644 index 0000000..a2d0108 --- /dev/null +++ b/licenses/toml-1.1.8+spec-1.1.0/LICENSE-MIT @@ -0,0 +1,19 @@ +Copyright (c) Individual contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/licenses/toml_datetime-1.1.2+spec-1.1.0/LICENSE-APACHE b/licenses/toml_datetime-1.1.2+spec-1.1.0/LICENSE-APACHE new file mode 100644 index 0000000..6aa81fe --- /dev/null +++ b/licenses/toml_datetime-1.1.2+spec-1.1.0/LICENSE-APACHE @@ -0,0 +1,202 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright Individual contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/licenses/toml_datetime-1.1.2+spec-1.1.0/LICENSE-MIT b/licenses/toml_datetime-1.1.2+spec-1.1.0/LICENSE-MIT new file mode 100644 index 0000000..a2d0108 --- /dev/null +++ b/licenses/toml_datetime-1.1.2+spec-1.1.0/LICENSE-MIT @@ -0,0 +1,19 @@ +Copyright (c) Individual contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/licenses/toml_parser-1.1.5+spec-1.1.0/LICENSE-APACHE b/licenses/toml_parser-1.1.5+spec-1.1.0/LICENSE-APACHE new file mode 100644 index 0000000..6aa81fe --- /dev/null +++ b/licenses/toml_parser-1.1.5+spec-1.1.0/LICENSE-APACHE @@ -0,0 +1,202 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright Individual contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/licenses/toml_parser-1.1.5+spec-1.1.0/LICENSE-MIT b/licenses/toml_parser-1.1.5+spec-1.1.0/LICENSE-MIT new file mode 100644 index 0000000..a2d0108 --- /dev/null +++ b/licenses/toml_parser-1.1.5+spec-1.1.0/LICENSE-MIT @@ -0,0 +1,19 @@ +Copyright (c) Individual contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/licenses/toml_writer-1.1.3+spec-1.1.0/LICENSE-APACHE b/licenses/toml_writer-1.1.3+spec-1.1.0/LICENSE-APACHE new file mode 100644 index 0000000..6aa81fe --- /dev/null +++ b/licenses/toml_writer-1.1.3+spec-1.1.0/LICENSE-APACHE @@ -0,0 +1,202 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright Individual contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/licenses/toml_writer-1.1.3+spec-1.1.0/LICENSE-MIT b/licenses/toml_writer-1.1.3+spec-1.1.0/LICENSE-MIT new file mode 100644 index 0000000..a2d0108 --- /dev/null +++ b/licenses/toml_writer-1.1.3+spec-1.1.0/LICENSE-MIT @@ -0,0 +1,19 @@ +Copyright (c) Individual contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/licenses/winnow-1.0.4/LICENSE-MIT b/licenses/winnow-1.0.4/LICENSE-MIT new file mode 100644 index 0000000..c9b44cb --- /dev/null +++ b/licenses/winnow-1.0.4/LICENSE-MIT @@ -0,0 +1,18 @@ +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/licenses/winresource-0.1.34/LICENSE b/licenses/winresource-0.1.34/LICENSE new file mode 100644 index 0000000..158b3fe --- /dev/null +++ b/licenses/winresource-0.1.34/LICENSE @@ -0,0 +1,25 @@ +Copyright 2016 Max Resch + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/platform/windows/installer.iss b/platform/windows/installer.iss index bb022a1..76ff41b 100644 --- a/platform/windows/installer.iss +++ b/platform/windows/installer.iss @@ -14,6 +14,7 @@ OutputBaseFilename=HImage-Setup Compression=lzma2 SolidCompression=yes ChangesAssociations=yes +SetupIconFile=..\..\assets\icon.ico UninstallDisplayIcon={app}\HImage.exe [Tasks] Name: "associations"; Description: "Register HImage in Open with"; Flags: unchecked diff --git a/scripts/package.ps1 b/scripts/package.ps1 index 07a0d09..31bb627 100644 --- a/scripts/package.ps1 +++ b/scripts/package.ps1 @@ -6,6 +6,13 @@ try { if ($LASTEXITCODE) { throw 'Release build failed' } New-Item -ItemType Directory -Force dist | Out-Null Copy-Item target/release/himage.exe dist/HImage.exe + New-Item -ItemType Directory -Force dist/licenses,dist/assets | Out-Null + Copy-Item licenses/* dist/licenses -Recurse -Force + Copy-Item assets/icon.png dist/assets/icon.png + Copy-Item assets/fonts/OFL.txt dist/licenses/Noto-OFL.txt + Copy-Item README.md dist/README.md & $Iscc platform/windows/installer.iss if ($LASTEXITCODE) { throw 'Installer build failed' } + Compress-Archive -Path dist/HImage.exe,dist/README.md,dist/licenses,dist/assets -DestinationPath dist/HImage-Portable.zip -Force + Compress-Archive -Path src,assets,licenses,platform,scripts,examples,build.rs,Cargo.toml,Cargo.lock,rust-toolchain.toml,README.md,.gitignore -DestinationPath dist/HImage-Source.zip -Force } finally { Pop-Location } diff --git a/src/main.rs b/src/main.rs index 30ab872..ff46cef 100644 --- a/src/main.rs +++ b/src/main.rs @@ -332,7 +332,16 @@ impl eframe::App for Viewer { fn main() -> eframe::Result { let options = eframe::NativeOptions { - viewport: egui::ViewportBuilder::default().with_inner_size([1100.0, 760.0]), + viewport: egui::ViewportBuilder::default() + .with_inner_size([1100.0, 760.0]) + .with_icon(egui::IconData { + rgba: image::load_from_memory(include_bytes!("../assets/icon.png")) + .expect("embedded app icon is invalid") + .into_rgba8() + .into_raw(), + width: 512, + height: 512, + }), ..Default::default() }; eframe::run_native(