From 8b0d324a12e53640e64b5f0035874ac34dd288c9 Mon Sep 17 00:00:00 2001 From: Tien Nguyen Truong Date: Wed, 10 Mar 2021 16:46:08 +0700 Subject: [PATCH 1/2] add references --- README.md | 20 ++++++++++++++++++++ react-crud-example-web-api-demo.png | Bin 0 -> 14211 bytes 2 files changed, 20 insertions(+) create mode 100644 react-crud-example-web-api-demo.png diff --git a/README.md b/README.md index 472a3c4..fb1ede3 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,33 @@ # React.js CRUD App with React Router & Axios +Build a React.js CRUD Application to consume Web API, display and modify data with Router, Axios & Bootstrap. + +React Tutorial Application in that: +- Each Tutorial has id, title, description, published status. +- We can create, retrieve, update, delete Tutorials. +- There is a Search bar for finding Tutorials by title. + +![react-crud-example-web-api-demo](react-crud-example-web-api-demo.png) + For more detail, please visit: > [React (Components) CRUD example to consume Web API](https://bezkoder.com/react-crud-web-api/) > [React (Hooks) CRUD example to consume Web API](https://bezkoder.com/react-hooks-crud-axios-api/) +> [React Table example: CRUD App with react-table v7](https://bezkoder.com/react-table-example-hooks-crud/) + Using Material UI instead of Bootstrap: > [React Material UI examples with a CRUD Application](https://bezkoder.com/react-material-ui-examples-crud/) +More Practice: +> [React Pagination example](https://bezkoder.com/react-pagination-material-ui/) + +> [React File Upload example](https://bezkoder.com/react-file-upload-axios/) + +> [React JWT Authentication & Authorization example](https://bezkoder.com/react-jwt-auth/) + +> [React + Redux: JWT Authentication & Authorization example](https://bezkoder.com/react-redux-jwt-auth/) + Fullstack with Node.js Express: > [React.js + Node.js Express + MySQL](https://bezkoder.com/react-node-express-mysql/) diff --git a/react-crud-example-web-api-demo.png b/react-crud-example-web-api-demo.png new file mode 100644 index 0000000000000000000000000000000000000000..07603b3a9fa88609b5479a9cf947e1857f543cbd GIT binary patch literal 14211 zcmb_@2Ut_v_Gc6?ctr&p*dP`Z6#*3~(qaJ-5wHhoQ9)1vQF_fm5ornv0#b7o0RbVj z&`FdkARsk_76`qBkN`Z1;#-pU~FP0}l!Zdn&dcsGe(yLIz{ z4oTuG{JQ=ISxfB?E@n4Ao=9vm|DtB|?Yq%+CHv<3!yld}?+-XpEoJuh>zfO&l7AB% zRO1KcKYK}exHDwOXzwK{wc>?K1vy*f5{{MGRXCI9eN6;qf{E6j$z>R4-euL!5@%MK zjwX+~n8D@O8^T~GPJ*v4KvSjL44m=jEID8abWXeq7IOz}voaT7NZ7h%%k(Y^`9+iI z%eJKh2hM}r{s4(X8im?Tf;CF}^z=gDqYk`wAD=tFNp9JXetigA#Vi+m6*i1M71{O& zJ|sj^V76FiL8zqlU|-wba6Ycg#T+|uAa#qN<0=SFA_ORPKkdeja{6E}d}aPZWF^RG zP91c-&cF%=Ew3{K_{l7}MhP)I6Nm~TWtaFp5?o?NIm-9*r3p*ps!wLzfMihK+KMwF zNEY|as6Gesy33Hf>pj9=cC%^P1<&&g&J+*wtr?gCF)_WUh49}^!{ zBPSjmcgiBNiPQMqu;3z#MH&Fu?`Zz)nMgUjU|^DPg4MDDjo*lEtR6cgXx7)W^`Zy& zDDQ5XJxAfTmm{wErmyJzMDXdR1woAx`m@^2U%mFh9is8~pi01kP}9?vwGJ zz~u3U`Ld%HUdwM-va>jsSb%fCr5crd#z*i*eNX`U^i&ny9Q1gHj#ZX*iQ4+kc!%KC z9bjzU^l~C@c^eOj;$@riY41W1Md*Aot`y;Y)3i;N|M?DPJ>D$JeOa1tSox5`(##?p zMHdXeBKr!6k#TYGa@dZ~XmU@nD7-g5{Nj&`U}JiLQLtMwQ>`M+3~<|z z-a>MuJLfGM%<^q55e~DSyCPAk?Cc&?1vgrr;UVB2s^WxB)D)u)!A2uUh>!aX!FR8t z)4lr#LgxfCDXHV`yKlEDuYGX{Hwdd$KCtZ=-#DMYeh`ycGBx5{!2d;oF1rT>KG?~n zLz_6Z8U(Ip;}K5C_Jh4n_kAw@AZ)~+IrxDQzjI+PYOVw0A73RFn%-lW6!eI%4KhI3sJKM z$8(o0>z8e)$$KkxJ-u%rf&8F!tCvWLss?syu}kxNV+z))ESx?1$p1nJVSq|LdiM0r zYf4Xh6`mFy=c8Zk(bKy)(2XfWJnD2lj}%;pwC#a=BLVgr#A2DU+>JG_lI z2Mld(_FT8|Fu$qSujcs6FW>YrdiIt3`b>O(-Ai^pE%`1~QjqQM3bN_dyv8={ll264 zow6)AUn8LPv$Wa2Y8u-vI8U}#@O2Xhh(+gntjG_7Qfwc?=erL_8S?gMmtl|h)ixO` z@~`$fJfcrlgp>>n^}#64vH@^CFh9|tgFw!w=V%;GplQMM^)4Rczws1&`HG40 zo2enn9U=(evS0BD$A8v>ofuuM+Z2GhOyrg)D}Sgc>FHl7-}o)Ao_zr;hGlLCI+Y^O zy!88AA~BROMUMcbmxhQ#t;8aiD)!Pvt%MNA z&usM$-oYYt<9y>%d0idcUR;8|aFyXuT**wh>skjex-wIMYNm+a6VR(g#LwJxL596X z*WGp5s5$)Eb3Z%2F|UNZ$Mf0{S|dTSZ6-3MahuvNt!;BP#V$2XsuX3G*gBP&z>Kv; zzJn66S|T&{%VIf#bfJz1_?PrV($#eXF6r4O*P&bloKOUvw>}3$uWGp*{N4TZ~Ssy6+2TMz-?wt|MuWgwIDl`3WvhR#*U2 z@qxV49DT^X0Exdi5%@xWVOYp|y6I~!_rtin(7f~q+vWkaRQ`h{&I2^%j7Ddf>o;Q~M!o+p>is{eN>=ee^%LkoM8ZfS>#F+znLkeYgv)nv`SaxMj;b zsv_S4bNM%3YSl=!1HsktfxG*749$OH0|kBn;FAcvCMOL4Y@55TFE4!u!xT|P%SNrR zF%b_)LV;bV6AW2kd~8$)NAU_h1>?`Q2;6-MjBY}X9a$bxXO)a_wsUnr-A|FWM!t0!?N*mnt4&0WuXKpUr_2`Z5{PK?W^&3`5v%*O))(PgS=`k^#ZTy9IVzORi zjhGaZLtuR*6JK&#Mj16SMT#X&nr{$H4LPTYhl9=8Ba&zf(6jg}!DUH{c=IcPmD!n@ z)g}wfwBMyEG|=$HrxovxcbQ70Rj@}~Gj88T-o6ibD%?}z-^hqV`P`on+0#RD-U?WS z6UHHzETE_BIcavSlbAw7KgnY5z+SFIk6~K>&`p;XI%%X1{{Bpr$M2ITi@u^PH`pd9 z>-usW@?E%`0JgrK+AT2W;)<`9IM#b9#+H;xBM)$vQ$6LglYsH(4k8vAo8~)B(Vr@D z&3F&FCp{uLxPPQz)oTUstJcILdJNJ}?cN>{;CF8$#X2T^U{f7J7E>dWBs&9hX zlNj!VuX;f?0HY)Kd`~{4NS~aT@4J;^tyDzaL+}qc88Y9=IRG^H@3{ASP4aCq)gs}P zP@pn`)9$r0P&j$xR>n-#L}=VLx@?(>`N#1I8&=#a5%ZRLWJ+necD@wUXykT@DqmKITyVZ4V!hnj2!CGz54Jc^0YAElm~E( z4ImiZ>1Dnc2d#?Z%Ta9KxICSDK@asX|8|B?esZ4_kQa`dBKR*~y_|95IkcQ&=2yOl z7Wb89b~ECQD5KEN6_tS*o{%@qkYTX=il*0o8hj2%?OHm@&nnEO(9EkLh4``<>k~XT z<17i>UQ?*Nnu&4+GM`>1eK=UcHSAS;2JRS3KK8 z-zZz5jqmTFdV)Ka+0j*|L31MU-aPcVo5Nl_$swQzh;bNyl@W!x`(924QBF~10Sd~xaXw@AN9mvuX5cJgK`&dJ7n*_QG%+%- zOv0|mumJWNC@vF$!6;%dSgpkWv{w5d%k^Iy{MRy!f>Jgi z;K9OCf){ft9HGfb3i)9+-iaYlXB-g4$&7dlCNTX?#*{ZDZ)*r9+Va$6F~CR~N~vn1 zP4w&HE0M z6x6HuHlqO)g}g3m|7qX^td^GgoV_MM#{V>ATJusPMWOk7EVYMVgq5Kfb|@SMm7&6# z0QNbsRw95cY)Kc{hlX#eH3eb4&jP)cxtL03tQhJL8tT923!J=?pG^aa?NqPn?`@}@ z7p9#p{i*8cIf2HBbc%r3UxTgQGamn(eKM2+@7%2q!swIoZz2czZcm#IKwT_Q;G?^7 zcJz#N!B~wE4x8-7j?G3a^0w7Vyslz*_LUD!9-=gig#bwo+vy^;mDbqOimYl?A`WM zBhv@Y?9j81eD$Py`1LiJfv-8kTs*jaTGT;H@zpi} z1K<1YRTx714o<;kARn2MvX`(sDgDKUAvflc$Vnvq%Y@O1K&UsnFtZo){u`x;>Tl3x;OuxF>dE@ zF-9j*vFmBV%&8rr?0n-oM62qtey>Vwo?^;Q&K?O}Kcl$5ohZ#(tz(0`CBeRh?`s@m z+0N6amZXMkZ))xJ=5|{3$&XXTY?5muofP==oNMvLfv4X44lBg1#Z`%S_pfMjoywE3 zd}vJ@>D-6=_}9V!BOAQVw+P+cA%IJ*^9k9z2GCYSoTOmA&Edkmdlu|}+fgX^b2npN zo|t z`f`ymXnn-|p_e0?5Bbm_HkfQUZ4tKJ*d6$wjTHVjl38sk(NnwQ&I7Cu6)aY=#3!&XqGe-&$Fk-PS=dy?#nFO zmUvY@ZX&~H@7ryQ6`on(YNJmxV-5xqt+c8Mf8vnq{joG1&oKw2b?M@#aD)#z-SRa{ zN-)zXhBZwPmnPVg_bKvSm1W9kxqA?9)A*X1%^|=i(^LESo9?cx$VOQV?Y_Ruto-0;_4PV$}j^@z)p zji^%R{QSqsXE?o9>ZoOua@C3c(I97EVz3=;rNp&rb}Y26EI#i9(s~hBr{ZwRO*g5` z9(~krbYx{(!U|0f@}}ojGMP2aBch|PyQeokjk;4~C|Zjkxibdd@sO5RwQ!S^$brT1 za!v0BE85YX_(xgM;eh`=Dq1;N*Du#7+0tj~l~EQgEJ$Yq9pks4tehjItW^!ECAnU> zASO0Cn_#WG*vGKJ{E)KtZcv%V+FLsyUrSGB6m0PR{y=@;89Qw$ZJPnS-}3=?11Fgq znWRi?6j!R8iZa#aQ_ALvUE!V5*60>$Bm($^8(MKy)-7Y{NXJqw(4%D+)a_;~7bhAb zO30;dOLTt~)|=blWJ={3Zr8NfihJ?Y*ka^729I@r*_IYO^+N_}msmw_p9@jMXkoWL zXP2;rtKH&W(A*@`-l_y@_WfA&w0uWhN&w81x*KHxH{#;EwGP=mjO%sXVu+X=k42lw z-9u&rPchb`tY%3H%^n=ui3kDqq}ZMXqpjtoS$0SYa|ndXnQADI6Xp20+TxOp#8 zOjBUx>PLoxocpV2^vO0!Xog%2G{c!OpRPu|Y*JU55w>FX*P?u1>S)ZV(`{WVOKD>+vZ+MtXZH*Q$T?rmUV0$AL;#73pg%kIju&Tp0$&PL;!e>lkeeH{@4{=j=K@5b5 z2jhnyTH$*?3%(z+j4zX*xmo0zDEa$lrC+RK{!*1@TFEblNt=9a`7t?Y={6cYDViHy zx3|h~N@<)JoKDvDN(S%ICc_|Rb$L>pB1Si@7fvr|W^9HI-X@A?FmX?!?r8dummWx? zt|H|Z6H@Tcl8L;bA>Xk9YTqz%J zl|c=tyI-SutIN+Pro^K(Qpg&t**IBlZ5l*xU^#ss7fy~ol0s=B<@sq`yNpR`ly;}? zU=qZszM&m2VYh)bIFg-UI6c_;c zJ4&L3uoK_qA)Xcy6^J)(y%friPzbXr_%ijFTI z^ajq{{dDQE|8-Wh3XCPPO^!e2BR~>3F@#+w^5yIU#mCS_u+YR=aE*N%Zf4clAHAq}# zJhhLQ;XrlMiMW8%&biW(ypxGAWx_`n9L@S3DjN%2g^uX!RJMX5zgQ-`a3!Rc?9DCL z!1nx#36H#b&G2Las*|zK+EFIAvWORoIEC_vQK|T4)K3IBLT-!W=c<-g zd)iQIE~m7zVj<8T0dI}4EsE1ng@*}6S}X;$d^>k6u=;o~yCQyC zFK%<-y*l#zPnvh~wLY}_>wTqmVagwT)NqiPya)DUNXXYqMAXgYgkNW&7~$@07y&O< ziVVcsVz18Q_iKSnrv-U=S%#+YuI&t?qG>+FIU-?*1HVyZyM*o`6&Xjv?8ZK2oUc$981SlQj^ zpJqQiccgFJJHwyW=>N{eyidHc;6!wD`shb?E1T2kU&UFps8i6wF?IPJAl{|3SbHOC z$l2XM=avl1{=FuQ@+6XhwVJc&Y}@j?7XE5>7-7Mmz7dn2A|iYr7Up1f+MfEXlEoO& ziGGh=!yb6EN8a!YqcFkT`ON%15gN6Hyb2SIBkqNs&U3F`MGTqsp&w{ea{U8wSxV(+ z3#0`1Cj;K^nIe7sqI)k7L63`g9GT0%_}Cuy`hu8HfzghN<(tji05w<$5V({0PIfh} zBeW=h0c|Farx@l)y1MoWzaQQoH=$&<_SAhyI*p! z5oVjj1R-$9@XDhp*lmJ~C6NaE`LD1MKajGH($HA71Y8}wHHvBz<P!E-qM zcPY-T8to@oP4BCHM37in2!oUuHWG*btarKJ^dl$cxzrg_DvLj1{q)$wQ@m zRduN3BowzOjKR{cM?3ihFhlCdWTXLP?cw|Qp<99c&({RwVvlxEm*=cna;WV6s69%2 zKf}epn;3psXd(YT$bR`llTP$I<3`PK(+bRkD73Qc2-;TO1P zq(&S4apbUTe9h(rTI^IqQ!-Uvx!W>sBl9%^vfv`M*lLldvak?Tkl3&`Op>rc;+r>Y zA9{yufDosTX~QO=SpAk4tW^X?&t8Bfi9rzq6ca_3V^?+tFr)Q3{s%Nf5Ba}pI$^3~ z2+!#m_f`}}@@k9PlDd}Jm<-39hFq@SXU{jWJuZVMy58+7FKSm0T^G4u0v^x{7Y)I_}*{LEMPvuYy`p@>?f*N%e9nbnWf z6ix8Sa=^+m#6wym3VI%Mv(+gy#uMkyorQxd9oWmxdd7{T*xkQ>?j5>YfNM?PP$xA$ zjRMD=_bB5r$LFI>C2sOnr~KW%Kp88>j*F$K4E3))$0Z_f(Zv!Hw31{nJ$8ZA67j25 zM_vm~lY)=MsA;Yp$@ozWcf7~bbQT&t&mF+Mpt;jB{r(1WudHs-kvFA72}{Wqx9GGX zm0PkmXa=Ba(A-keBn8uF<&8Vy0;6w+I<6^Zz=Bh zYBka4e5EDA-Yg)B?HP;z1IOMsE(MtN_3Q~xZJ$XC*?e=7*rP^tSa`u+BMAs7%FFql zco{9EonJw&2}w&E9txN)jSt_V$2koSq0_Pv$GrKE4UdhKgb~4nOo#W1d{Mfz3YYPY ze=KLMx~lgqWHoYn9dGjQ^ZL})P#14%q1Vz4qz`?ZORPgtYu3lTmzUVA@%cPt;{pF# z6envwL5&rW5bIf&s*3tF*xOAghjO%@^oGPN$I8xbLLct!L1|!gpz)F*hvKeqB~l8Y zT5HZII#pV-cON2#A(YPMeZB)WN;UcK{65r-ytKN#3_*RGXL(+OmDBjWWw7cE1-n@# z@+?@DdrZw3tcyDT66d<)GYIx*)RW^y+Huj9E^|tf6~i;KG}`_2j=8c|x%?E0 z@|&Zt3!r!jyx_4McZ+zOKlWCN2=AsYsi+W4zWlyJmB!Ux1A%cq9can|H%E z|2lEa)w0+ul1q`v*kF0!F4^o>uXB)O^KhJ9$vB-2ZyrD(Ed9<{Qoz27XpyuzSL5`X zg+V&RSwhkk-r54eFr+x)>!D~__y-k4pj!|R3Zri$K&dszG((Lg{%j+%T87dSFCh^N z@4|#Vh(Yd_um` zVBd2i{@@m1MCi~h@9L6Wv!DO{PSQ}BgTdQ@7o!)-UUmkD!fVMGPou1U#Mai1V03NQAq$=ZIL_ zhRR#=9@h7W-|@q`kE_>*xX&e9Z~z>B>1-Munic$|A|j^C+;1=8L8a`_U)}i zg*B1tc+hbG@Ekrm!T{7~)^uF0I(i=T*TNp+l7fb>|KaqVsd^4jfuv@)wcEGv~kf!nr4`cvVj}g*3%lotPez=U>7oDE0fgj0*ChxX=NX3x*0BNp@`D^mzuA>SM*0#q98Fm zo12jc+HR7XJuP>n5|?+F&f57h;*gcOH~S?2mB&+RuXkMHdNqBpF1HZrV8^VJetI4} z=mC5Y%vZ6}kO~T(TcC(b*Y0;cinCMJlw3#;ZR48HEQ1ZIg>?A~2D&_y zJQvR9t<>c;c4gJ914 zkB?qiohD$fS9hH7^CpO^Zu`xrs9j{*4)R=}x7*DK+{aHayhk4>?_0wc$&am$(-dtg z>74r9w2ia*bYugfu07p?qi2lJH!~4+f8(PM6g>J4isjrZuuxWm{+sje+nRQwy%KFT9@aO%O zF+Agq$Au#HXw}@t1cp^D-1O83U2QKUFrAR;fBMf9ioSL>a2`TaVL$u%jrTsAZe1sY zX`9MRoRyl;-)_t@zusR3R-rjw2(as|(_bbqUkfrH~8**d;-1SF${IJ_T{6ykL!x zYvAG-jb%FeaDLZ7D8CMKJhTV(p>g-@h^XfSt;?vaJ*U1{8w$-k)ORY|)xy5n9*V;b z1M<@ANSsCq(j_3M=lu&lcgJcRAQFmjN>*Pkk2D8Ye&X+cMhtmnOZ+kNLYTd*MMOyf zn)5?(&xrf@Or>L)(;d!MYo=zzgn`nsFi;BS6Z5bn@5AG+sIEQ#6>H0y5&qoXtOwUWY3R2T(Rk!0aw|Hv)IirSYcLIkMfhBPpb59Z0Rj zLV(3uOz}CbunnSXKZ!bMoR#cXT1G9zmQGgIKZTgMs=be9+?A>M=;k}m3qPexA6T&{ zx7>BJ4ujA4d)L)x)ALk9;?m7w&cV0-^|?s>Rki?6F+H@qvB2x7yG3qy+6t*Uj?Ty& zrpiy+6^uJL(MyWVEv<`+tOyNWEv>N@&W*~_)e4CVfnW7O=(M0Mio_9DNozCPyKOZ{ zCX7(9PFLc%V4_c}R<*;-9@F8`OIOkj`4)|)}<5fn1cx9w)m=%RR>5(niPPWbRk zx@As*jJSiiwN|L~>Sv+DUGW;DuO4OA?KOM6&WdMMN9f7rcWi$?|Cpx8UkH4;xF?HZ zy7_Lg%gGLc=G3h%tNLEZ4qWjc_vJ`u6xunAIM^+*V||H?N&dPnhuD2jj9 z&Hn{C@t-K^KX*m>>k&lk4p~@I=^8~e%=~YH`rj$;zvV>!?XZ90$6piwH_Q4bI6;X7 z+k4I>SzSH03W8yE)5#Sc>qt6)%i=(p17|^Ps{rE1>G@8OE$AiOEDo=m)>$;7Kbw{F z`(21v4t3;qr{-I!9s&s8bxKI)_H8$vk3MOX0{q?v<6r;yoKm@4Hf;=9APitbfJ=02 zu2PHXrhYlAKz65i1Sx2V4CQQVQ6;zmRwMj~_J?V5`07~=3fvqNSGk9BJ0U4aI<$9R z$c`OMZF%R=ii*S~l%x@Vb4nqJ6A)U-2Eiys<{f={a(6R%Dg7){_JF{{AEw`_gVO{YZ7{;nG@G@?tq&h z-K7Z)Rm`YOfbhV{KK}Dslosvlz$&z$$xS2jz8kUEF7KH$0$Z$j%Zn2}@3Tzl z!A6vOA?2Z)b7CO+p?f0xi*<><(5?YvpQ|6Q>bZ)FzDHyF`gQ&^)o5G==y#^w%F^9Ui7|Zleg83T#R8Aw=H5ZR;@1D- zB($f_f+AsvC4(*rl-4&CK3Z`vmu99$HX+et(p^i@)>(JI>KwgQraDm0cv#;4qzyce zQshrW8C;kfL080Ol|aA|LrvTmX!;I#nPPf8ME*c2Hu8U3;r~#J{vC_?&-%V<*8jGS z0`^lV>7`Eg>m+adU>2ov)1J}jN?b|$*JE7&$&s#qoXA*h zOx~P?r#eSe@gx8yN-4fb4x_m;#|K1UP-ZT3nM|Mmy$IdUqj{;bR;!{(J<2#PPg)Fi zC5$aUz_|lLMWGwIdhQAiF}gy}7A6cDR_nJRAdgE(jKQFK=%5*NutHKWDNWvp^dEVC zQq?m%NrClBoB-0AsfRK)W2kpr1a(kb% zje}10+$qa192xSkKny{Y6T~4ZLcbJfmBE-JP$^(#rB~KlH>Rtv%h_U+nc=HrK`A#5 z+0S~aZJj@Dbp~FhtU5J{=KC5Q5}xp;OC04VMcl}Cn!VEaG4TRPZ060tUVPf(P7`NO`|LIVk-H=#6yy0TjSGd29bIg9w;YfO{;=aY;7 g*yd`X0*S-qi|4k-rq Date: Thu, 11 Mar 2021 17:33:29 +0000 Subject: [PATCH 2/2] Create LICENSE --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7f8cc04 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Tien Nguyen + +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.