init the awkward code

This commit is contained in:
Bao Nguyen
2023-02-13 19:32:10 +07:00
commit 27170afcac
5426 changed files with 1244579 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
{
"files": {
"main.css": "./static/css/main.1c469a44.chunk.css",
"main.js": "./static/js/main.588b597d.chunk.js",
"main.js.map": "./static/js/main.588b597d.chunk.js.map",
"runtime-main.js": "./static/js/runtime-main.f02faa8b.js",
"runtime-main.js.map": "./static/js/runtime-main.f02faa8b.js.map",
"static/css/2.d1c82cca.chunk.css": "./static/css/2.d1c82cca.chunk.css",
"static/js/2.3d8e3fcb.chunk.js": "./static/js/2.3d8e3fcb.chunk.js",
"static/js/2.3d8e3fcb.chunk.js.map": "./static/js/2.3d8e3fcb.chunk.js.map",
"index.html": "./index.html",
"static/css/2.d1c82cca.chunk.css.map": "./static/css/2.d1c82cca.chunk.css.map",
"static/css/main.1c469a44.chunk.css.map": "./static/css/main.1c469a44.chunk.css.map",
"static/js/2.3d8e3fcb.chunk.js.LICENSE.txt": "./static/js/2.3d8e3fcb.chunk.js.LICENSE.txt",
"static/media/style.css": "./static/media/icomoon.e405fca6.eot"
},
"entrypoints": [
"static/js/runtime-main.f02faa8b.js",
"static/css/2.d1c82cca.chunk.css",
"static/js/2.3d8e3fcb.chunk.js",
"static/css/main.1c469a44.chunk.css",
"static/js/main.588b597d.chunk.js"
]
}

View File

@@ -0,0 +1,83 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="209.817" height="255.149" viewBox="0 0 209.817 255.149">
<defs>
<linearGradient id="linear-gradient" x1="0.43" y1="0.005" x2="0.43" y2="0.577" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#dae0e6"/>
<stop offset="1" stop-color="#eff1f3"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="0.5" y1="1.739" x2="0.038" y2="-0.34" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#536db5" stop-opacity="0"/>
<stop offset="1" stop-color="#0e284b" stop-opacity="0.212"/>
</linearGradient>
<linearGradient id="linear-gradient-3" x1="1.146" y1="1" x2="0.038" y2="-0.34" xlink:href="#linear-gradient-2"/>
</defs>
<g id="组_664" data-name="组 664" transform="translate(-522.193 -235)">
<path id="Rectangle_Copy" data-name="Rectangle Copy" d="M375.991,53.044v75.7H166.174V88.733S173.35,10.018,221.553,1.41c40.324-7.2,64.98,14.371,124.765,37.694C370.2,48.422,375.991,53.044,375.991,53.044Z" transform="translate(356.019 361.405)" opacity="0.61" fill="url(#linear-gradient)"/>
<g id="shadow" transform="translate(732.01 449.861) rotate(180)">
<path id="shadow-2" data-name="shadow" d="M0,6.851l74.9,4.264V0L5.082,2.309Z" transform="translate(74.905 11.125) rotate(180)" fill="url(#linear-gradient-2)" style="mix-blend-mode: multiply;isolation: isolate"/>
<path id="shadow-3" data-name="shadow" d="M0,6.851l74.733,4.274V0L3.142,2.309Z" transform="translate(74.905 11.125) rotate(180)" fill="rgba(216,216,216,0.08)" style="mix-blend-mode: darken;isolation: isolate"/>
</g>
<g id="shadow-4" data-name="shadow" transform="translate(640.334 443.1) rotate(180)">
<ellipse id="shadow-5" data-name="shadow" cx="13.039" cy="1.564" rx="13.039" ry="1.564" transform="translate(26.079 3.129) rotate(180)" fill="url(#linear-gradient-3)" style="mix-blend-mode: multiply;isolation: isolate"/>
<ellipse id="shadow-6" data-name="shadow" cx="13.039" cy="1.564" rx="13.039" ry="1.564" transform="translate(26.079 3.129) rotate(180)" fill="rgba(216,216,216,0.08)" style="mix-blend-mode: darken;isolation: isolate"/>
</g>
<path id="Path_39" data-name="Path 39" d="M6.519,2.9A17.045,17.045,0,0,1,8.58,13.985a110.13,110.13,0,0,0-.9,15.524H4.263L0,1.52S4.842-.31,6.519.046,6.519,2.9,6.519,2.9Z" transform="translate(688.045 411.621)" fill="#9ea4b8"/>
<path id="Path_39_Copy" data-name="Path 39 Copy" d="M6.519,5.13A17.045,17.045,0,0,1,8.58,16.212a110.13,110.13,0,0,0-.9,15.524H4.263L0,3.747,7.909,0Z" transform="translate(671.956 408.855) rotate(13)" fill="#9ea4b8"/>
<path id="Rectangle_17" data-name="Rectangle 17" d="M12.366,1.261,8.187,0,5.378,1.261l-3.956.412A1.564,1.564,0,0,0,.08,2.8h0A2.074,2.074,0,0,0,2.066,5.433H10.28a2.086,2.086,0,0,0,2.086-2.086Z" transform="translate(683.516 439.753)" fill="#302c48"/>
<path id="Rectangle_17_Copy" data-name="Rectangle 17 Copy" d="M12.366,1.261,8.187,0,5.378,1.261l-3.956.412A1.564,1.564,0,0,0,.08,2.8h0A2.074,2.074,0,0,0,2.066,5.433H10.28a2.086,2.086,0,0,0,2.086-2.086Z" transform="translate(660.393 439.753)" fill="#302c48"/>
<path id="Path_31" data-name="Path 31" d="M28.22,28.013V0H3.211L0,28.013H11.416L14.931,13.59l2.477,14.423Z" transform="translate(668.778 386.259)" fill="#302c48"/>
<path id="Path_32" data-name="Path 32" d="M0,31.606c5.663-5.352,5.8-5.2,8.285-8.558,1.187-1.6,2.551-2.858,2.476-3.047C9.657,17.2,5.85,14.083,0,6.531L3.518,0c8.54,8.186,11.122,14.3,12.421,17.583a7.538,7.538,0,0,1,.727,3.178c-.623,4.119-6.189,8.878-16.281,14.235Z" transform="matrix(0.995, -0.105, 0.105, 0.995, 691.611, 346.91)" fill="#9ea4b8"/>
<g id="single_thread" data-name="single thread" transform="translate(652.847 438.466) rotate(180)">
<path id="Path_36" data-name="Path 36" d="M5.026,5.689S1.621,1.588,1.309.24C.565-.635,0,1.166,0,1.166s2.064,8.729,4.121,10.12,2.057,0,2.057,0Z" transform="translate(12.114 94.082) rotate(180)" fill="#9ea4b8"/>
<path id="Path_37" data-name="Path 37" d="M2.959,92.753C-2.963,84.448-.274,67.6,13.549,50.567S41.9,15.265,24.441,3.792C18.934.173,9.14-1.836,1.394,2.32" transform="translate(32.451 92.753) rotate(180)" fill="none" stroke="#cdd4e0" stroke-miterlimit="10" stroke-width="1.8"/>
<path id="Path_35" data-name="Path 35" d="M1.67,9.451c1.226.293,1.9-4.333.672-5.18S1.7-.155.661.005.13,1.537.08,2.516.444,9.158,1.67,9.451Z" transform="translate(7.703 91.268) rotate(180)" fill="#9ea4b8"/>
</g>
<path id="Path_32_Copy" data-name="Path 32 Copy" d="M0,31.606c5.663-5.352,5.8-5.2,8.285-8.558,1.187-1.6,2.551-2.858,2.476-3.047C9.657,17.2,5.85,14.083,0,6.531L3.518,0c8.54,8.186,11.122,14.3,12.421,17.583,1.7,4.3-3.17,10.839-15.554,17.412Z" transform="translate(678.209 350.365) rotate(82)" fill="#9ea4b8"/>
<path id="Path_33" data-name="Path 33" d="M5.268,0a4.064,4.064,0,0,1-1.3,3.136A38.305,38.305,0,0,0,.216,6.351c-.772.98.772.98.772.98L.216,13.658l6.426,2.875L5.268,21.89h7.7l.969-5.356S11.695,6.475,10.283,3.782A6.473,6.473,0,0,0,5.268,0Z" transform="translate(678.243 322.536)" fill="#9ea4b8"/>
<path id="Oval_8" data-name="Oval 8" d="M7.1,22.163c-3.271,0-3.727-3.855-5.639-6.358C0,13.9,0,12.288,0,9.643,0,3.523,1.339,0,7.1,0S17.531,4.961,17.531,11.081,10.724,19.484,7.1,22.163Z" transform="translate(682.73 317.162)" fill="#302c48"/>
<ellipse id="Oval" cx="3.651" cy="3.39" rx="3.651" ry="3.39" transform="translate(685.026 315.858)" fill="#302c48"/>
<ellipse id="Oval_Copy" data-name="Oval Copy" cx="2.347" cy="2.179" rx="2.347" ry="2.179" transform="translate(688.787 315.858)" fill="#302c48"/>
<ellipse id="Oval_Copy_2" data-name="Oval Copy 2" cx="3.651" cy="3.39" rx="3.651" ry="3.39" transform="translate(691.395 317.944)" fill="#302c48"/>
<ellipse id="Oval_Copy_6" data-name="Oval Copy 6" cx="3.651" cy="3.39" rx="3.651" ry="3.39" transform="translate(693.481 321.595)" fill="#302c48"/>
<ellipse id="Oval_Copy_3" data-name="Oval Copy 3" cx="1.826" cy="1.695" rx="1.826" ry="1.695" transform="translate(692.438 316.901)" fill="#302c48"/>
<ellipse id="Oval_Copy_4" data-name="Oval Copy 4" cx="1.826" cy="1.695" rx="1.826" ry="1.695" transform="translate(683.617 317.944)" fill="#302c48"/>
<ellipse id="Oval_Copy_5" data-name="Oval Copy 5" cx="1.826" cy="1.695" rx="1.826" ry="1.695" transform="translate(682.611 320.552)" fill="#302c48"/>
<ellipse id="Oval_2" data-name="Oval 2" cx="2.086" cy="2.347" rx="2.086" ry="2.347" transform="translate(682.596 328.374)" fill="#9ea4b8"/>
<path id="Path_30" data-name="Path 30" d="M41.642,12.2,30.545,1.914S25.2,0,21.73,0H16.6C14.418,0,8.2,1.914,8.2,1.914L0,12.2l5.2,7.388L10.9,12.2,4.548,47.468A45.2,45.2,0,0,0,16.6,49.616c5.6,0,13.95-2.086,13.95-2.086V14.715l4.1,4.875Z" transform="translate(665.208 342.976)" fill="#fcfcfc"/>
<path id="Path_34" data-name="Path 34" d="M2.447,19.974,1.83,0,0,5.547Z" transform="translate(683.955 394.336)" fill="#3b3c45" opacity="0.195" style="mix-blend-mode: multiply;isolation: isolate"/>
<path id="Path_38" data-name="Path 38" d="M0,22.833,6.7,0s-2.751.86-2.9,1.962S0,22.833,0,22.833Z" transform="translate(674.153 353.377)" fill="#deeaf4" opacity="0.55" style="mix-blend-mode: multiply;isolation: isolate"/>
<g id="Thread" transform="translate(630.587 442.057) rotate(180)">
<ellipse id="Oval_9_Copy" data-name="Oval 9 Copy" cx="1.826" cy="4.693" rx="1.826" ry="4.693" transform="translate(15.126 9.908) rotate(180)" fill="#302c48"/>
<rect id="Rectangle" width="11.475" height="6.779" transform="translate(13.039 8.344) rotate(180)" fill="#302c48"/>
<path id="Rectangle_Copy-2" data-name="Rectangle Copy" d="M5.737,0H1.043A5.086,5.086,0,0,0,0,3.342,5.535,5.535,0,0,0,1.043,6.779H5.737A6.316,6.316,0,0,1,4.694,3.534,8.089,8.089,0,0,1,5.737,0Z" transform="translate(10.953 8.344) rotate(180)" fill="#fff"/>
<ellipse id="Oval_9" data-name="Oval 9" cx="1.826" cy="5.215" rx="1.826" ry="5.215" transform="translate(3.651 10.43) rotate(180)" fill="#686b89"/>
</g>
<g id="Kite" transform="translate(608.476 306.623) rotate(180)">
<g id="Group_6" data-name="Group 6" transform="matrix(0.883, -0.469, 0.469, 0.883, 25.482, 51.157)">
<path id="Combined_Shape" data-name="Combined Shape" d="M0,0V11H7.448Z" transform="translate(7.448 23.178) rotate(180)" fill="#52556e"/>
<path id="Rectangle_18_Copy" data-name="Rectangle 18 Copy" d="M7.448,0V11H0Z" transform="translate(15.898 23.178) rotate(180)" fill="#9ea4b8"/>
<path id="Rectangle_18_Copy_3" data-name="Rectangle 18 Copy 3" d="M7.448,0V11H0Z" transform="translate(0 0)" fill="#9ea4b8"/>
<path id="Rectangle_18_Copy_2" data-name="Rectangle 18 Copy 2" d="M0,0V11H7.448Z" transform="translate(8.45 0)" fill="#52556e"/>
</g>
<g id="Group_9" data-name="Group 9" transform="translate(25.396 58.506)">
<path id="Triangle_2" data-name="Triangle 2" d="M1.643,0,0,4.216H3.286Z" transform="translate(3.236 2.281) rotate(25)" fill="#52556e"/>
<path id="Triangle_2_Copy_7" data-name="Triangle 2 Copy 7" d="M1.643,0,3.286,4.216H0Z" transform="translate(4.847 0.948) rotate(103)" fill="#9ea4b8"/>
</g>
<g id="Group_8" data-name="Group 8" transform="matrix(-1, 0.017, -0.017, -1, 50.028, 56.511)">
<path id="Triangle_2_Copy_9" data-name="Triangle 2 Copy 9" d="M1.643,0,0,4.216H3.286Z" transform="translate(3.236 2.281) rotate(25)" fill="#52556e"/>
<path id="Triangle_2_Copy_8" data-name="Triangle 2 Copy 8" d="M1.643,0,3.286,4.216H0Z" transform="translate(4.847 0.948) rotate(103)" fill="#9ea4b8"/>
</g>
<g id="Group_7" data-name="Group 7" transform="translate(27.588)">
<path id="Path_41" data-name="Path 41" stroke="#fff" d="M13.543,0c0,1.8,4.37,9.632-7.009,19.578S.96,42.521,6.534,46.87" fill="none" transform="translate(18.406 46.87) rotate(180)" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="3.24" opacity="0.7"/>
<path id="Triangle_2-2" data-name="Triangle 2" d="M1.643,0,0,4.216H3.286Z" transform="matrix(-0.602, 0.799, -0.799, -0.602, 5.345, 37.583)" fill="#52556e"/>
<path id="Triangle_2_Copy_7-2" data-name="Triangle 2 Copy 7" d="M1.643,0,3.286,4.216H0Z" transform="matrix(0.588, -0.809, 0.809, 0.588, 3.287, 39.59)" fill="#9ea4b8"/>
<path id="Triangle_2_Copy" data-name="Triangle 2 Copy" d="M1.643,0,0,4.216H3.286Z" transform="translate(11.155 28.537) rotate(155)" fill="#9ea4b8"/>
<path id="Triangle_2_Copy_6" data-name="Triangle 2 Copy 6" d="M1.643,0,3.286,4.216H0Z" transform="matrix(0.914, -0.407, 0.407, 0.914, 8.296, 29.811)" fill="#52556e"/>
<path id="Triangle_2_Copy_2" data-name="Triangle 2 Copy 2" d="M1.643,0,0,4.216H3.286Z" transform="translate(18.346 17.083) rotate(109)" fill="#52556e"/>
<path id="Triangle_2_Copy_5" data-name="Triangle 2 Copy 5" d="M1.643,0,3.286,4.216H0Z" transform="matrix(0.407, -0.914, 0.914, 0.407, 16.98, 19.999)" fill="#9ea4b8"/>
<path id="Triangle_2_Copy_3" data-name="Triangle 2 Copy 3" d="M1.643,0,0,4.216H3.286Z" transform="translate(16.057 4.605) rotate(76)" fill="#9ea4b8"/>
<path id="Triangle_2_Copy_4" data-name="Triangle 2 Copy 4" d="M1.643,0,3.286,4.216H0Z" transform="translate(16.743 7.66) rotate(-97)" fill="#52556e"/>
</g>
<path id="Path_40" data-name="Path 40" d="M37.1,38.464c-6.851-.4-17.353-4.406-19.857-17.418S8.038,1.7,0,0" transform="translate(37.103 57.527) rotate(180)" fill="none" stroke="#cdd4e0" stroke-miterlimit="10" stroke-width="1.62"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,83 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="987.234" height="565.416" viewBox="0 0 987.234 565.416">
<defs>
<linearGradient id="linear-gradient" x1="0.43" y1="0.005" x2="0.43" y2="0.577" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#dae0e6"/>
<stop offset="1" stop-color="#eff1f3"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="0.5" y1="1.739" x2="0.038" y2="-0.34" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#536db5" stop-opacity="0"/>
<stop offset="1" stop-color="#0e284b" stop-opacity="0.212"/>
</linearGradient>
<linearGradient id="linear-gradient-3" x1="1.146" y1="1" x2="0.038" y2="-0.34" xlink:href="#linear-gradient-2"/>
</defs>
<g id="组_664" data-name="组 664" transform="translate(-295.755 -235)">
<path id="Rectangle_Copy" data-name="Rectangle Copy" d="M924.7,139.541s5.11,66.414,0,195.94c-54.321,0-473.383,1.025-757.763,0-130.459.181-114.97.147-172,0s-55.024.014-55.2,0c34-94.858,111.065-117.526,141.341-136.925,37.1-23.772,186.425-66.258,276.359-88.634S458.856,26.1,570.367,3.674C663.653-15.09,720.693,41.121,859,101.9,914.256,126.178,924.7,139.541,924.7,139.541Z" transform="translate(356.019 464.479)" opacity="0.61" fill="url(#linear-gradient)"/>
<g id="shadow" transform="translate(1382.42 711.827) rotate(180)">
<path id="shadow-2" data-name="shadow" d="M0,17.362l166.231,9.463V2.158L11.279,7.283Z" transform="translate(268.27 26.847) rotate(180)" fill="url(#linear-gradient-2)" style="mix-blend-mode: multiply;isolation: isolate"/>
<path id="shadow-3" data-name="shadow" d="M0,17.362l165.85,9.485V2.158L6.973,7.283Z" transform="translate(268.27 26.847) rotate(180)" fill="rgba(216,216,216,0.08)" style="mix-blend-mode: darken;isolation: isolate"/>
</g>
<g id="shadow-4" data-name="shadow" transform="translate(1068.709 696.823) rotate(180)">
<ellipse id="shadow-5" data-name="shadow" cx="28.937" cy="3.472" rx="28.937" ry="3.472" transform="translate(57.875 6.944) rotate(180)" fill="url(#linear-gradient-3)" style="mix-blend-mode: multiply;isolation: isolate"/>
<ellipse id="shadow-6" data-name="shadow" cx="28.937" cy="3.472" rx="28.937" ry="3.472" transform="translate(57.875 6.944) rotate(180)" fill="rgba(216,216,216,0.08)" style="mix-blend-mode: darken;isolation: isolate"/>
</g>
<path id="Path_39" data-name="Path 39" d="M14.468,6.443a37.827,37.827,0,0,1,4.573,24.593c-2.287,13.934-2,34.451-2,34.451H9.461L0,3.373S10.745-.688,14.468.1,14.468,6.443,14.468,6.443Z" transform="translate(1179.929 626.963)" fill="#9ea4b8"/>
<path id="Path_39_Copy" data-name="Path 39 Copy" d="M14.468,11.386a37.827,37.827,0,0,1,4.573,24.593c-2.287,13.934-2,34.451-2,34.451H9.461L0,8.316,17.552,0Z" transform="translate(1142.736 620.824) rotate(13)" fill="#9ea4b8"/>
<path id="Rectangle_17" data-name="Rectangle 17" d="M27.444,2.8,18.17,0,11.934,2.8l-8.779.914a3.472,3.472,0,0,0-2.979,2.5h0a4.6,4.6,0,0,0,4.409,5.845H22.814a4.629,4.629,0,0,0,4.629-4.629Z" transform="translate(1169.747 689.395)" fill="#302c48"/>
<path id="Rectangle_17_Copy" data-name="Rectangle 17 Copy" d="M27.444,2.8,18.17,0,11.934,2.8l-8.779.914a3.472,3.472,0,0,0-2.979,2.5h0a4.6,4.6,0,0,0,4.409,5.845H22.814a4.629,4.629,0,0,0,4.629-4.629Z" transform="translate(1116.502 689.395)" fill="#302c48"/>
<path id="Path_31" data-name="Path 31" d="M62.628,62.167V0H7.125L0,62.167H25.335l7.8-32.008,5.5,32.008Z" transform="translate(1136.878 570.678)" fill="#302c48"/>
<path id="Path_32" data-name="Path 32" d="M0,70.14C12.567,58.262,12.871,58.6,18.387,51.149c2.633-3.558,5.661-6.342,5.5-6.761C21.431,38.182,12.983,31.253,0,14.494L7.807,0C26.758,18.166,32.49,31.727,35.371,39.02c.7,1.767,1.927,4.976,1.613,7.052C35.6,55.212,23.25,65.773.853,77.662Z" transform="matrix(0.995, -0.105, 0.105, 0.995, 1190.725, 483.355)" fill="#9ea4b8"/>
<g id="single_thread" data-name="single thread" transform="translate(1097.346 686.539) rotate(180)">
<path id="Path_36" data-name="Path 36" d="M11.153,12.624S3.6,3.525,2.906.532C1.254-1.41,0,2.587,0,2.587S4.581,21.959,9.147,25.046s4.565,0,4.565,0Z" transform="translate(26.883 208.789) rotate(180)" fill="#9ea4b8"/>
<path id="Path_37" data-name="Path 37" d="M6.567,205.841c-13.143-18.431-7.175-55.829,23.5-93.621S92.989,33.876,54.24,8.415C42.018.384,20.284-4.075,3.095,5.149" transform="translate(72.016 205.841) rotate(180)" fill="none" stroke="#cdd4e0" stroke-miterlimit="10" stroke-width="1.8"/>
<path id="Path_35" data-name="Path 35" d="M3.706,20.974c2.721.651,4.213-9.617,1.492-11.5S3.768-.343,1.467.012.289,3.411.177,5.584.985,20.323,3.706,20.974Z" transform="translate(17.095 202.544) rotate(180)" fill="#9ea4b8"/>
</g>
<path id="Path_32_Copy" data-name="Path 32 Copy" d="M0,70.14C12.567,58.262,12.871,58.6,18.387,51.149c2.633-3.558,5.661-6.342,5.5-6.761C21.431,38.182,12.983,31.253,0,14.494L7.807,0C26.758,18.166,32.49,31.727,35.371,39.02,39.143,48.57,28.336,63.074.853,77.662Z" transform="translate(1156.074 491.021) rotate(82)" fill="#9ea4b8"/>
<path id="Path_33" data-name="Path 33" d="M11.692,0S11.939,4.47,8.8,6.959C5.3,9.737,1.384,12.948.48,14.1-1.234,16.27,2.194,16.27,2.194,16.27L.48,30.311l14.26,6.381L11.692,48.578H28.776l2.151-11.887s-4.973-22.321-8.106-28.3C18.576.3,11.692,0,11.692,0Z" transform="translate(1157.71 429.263)" fill="#9ea4b8"/>
<path id="Oval_8" data-name="Oval 8" d="M15.756,49.185c-7.26,0-8.271-8.555-12.515-14.11C.011,30.847,0,27.269,0,21.4,0,7.818,2.971,0,15.756,0s23.15,11.01,23.15,24.592S23.8,43.24,15.756,49.185Z" transform="translate(1171.017 417.337)" fill="#302c48"/>
<ellipse id="Oval" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1172.883 414.444)" fill="#302c48"/>
<ellipse id="Oval_Copy" data-name="Oval Copy" cx="5.209" cy="4.836" rx="5.209" ry="4.836" transform="translate(1184.458 414.444)" fill="#302c48"/>
<ellipse id="Oval_Copy_2" data-name="Oval Copy 2" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1190.246 419.073)" fill="#302c48"/>
<ellipse id="Oval_Copy_6" data-name="Oval Copy 6" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1194.876 427.174)" fill="#302c48"/>
<ellipse id="Oval_Copy_3" data-name="Oval Copy 3" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1192.561 416.758)" fill="#302c48"/>
<ellipse id="Oval_Copy_4" data-name="Oval Copy 4" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1169.411 419.073)" fill="#302c48"/>
<ellipse id="Oval_Copy_5" data-name="Oval Copy 5" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1167.096 424.859)" fill="#302c48"/>
<ellipse id="Oval_2" data-name="Oval 2" cx="4.63" cy="5.208" rx="4.63" ry="5.208" transform="translate(1167.096 442.219)" fill="#9ea4b8"/>
<path id="Path_30" data-name="Path 30" d="M92.413,27.082,67.785,4.247S55.934,0,48.224,0h-11.4C32,0,18.195,4.247,18.195,4.247L0,27.082l11.549,16.4,12.633-16.4-14.09,78.261s14.3,4.767,26.736,4.767,30.957-4.629,30.957-4.629V32.657l9.1,10.82Z" transform="translate(1132.132 474.623)" fill="#fcfcfc"/>
<path id="Path_34" data-name="Path 34" d="M5.431,44.328,4.061,0,0,12.311Z" transform="translate(1170.112 588.604)" fill="#3b3c45" opacity="0.195" style="mix-blend-mode: multiply;isolation: isolate"/>
<path id="Path_38" data-name="Path 38" d="M0,50.671,14.863,0s-6.1,1.908-6.442,4.355S0,50.671,0,50.671Z" transform="translate(1147.833 497.706)" fill="#deeaf4" opacity="0.55" style="mix-blend-mode: multiply;isolation: isolate"/>
<g id="Thread" transform="translate(1046.717 694.508) rotate(180)">
<ellipse id="Oval_9_Copy" data-name="Oval 9 Copy" cx="4.051" cy="10.416" rx="4.051" ry="10.416" transform="translate(33.567 21.989) rotate(180)" fill="#302c48"/>
<rect id="Rectangle" width="25.465" height="15.045" transform="translate(28.937 18.517) rotate(180)" fill="#302c48"/>
<path id="Rectangle_Copy-2" data-name="Rectangle Copy" d="M12.732,0H2.315S0,2.487,0,7.416a12.284,12.284,0,0,0,2.315,7.629H12.732a14.017,14.017,0,0,1-2.315-7.2A17.951,17.951,0,0,1,12.732,0Z" transform="translate(24.307 18.517) rotate(180)" fill="#fff"/>
<ellipse id="Oval_9" data-name="Oval 9" cx="4.051" cy="11.573" rx="4.051" ry="11.573" transform="translate(8.102 23.146) rotate(180)" fill="#686b89"/>
</g>
<g id="Kite" transform="translate(993.463 393.948) rotate(180)">
<g id="Group_6" data-name="Group 6" transform="matrix(0.883, -0.469, 0.469, 0.883, 56.551, 113.53)">
<path id="Combined_Shape" data-name="Combined Shape" d="M0,0V24.41H16.529Z" transform="translate(16.529 51.438) rotate(180)" fill="#52556e"/>
<path id="Rectangle_18_Copy" data-name="Rectangle 18 Copy" d="M16.529,0V24.41H0Z" transform="translate(35.281 51.438) rotate(180)" fill="#9ea4b8"/>
<path id="Rectangle_18_Copy_3" data-name="Rectangle 18 Copy 3" d="M16.529,0V24.41H0Z" transform="translate(0 0)" fill="#9ea4b8"/>
<path id="Rectangle_18_Copy_2" data-name="Rectangle 18 Copy 2" d="M0,0V24.41H16.529Z" transform="translate(18.752 0)" fill="#52556e"/>
</g>
<g id="Group_9" data-name="Group 9" transform="translate(56.359 129.838)">
<path id="Triangle_2" data-name="Triangle 2" d="M3.646,0,0,9.356H7.293Z" transform="translate(7.181 5.062) rotate(25)" fill="#52556e"/>
<path id="Triangle_2_Copy_7" data-name="Triangle 2 Copy 7" d="M3.646,0,7.293,9.356H0Z" transform="translate(10.757 2.105) rotate(103)" fill="#9ea4b8"/>
</g>
<g id="Group_8" data-name="Group 8" transform="matrix(-1, 0.017, -0.017, -1, 111.023, 125.412)">
<path id="Triangle_2_Copy_9" data-name="Triangle 2 Copy 9" d="M3.646,0,0,9.356H7.293Z" transform="translate(7.181 5.062) rotate(25)" fill="#52556e"/>
<path id="Triangle_2_Copy_8" data-name="Triangle 2 Copy 8" d="M3.646,0,7.293,9.356H0Z" transform="translate(10.757 2.105) rotate(103)" fill="#9ea4b8"/>
</g>
<g id="Group_7" data-name="Group 7" transform="translate(61.224 0)">
<path id="Path_41" data-name="Path 41" stroke="#fff" d="M30.055,0c0,3.984,9.7,21.376-15.555,43.447s-12.37,50.917,0,60.569" fill="none" transform="translate(40.847 104.016) rotate(180)" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="3.24" opacity="0.7"/>
<path id="Triangle_2-2" data-name="Triangle 2" d="M3.646,0,0,9.356H7.293Z" transform="matrix(-0.602, 0.799, -0.799, -0.602, 11.861, 83.405)" fill="#52556e"/>
<path id="Triangle_2_Copy_7-2" data-name="Triangle 2 Copy 7" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.588, -0.809, 0.809, 0.588, 7.295, 87.86)" fill="#9ea4b8"/>
<path id="Triangle_2_Copy" data-name="Triangle 2 Copy" d="M3.646,0,0,9.356H7.293Z" transform="translate(24.755 63.33) rotate(155)" fill="#9ea4b8"/>
<path id="Triangle_2_Copy_6" data-name="Triangle 2 Copy 6" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.914, -0.407, 0.407, 0.914, 18.411, 66.157)" fill="#52556e"/>
<path id="Triangle_2_Copy_2" data-name="Triangle 2 Copy 2" d="M3.646,0,0,9.356H7.293Z" transform="translate(40.715 37.911) rotate(109)" fill="#52556e"/>
<path id="Triangle_2_Copy_5" data-name="Triangle 2 Copy 5" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.407, -0.914, 0.914, 0.407, 37.683, 44.383)" fill="#9ea4b8"/>
<path id="Triangle_2_Copy_3" data-name="Triangle 2 Copy 3" d="M3.646,0,0,9.356H7.293Z" transform="translate(35.635 10.22) rotate(76)" fill="#9ea4b8"/>
<path id="Triangle_2_Copy_4" data-name="Triangle 2 Copy 4" d="M3.646,0,7.293,9.356H0Z" transform="translate(37.156 16.999) rotate(-97)" fill="#52556e"/>
</g>
<path id="Path_40" data-name="Path 40" d="M82.34,85.36c-15.2-.889-38.511-9.777-44.068-38.656S17.838,3.77,0,0" transform="translate(82.34 127.666) rotate(180)" fill="none" stroke="#cdd4e0" stroke-miterlimit="10" stroke-width="1.62"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="139.905" height="126.831" viewBox="0 0 139.905 126.831">
<g id="组_752" data-name="组 752" transform="translate(23.124 -1.214)" opacity="0.41">
<path id="路径_2306" data-name="路径 2306" d="M-23.071,108.481A19.456,19.456,0,0,1-18.21,95.647c5.884-6.992,9.892-14.88,11.043-24,1.791-13.9-1.023-26.562-10.489-37.307A20.116,20.116,0,0,1-23.114,20.01c.3-9.636,8.1-17.694,18.206-18.717,9-.9,18.163,5.884,20.124,14.965A19.275,19.275,0,0,1,11.038,33.4C5.112,40.433,1.019,48.321-.218,57.573-2.051,71.728.933,84.519,10.569,95.391c4.946,5.628,6.438,12.066,4.178,19.229-2.942,9.252-12.194,14.667-21.958,13.089C-16.249,126.217-23.071,117.946-23.071,108.481Z" transform="translate(0 0)" fill="#fff"/>
<path id="路径_2307" data-name="路径 2307" d="M252.751,20.952a19.02,19.02,0,0,1-4.775,12.663c-5.926,7.035-10.02,14.965-11.171,24.175-1.791,13.9,1.066,26.562,10.489,37.307a20.3,20.3,0,0,1,5.457,14.326c-.256,9.636-8.016,17.694-18.163,18.675-9,.9-18.163-5.926-20.124-14.965a19.173,19.173,0,0,1,4.221-17.14c5.926-7.035,10.062-14.923,11.213-24.175,1.791-14.07-1.066-26.818-10.659-37.648-4.946-5.585-6.566-12.023-4.349-19.186a19.435,19.435,0,0,1,22.043-13.26C245.929,3.216,252.751,11.487,252.751,20.952Z" transform="translate(-135.975 -0.132)" fill="#fff"/>
<path id="路径_2308" data-name="路径 2308" d="M96.9,124.617a18.8,18.8,0,1,1,18.632,18.888A18.662,18.662,0,0,1,96.9,124.617Z" transform="translate(-68.85 -60.052)" fill="#fff"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

View File

@@ -0,0 +1,82 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1371.37" height="565.416" viewBox="0 0 1371.37 565.416">
<defs>
<linearGradient id="linear-gradient" x1="0.43" y1="0.005" x2="0.43" y2="0.577" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#dae0e6"/>
<stop offset="1" stop-color="#eff1f3"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="1.146" y1="1" x2="0.038" y2="-0.34" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#536db5" stop-opacity="0"/>
<stop offset="1" stop-color="#0e284b" stop-opacity="0.212"/>
</linearGradient>
</defs>
<g id="组_763" data-name="组 763" transform="translate(-295.755 -235)">
<path id="Rectangle_Copy" data-name="Rectangle Copy" d="M1311.106,335.481H924.7c-54.321,0-473.383,1.025-757.763,0-130.459.181-114.97.147-172,0s-55.024.014-55.2,0c34-94.858,111.065-117.526,141.341-136.925,37.1-23.772,186.425-66.258,276.359-88.634S458.856,26.1,570.367,3.674C663.653-15.09,760.674,41.28,889.9,132.376c106.941,77.594,154.175,95.475,273.271,129.213S1311.106,335.481,1311.106,335.481Z" transform="translate(356.019 464.479)" opacity="0.61" fill="url(#linear-gradient)"/>
<g id="shadow" transform="translate(1068.709 696.823) rotate(180)">
<ellipse id="shadow-2" data-name="shadow" cx="28.937" cy="3.472" rx="28.937" ry="3.472" transform="translate(57.875 6.944) rotate(180)" fill="url(#linear-gradient-2)" style="mix-blend-mode: multiply;isolation: isolate"/>
<ellipse id="shadow-3" data-name="shadow" cx="28.937" cy="3.472" rx="28.937" ry="3.472" transform="translate(57.875 6.944) rotate(180)" fill="rgba(216,216,216,0.08)" style="mix-blend-mode: darken;isolation: isolate"/>
</g>
<path id="Path_39" data-name="Path 39" d="M14.468,6.443a37.827,37.827,0,0,1,4.573,24.593c-2.287,13.934-2,34.451-2,34.451H9.461L0,3.373S10.745-.688,14.468.1,14.468,6.443,14.468,6.443Z" transform="translate(1179.929 626.963)" fill="#9ea4b8"/>
<path id="Path_39_Copy" data-name="Path 39 Copy" d="M14.468,11.386a37.827,37.827,0,0,1,4.573,24.593c-2.287,13.934-2,34.451-2,34.451H9.461L0,8.316,17.552,0Z" transform="translate(1142.736 620.824) rotate(13)" fill="#9ea4b8"/>
<path id="Rectangle_17" data-name="Rectangle 17" d="M27.444,2.8,18.17,0,11.934,2.8l-8.779.914a3.472,3.472,0,0,0-2.979,2.5h0a4.6,4.6,0,0,0,4.409,5.845H22.814a4.629,4.629,0,0,0,4.629-4.629Z" transform="translate(1169.747 689.395)" fill="#302c48"/>
<path id="Rectangle_17_Copy" data-name="Rectangle 17 Copy" d="M27.444,2.8,18.17,0,11.934,2.8l-8.779.914a3.472,3.472,0,0,0-2.979,2.5h0a4.6,4.6,0,0,0,4.409,5.845H22.814a4.629,4.629,0,0,0,4.629-4.629Z" transform="translate(1116.502 689.395)" fill="#302c48"/>
<path id="Path_31" data-name="Path 31" d="M62.628,62.167V0H7.125L0,62.167H25.335l7.8-32.008,5.5,32.008Z" transform="translate(1136.878 570.678)" fill="#302c48"/>
<path id="Path_32" data-name="Path 32" d="M0,70.14C12.567,58.262,12.871,58.6,18.387,51.149c2.633-3.558,5.661-6.342,5.5-6.761C21.431,38.182,12.983,31.253,0,14.494L7.807,0C26.758,18.166,32.49,31.727,35.371,39.02c.7,1.767,1.927,4.976,1.613,7.052C35.6,55.212,23.25,65.773.853,77.662Z" transform="matrix(0.995, -0.105, 0.105, 0.995, 1190.725, 483.355)" fill="#9ea4b8"/>
<g id="single_thread" data-name="single thread" transform="translate(1097.346 686.539) rotate(180)">
<path id="Path_36" data-name="Path 36" d="M11.153,12.624S3.6,3.525,2.906.532C1.254-1.41,0,2.587,0,2.587S4.581,21.959,9.147,25.046s4.565,0,4.565,0Z" transform="translate(26.883 208.789) rotate(180)" fill="#9ea4b8"/>
<path id="Path_37" data-name="Path 37" d="M6.567,205.841c-13.143-18.431-7.175-55.829,23.5-93.621S92.989,33.876,54.24,8.415C42.018.384,20.284-4.075,3.095,5.149" transform="translate(72.016 205.841) rotate(180)" fill="none" stroke="#cdd4e0" stroke-miterlimit="10" stroke-width="1.8"/>
<path id="Path_35" data-name="Path 35" d="M3.706,20.974c2.721.651,4.213-9.617,1.492-11.5S3.768-.343,1.467.012.289,3.411.177,5.584.985,20.323,3.706,20.974Z" transform="translate(17.095 202.544) rotate(180)" fill="#9ea4b8"/>
</g>
<path id="Path_32_Copy" data-name="Path 32 Copy" d="M0,70.14C12.567,58.262,12.871,58.6,18.387,51.149c2.633-3.558,5.661-6.342,5.5-6.761C21.431,38.182,12.983,31.253,0,14.494L7.807,0C26.758,18.166,32.49,31.727,35.371,39.02,39.143,48.57,28.336,63.074.853,77.662Z" transform="translate(1156.074 491.021) rotate(82)" fill="#9ea4b8"/>
<path id="Path_33" data-name="Path 33" d="M11.692,0S11.939,4.47,8.8,6.959C5.3,9.737,1.384,12.948.48,14.1-1.234,16.27,2.194,16.27,2.194,16.27L.48,30.311l14.26,6.381L11.692,48.578H28.776l2.151-11.887s-4.973-22.321-8.106-28.3C18.576.3,11.692,0,11.692,0Z" transform="translate(1157.71 429.263)" fill="#9ea4b8"/>
<path id="Oval_8" data-name="Oval 8" d="M15.756,49.185c-7.26,0-8.271-8.555-12.515-14.11C.011,30.847,0,27.269,0,21.4,0,7.818,2.971,0,15.756,0s23.15,11.01,23.15,24.592S23.8,43.24,15.756,49.185Z" transform="translate(1171.017 417.337)" fill="#302c48"/>
<ellipse id="Oval" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1172.883 414.444)" fill="#302c48"/>
<ellipse id="Oval_Copy" data-name="Oval Copy" cx="5.209" cy="4.836" rx="5.209" ry="4.836" transform="translate(1184.458 414.444)" fill="#302c48"/>
<ellipse id="Oval_Copy_2" data-name="Oval Copy 2" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1190.246 419.073)" fill="#302c48"/>
<ellipse id="Oval_Copy_6" data-name="Oval Copy 6" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1194.876 427.174)" fill="#302c48"/>
<ellipse id="Oval_Copy_3" data-name="Oval Copy 3" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1192.561 416.758)" fill="#302c48"/>
<ellipse id="Oval_Copy_4" data-name="Oval Copy 4" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1169.411 419.073)" fill="#302c48"/>
<ellipse id="Oval_Copy_5" data-name="Oval Copy 5" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1167.096 424.859)" fill="#302c48"/>
<ellipse id="Oval_2" data-name="Oval 2" cx="4.63" cy="5.208" rx="4.63" ry="5.208" transform="translate(1167.096 442.219)" fill="#9ea4b8"/>
<path id="Path_30" data-name="Path 30" d="M92.413,27.082,67.785,4.247S55.934,0,48.224,0h-11.4C32,0,18.195,4.247,18.195,4.247L0,27.082l11.549,16.4,12.633-16.4-14.09,78.261s14.3,4.767,26.736,4.767,30.957-4.629,30.957-4.629V32.657l9.1,10.82Z" transform="translate(1132.132 474.623)" fill="#fcfcfc"/>
<path id="Path_34" data-name="Path 34" d="M5.431,44.328,4.061,0,0,12.311Z" transform="translate(1170.112 588.604)" fill="#3b3c45" opacity="0.195" style="mix-blend-mode: multiply;isolation: isolate"/>
<path id="Path_38" data-name="Path 38" d="M0,50.671,14.863,0s-6.1,1.908-6.442,4.355S0,50.671,0,50.671Z" transform="translate(1147.833 497.706)" fill="#deeaf4" opacity="0.55" style="mix-blend-mode: multiply;isolation: isolate"/>
<g id="Thread" transform="translate(1046.717 694.508) rotate(180)">
<ellipse id="Oval_9_Copy" data-name="Oval 9 Copy" cx="4.051" cy="10.416" rx="4.051" ry="10.416" transform="translate(33.567 21.989) rotate(180)" fill="#302c48"/>
<rect id="Rectangle" width="25.465" height="15.045" transform="translate(28.937 18.517) rotate(180)" fill="#302c48"/>
<path id="Rectangle_Copy-2" data-name="Rectangle Copy" d="M12.732,0H2.315S0,2.487,0,7.416a12.284,12.284,0,0,0,2.315,7.629H12.732a14.017,14.017,0,0,1-2.315-7.2A17.951,17.951,0,0,1,12.732,0Z" transform="translate(24.307 18.517) rotate(180)" fill="#fff"/>
<ellipse id="Oval_9" data-name="Oval 9" cx="4.051" cy="11.573" rx="4.051" ry="11.573" transform="translate(8.102 23.146) rotate(180)" fill="#686b89"/>
</g>
<g id="Kite" transform="translate(993.463 393.948) rotate(180)">
<g id="Group_6" data-name="Group 6" transform="matrix(0.883, -0.469, 0.469, 0.883, 56.551, 113.53)">
<path id="Combined_Shape" data-name="Combined Shape" d="M0,0V24.41H16.529Z" transform="translate(16.529 51.438) rotate(180)" fill="#52556e"/>
<path id="Rectangle_18_Copy" data-name="Rectangle 18 Copy" d="M16.529,0V24.41H0Z" transform="translate(35.281 51.438) rotate(180)" fill="#9ea4b8"/>
<path id="Rectangle_18_Copy_3" data-name="Rectangle 18 Copy 3" d="M16.529,0V24.41H0Z" transform="translate(0 0)" fill="#9ea4b8"/>
<path id="Rectangle_18_Copy_2" data-name="Rectangle 18 Copy 2" d="M0,0V24.41H16.529Z" transform="translate(18.752 0)" fill="#52556e"/>
</g>
<g id="Group_9" data-name="Group 9" transform="translate(56.359 129.838)">
<path id="Triangle_2" data-name="Triangle 2" d="M3.646,0,0,9.356H7.293Z" transform="translate(7.181 5.062) rotate(25)" fill="#52556e"/>
<path id="Triangle_2_Copy_7" data-name="Triangle 2 Copy 7" d="M3.646,0,7.293,9.356H0Z" transform="translate(10.757 2.105) rotate(103)" fill="#9ea4b8"/>
</g>
<g id="Group_8" data-name="Group 8" transform="matrix(-1, 0.017, -0.017, -1, 111.023, 125.412)">
<path id="Triangle_2_Copy_9" data-name="Triangle 2 Copy 9" d="M3.646,0,0,9.356H7.293Z" transform="translate(7.181 5.062) rotate(25)" fill="#52556e"/>
<path id="Triangle_2_Copy_8" data-name="Triangle 2 Copy 8" d="M3.646,0,7.293,9.356H0Z" transform="translate(10.757 2.105) rotate(103)" fill="#9ea4b8"/>
</g>
<g id="Group_7" data-name="Group 7" transform="translate(61.224 0)">
<path id="Path_41" data-name="Path 41" d="M30.055,0c0,3.984,9.7,21.376-15.555,43.447s-12.37,50.917,0,60.569" transform="translate(40.847 104.016) rotate(180)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="3.24" opacity="0.7"/>
<path id="Triangle_2-2" data-name="Triangle 2" d="M3.646,0,0,9.356H7.293Z" transform="matrix(-0.602, 0.799, -0.799, -0.602, 11.861, 83.405)" fill="#52556e"/>
<path id="Triangle_2_Copy_7-2" data-name="Triangle 2 Copy 7" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.588, -0.809, 0.809, 0.588, 7.295, 87.86)" fill="#9ea4b8"/>
<path id="Triangle_2_Copy" data-name="Triangle 2 Copy" d="M3.646,0,0,9.356H7.293Z" transform="translate(24.755 63.33) rotate(155)" fill="#9ea4b8"/>
<path id="Triangle_2_Copy_6" data-name="Triangle 2 Copy 6" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.914, -0.407, 0.407, 0.914, 18.411, 66.157)" fill="#52556e"/>
<path id="Triangle_2_Copy_2" data-name="Triangle 2 Copy 2" d="M3.646,0,0,9.356H7.293Z" transform="translate(40.715 37.911) rotate(109)" fill="#52556e"/>
<path id="Triangle_2_Copy_5" data-name="Triangle 2 Copy 5" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.407, -0.914, 0.914, 0.407, 37.683, 44.383)" fill="#9ea4b8"/>
<path id="Triangle_2_Copy_3" data-name="Triangle 2 Copy 3" d="M3.646,0,0,9.356H7.293Z" transform="translate(35.635 10.22) rotate(76)" fill="#9ea4b8"/>
<path id="Triangle_2_Copy_4" data-name="Triangle 2 Copy 4" d="M3.646,0,7.293,9.356H0Z" transform="translate(37.156 16.999) rotate(-97)" fill="#52556e"/>
</g>
<path id="Path_40" data-name="Path 40" d="M82.34,85.36c-15.2-.889-38.511-9.777-44.068-38.656S17.838,3.77,0,0" transform="translate(82.34 127.666) rotate(180)" fill="none" stroke="#cdd4e0" stroke-miterlimit="10" stroke-width="1.62"/>
</g>
<g id="shadow-4" data-name="shadow" transform="translate(1296.024 708.416) rotate(180)">
<ellipse id="shadow-5" data-name="shadow" cx="91.095" cy="6.269" rx="91.095" ry="6.269" transform="translate(182.19 12.537) rotate(180)" fill="url(#linear-gradient-2)" style="mix-blend-mode: multiply;isolation: isolate"/>
<ellipse id="shadow-6" data-name="shadow" cx="91.095" cy="6.269" rx="91.095" ry="6.269" transform="translate(182.19 12.537) rotate(180)" fill="rgba(216,216,216,0.08)" style="mix-blend-mode: darken;isolation: isolate"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,82 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1371.37" height="565.416" viewBox="0 0 1371.37 565.416">
<defs>
<linearGradient id="linear-gradient" x1="0.43" y1="0.005" x2="0.43" y2="0.577" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#dae0e6"/>
<stop offset="1" stop-color="#eff1f3"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="1.146" y1="1" x2="0.038" y2="-0.34" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#536db5" stop-opacity="0"/>
<stop offset="1" stop-color="#0e284b" stop-opacity="0.212"/>
</linearGradient>
</defs>
<g id="组_763" data-name="组 763" transform="translate(-295.755 -235)">
<path id="Rectangle_Copy" data-name="Rectangle Copy" d="M1311.106,335.481H924.7c-54.321,0-473.383,1.025-757.763,0-130.459.181-114.97.147-172,0s-55.024.014-55.2,0c34-94.858,111.065-117.526,141.341-136.925,37.1-23.772,186.425-66.258,276.359-88.634S458.856,26.1,570.367,3.674C663.653-15.09,760.674,41.28,889.9,132.376c106.941,77.594,154.175,95.475,273.271,129.213S1311.106,335.481,1311.106,335.481Z" transform="translate(356.019 464.479)" opacity="0.25" fill="url(#linear-gradient)"/>
<g id="shadow" transform="translate(1068.709 696.823) rotate(180)">
<ellipse id="shadow-2" data-name="shadow" cx="28.937" cy="3.472" rx="28.937" ry="3.472" transform="translate(57.875 6.944) rotate(180)" fill="url(#linear-gradient-2)" style="mix-blend-mode: multiply;isolation: isolate"/>
<ellipse id="shadow-3" data-name="shadow" cx="28.937" cy="3.472" rx="28.937" ry="3.472" transform="translate(57.875 6.944) rotate(180)" fill="rgba(216,216,216,0.08)" style="mix-blend-mode: darken;isolation: isolate"/>
</g>
<path id="Path_39" data-name="Path 39" d="M14.468,6.443a37.827,37.827,0,0,1,4.573,24.593c-2.287,13.934-2,34.451-2,34.451H9.461L0,3.373S10.745-.688,14.468.1,14.468,6.443,14.468,6.443Z" transform="translate(1179.929 626.963)" fill="#9ea4b8"/>
<path id="Path_39_Copy" data-name="Path 39 Copy" d="M14.468,11.386a37.827,37.827,0,0,1,4.573,24.593c-2.287,13.934-2,34.451-2,34.451H9.461L0,8.316,17.552,0Z" transform="translate(1142.736 620.824) rotate(13)" fill="#9ea4b8"/>
<path id="Rectangle_17" data-name="Rectangle 17" d="M27.444,2.8,18.17,0,11.934,2.8l-8.779.914a3.472,3.472,0,0,0-2.979,2.5h0a4.6,4.6,0,0,0,4.409,5.845H22.814a4.629,4.629,0,0,0,4.629-4.629Z" transform="translate(1169.747 689.395)" fill="#302c48"/>
<path id="Rectangle_17_Copy" data-name="Rectangle 17 Copy" d="M27.444,2.8,18.17,0,11.934,2.8l-8.779.914a3.472,3.472,0,0,0-2.979,2.5h0a4.6,4.6,0,0,0,4.409,5.845H22.814a4.629,4.629,0,0,0,4.629-4.629Z" transform="translate(1116.502 689.395)" fill="#302c48"/>
<path id="Path_31" data-name="Path 31" d="M62.628,62.167V0H7.125L0,62.167H25.335l7.8-32.008,5.5,32.008Z" transform="translate(1136.878 570.678)" fill="#302c48"/>
<path id="Path_32" data-name="Path 32" d="M0,70.14C12.567,58.262,12.871,58.6,18.387,51.149c2.633-3.558,5.661-6.342,5.5-6.761C21.431,38.182,12.983,31.253,0,14.494L7.807,0C26.758,18.166,32.49,31.727,35.371,39.02c.7,1.767,1.927,4.976,1.613,7.052C35.6,55.212,23.25,65.773.853,77.662Z" transform="matrix(0.995, -0.105, 0.105, 0.995, 1190.725, 483.355)" fill="#9ea4b8"/>
<g id="single_thread" data-name="single thread" transform="translate(1097.346 686.539) rotate(180)">
<path id="Path_36" data-name="Path 36" d="M11.153,12.624S3.6,3.525,2.906.532C1.254-1.41,0,2.587,0,2.587S4.581,21.959,9.147,25.046s4.565,0,4.565,0Z" transform="translate(26.883 208.789) rotate(180)" fill="#9ea4b8"/>
<path id="Path_37" data-name="Path 37" d="M6.567,205.841c-13.143-18.431-7.175-55.829,23.5-93.621S92.989,33.876,54.24,8.415C42.018.384,20.284-4.075,3.095,5.149" transform="translate(72.016 205.841) rotate(180)" fill="none" stroke="#cdd4e0" stroke-miterlimit="10" stroke-width="1.8"/>
<path id="Path_35" data-name="Path 35" d="M3.706,20.974c2.721.651,4.213-9.617,1.492-11.5S3.768-.343,1.467.012.289,3.411.177,5.584.985,20.323,3.706,20.974Z" transform="translate(17.095 202.544) rotate(180)" fill="#9ea4b8"/>
</g>
<path id="Path_32_Copy" data-name="Path 32 Copy" d="M0,70.14C12.567,58.262,12.871,58.6,18.387,51.149c2.633-3.558,5.661-6.342,5.5-6.761C21.431,38.182,12.983,31.253,0,14.494L7.807,0C26.758,18.166,32.49,31.727,35.371,39.02,39.143,48.57,28.336,63.074.853,77.662Z" transform="translate(1156.074 491.021) rotate(82)" fill="#9ea4b8"/>
<path id="Path_33" data-name="Path 33" d="M11.692,0S11.939,4.47,8.8,6.959C5.3,9.737,1.384,12.948.48,14.1-1.234,16.27,2.194,16.27,2.194,16.27L.48,30.311l14.26,6.381L11.692,48.578H28.776l2.151-11.887s-4.973-22.321-8.106-28.3C18.576.3,11.692,0,11.692,0Z" transform="translate(1157.71 429.263)" fill="#9ea4b8"/>
<path id="Oval_8" data-name="Oval 8" d="M15.756,49.185c-7.26,0-8.271-8.555-12.515-14.11C.011,30.847,0,27.269,0,21.4,0,7.818,2.971,0,15.756,0s23.15,11.01,23.15,24.592S23.8,43.24,15.756,49.185Z" transform="translate(1171.017 417.337)" fill="#302c48"/>
<ellipse id="Oval" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1172.883 414.444)" fill="#302c48"/>
<ellipse id="Oval_Copy" data-name="Oval Copy" cx="5.209" cy="4.836" rx="5.209" ry="4.836" transform="translate(1184.458 414.444)" fill="#302c48"/>
<ellipse id="Oval_Copy_2" data-name="Oval Copy 2" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1190.246 419.073)" fill="#302c48"/>
<ellipse id="Oval_Copy_6" data-name="Oval Copy 6" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1194.876 427.174)" fill="#302c48"/>
<ellipse id="Oval_Copy_3" data-name="Oval Copy 3" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1192.561 416.758)" fill="#302c48"/>
<ellipse id="Oval_Copy_4" data-name="Oval Copy 4" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1169.411 419.073)" fill="#302c48"/>
<ellipse id="Oval_Copy_5" data-name="Oval Copy 5" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1167.096 424.859)" fill="#302c48"/>
<ellipse id="Oval_2" data-name="Oval 2" cx="4.63" cy="5.208" rx="4.63" ry="5.208" transform="translate(1167.096 442.219)" fill="#9ea4b8"/>
<path id="Path_30" data-name="Path 30" d="M92.413,27.082,67.785,4.247S55.934,0,48.224,0h-11.4C32,0,18.195,4.247,18.195,4.247L0,27.082l11.549,16.4,12.633-16.4-14.09,78.261s14.3,4.767,26.736,4.767,30.957-4.629,30.957-4.629V32.657l9.1,10.82Z" transform="translate(1132.132 474.623)" fill="#d6d6d6"/>
<path id="Path_34" data-name="Path 34" d="M5.431,44.328,4.061,0,0,12.311Z" transform="translate(1170.112 588.604)" fill="#3b3c45" opacity="0.195" style="mix-blend-mode: multiply;isolation: isolate"/>
<path id="Path_38" data-name="Path 38" d="M0,50.671,14.863,0s-6.1,1.908-6.442,4.355S0,50.671,0,50.671Z" transform="translate(1147.833 497.706)" fill="#deeaf4" opacity="0.55" style="mix-blend-mode: multiply;isolation: isolate"/>
<g id="Thread" transform="translate(1046.717 694.508) rotate(180)">
<ellipse id="Oval_9_Copy" data-name="Oval 9 Copy" cx="4.051" cy="10.416" rx="4.051" ry="10.416" transform="translate(33.567 21.989) rotate(180)" fill="#302c48"/>
<rect id="Rectangle" width="25.465" height="15.045" transform="translate(28.937 18.517) rotate(180)" fill="#302c48"/>
<path id="Rectangle_Copy-2" data-name="Rectangle Copy" d="M12.732,0H2.315S0,2.487,0,7.416a12.284,12.284,0,0,0,2.315,7.629H12.732a14.017,14.017,0,0,1-2.315-7.2A17.951,17.951,0,0,1,12.732,0Z" transform="translate(24.307 18.517) rotate(180)" fill="#cacaca"/>
<ellipse id="Oval_9" data-name="Oval 9" cx="4.051" cy="11.573" rx="4.051" ry="11.573" transform="translate(8.102 23.146) rotate(180)" fill="#686b89"/>
</g>
<g id="Kite" transform="translate(993.463 393.948) rotate(180)">
<g id="Group_6" data-name="Group 6" transform="matrix(0.883, -0.469, 0.469, 0.883, 56.551, 113.53)">
<path id="Combined_Shape" data-name="Combined Shape" d="M0,0V24.41H16.529Z" transform="translate(16.529 51.438) rotate(180)" fill="#52556e"/>
<path id="Rectangle_18_Copy" data-name="Rectangle 18 Copy" d="M16.529,0V24.41H0Z" transform="translate(35.281 51.438) rotate(180)" fill="#9ea4b8"/>
<path id="Rectangle_18_Copy_3" data-name="Rectangle 18 Copy 3" d="M16.529,0V24.41H0Z" transform="translate(0 0)" fill="#9ea4b8"/>
<path id="Rectangle_18_Copy_2" data-name="Rectangle 18 Copy 2" d="M0,0V24.41H16.529Z" transform="translate(18.752 0)" fill="#52556e"/>
</g>
<g id="Group_9" data-name="Group 9" transform="translate(56.359 129.838)">
<path id="Triangle_2" data-name="Triangle 2" d="M3.646,0,0,9.356H7.293Z" transform="translate(7.181 5.062) rotate(25)" fill="#52556e"/>
<path id="Triangle_2_Copy_7" data-name="Triangle 2 Copy 7" d="M3.646,0,7.293,9.356H0Z" transform="translate(10.757 2.105) rotate(103)" fill="#9ea4b8"/>
</g>
<g id="Group_8" data-name="Group 8" transform="matrix(-1, 0.017, -0.017, -1, 111.023, 125.412)">
<path id="Triangle_2_Copy_9" data-name="Triangle 2 Copy 9" d="M3.646,0,0,9.356H7.293Z" transform="translate(7.181 5.062) rotate(25)" fill="#52556e"/>
<path id="Triangle_2_Copy_8" data-name="Triangle 2 Copy 8" d="M3.646,0,7.293,9.356H0Z" transform="translate(10.757 2.105) rotate(103)" fill="#9ea4b8"/>
</g>
<g id="Group_7" data-name="Group 7" transform="translate(61.224 0)">
<path id="Path_41" data-name="Path 41" d="M30.055,0c0,3.984,9.7,21.376-15.555,43.447s-12.37,50.917,0,60.569" transform="translate(40.847 104.016) rotate(180)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="3.24" opacity="0.7"/>
<path id="Triangle_2-2" data-name="Triangle 2" d="M3.646,0,0,9.356H7.293Z" transform="matrix(-0.602, 0.799, -0.799, -0.602, 11.861, 83.405)" fill="#52556e"/>
<path id="Triangle_2_Copy_7-2" data-name="Triangle 2 Copy 7" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.588, -0.809, 0.809, 0.588, 7.295, 87.86)" fill="#9ea4b8"/>
<path id="Triangle_2_Copy" data-name="Triangle 2 Copy" d="M3.646,0,0,9.356H7.293Z" transform="translate(24.755 63.33) rotate(155)" fill="#9ea4b8"/>
<path id="Triangle_2_Copy_6" data-name="Triangle 2 Copy 6" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.914, -0.407, 0.407, 0.914, 18.411, 66.157)" fill="#52556e"/>
<path id="Triangle_2_Copy_2" data-name="Triangle 2 Copy 2" d="M3.646,0,0,9.356H7.293Z" transform="translate(40.715 37.911) rotate(109)" fill="#52556e"/>
<path id="Triangle_2_Copy_5" data-name="Triangle 2 Copy 5" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.407, -0.914, 0.914, 0.407, 37.683, 44.383)" fill="#9ea4b8"/>
<path id="Triangle_2_Copy_3" data-name="Triangle 2 Copy 3" d="M3.646,0,0,9.356H7.293Z" transform="translate(35.635 10.22) rotate(76)" fill="#9ea4b8"/>
<path id="Triangle_2_Copy_4" data-name="Triangle 2 Copy 4" d="M3.646,0,7.293,9.356H0Z" transform="translate(37.156 16.999) rotate(-97)" fill="#52556e"/>
</g>
<path id="Path_40" data-name="Path 40" d="M82.34,85.36c-15.2-.889-38.511-9.777-44.068-38.656S17.838,3.77,0,0" transform="translate(82.34 127.666) rotate(180)" fill="none" stroke="#cdd4e0" stroke-miterlimit="10" stroke-width="1.62"/>
</g>
<g id="shadow-4" data-name="shadow" transform="translate(1296.024 708.416) rotate(180)">
<ellipse id="shadow-5" data-name="shadow" cx="91.095" cy="6.269" rx="91.095" ry="6.269" transform="translate(182.19 12.537) rotate(180)" fill="url(#linear-gradient-2)" style="mix-blend-mode: multiply;isolation: isolate"/>
<ellipse id="shadow-6" data-name="shadow" cx="91.095" cy="6.269" rx="91.095" ry="6.269" transform="translate(182.19 12.537) rotate(180)" fill="rgba(216,216,216,0.08)" style="mix-blend-mode: darken;isolation: isolate"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="156" height="109" viewBox="0 0 156 109">
<defs>
<filter id="koodo" x="0" y="0" width="156" height="88" filterUnits="userSpaceOnUse">
<feOffset input="SourceAlpha"/>
<feGaussianBlur stdDeviation="3" result="blur"/>
<feFlood flood-opacity="0.302"/>
<feComposite operator="in" in2="blur"/>
<feComposite in="SourceGraphic"/>
</filter>
</defs>
<g id="组_649" data-name="组 649" transform="translate(-40 -23)">
<text id="可道阅读器" transform="translate(55 125)" fill="#4b4b4b" font-size="25" font-family="SourceHanSerifCN-Bold, Source Han Serif CN" font-weight="700"><tspan x="0" y="0">可道阅读器</tspan></text>
<g transform="matrix(1, 0, 0, 1, 40, 23)" filter="url(#koodo)">
<text id="koodo-2" data-name="koodo" transform="translate(12 65)" fill="#4b4b4b" font-size="56" font-family="Lobster-Regular, Lobster"><tspan x="0" y="0">koodo</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,74 @@
.delete-digest-button,
.add-dialog-comfirm,
.backup-page-backup-selector,
.delete-dialog-comfirm,
.book-item-config,
.book-cover-item-config,
.side-menu-selector-container,
.download-desk-button,
.edit-dialog-comfirm,
.change-location-button,
.token-dialog-comfirm,
.new-version-open,
.update-dialog-container-button,
.import-from-local,
.single-control-switch,
.side-menu-selector-container,
.previous-chapter-single-container,
.next-chapter-single-container,
.book-bookmark-link,
.message-box-container,
.only-local-icon {
background-color: rgba(1, 121, 202, 1) !important;
}
.header-search-box,
input::-webkit-input-placeholder,
input::-moz-placeholder,
input::-ms-input-placeholder,
textarea::-webkit-input-placeholder,
textarea::-moz-placeholder,
textarea::-ms-input-placeholder,
.header-search-text,
.card-list-item-show-more {
color: rgba(1, 121, 202, 0.8) !important;
}
.single-control-container,
.book-list-view {
color: rgba(1, 121, 202, 1) !important;
}
.reading-progress-icon,
.header-search-box,
#jumpPage,
#jumpChapter,
#newTag {
background-color: rgba(1, 121, 202, 0.1) !important;
}
.backup-page-close-icon:hover,
.sidebar-list-icon:hover,
.nav-close-icon:hover,
.setting-close-container:hover,
.side-menu-hover-container,
.setting-dialog-location-title,
.note-option:hover,
.digest-option:hover,
.translation-option:hover,
.speaker-option:hover,
.search-book-option:hover,
.google-option:hover,
.header-search-text:hover,
.reader-setting-icon-container:hover,
.setting-icon-container:hover,
.animation-mask,
.animation-mask-local,
.copy-option:hover {
background-color: rgba(1, 121, 202, 0.035) !important;
}
.book-content-name,
.book-subcontent-name,
.book-bookmark-list,
.nav-search-list-item,
.sort-dialog-seperator {
border-bottom: 1px solid rgba(1, 121, 202, 0.1) !important;
}

View File

@@ -0,0 +1,257 @@
body,
.editor-box {
-webkit-tap-highlight-color: transparent;
background: rgba(47, 52, 55, 1);
color: rgba(235, 235, 235, 1);
}
.book-content-name,
.booklist-shelf-list,
.lang-setting-dropdown,
.delete-tag-container,
.setting-subtitle,
.book-subcontent-name {
color: rgba(235, 235, 235, 1);
}
.add-dialog-shelf-list-box,
.add-dialog-shelf-list-option,
.add-dialog-new-shelf-box,
.add-dialog-cancel,
.delete-dialog-cancel,
.edit-dialog-book-name-box,
.edit-dialog-book-author-box,
.edit-dialog-cancel,
.tag-list-item,
.token-dialog-cancel,
.lang-setting-dropdown,
.tag-list-item-new,
.input-value,
.import-from-cloud,
.booklist-shelf-list,
.token-dialog-token-box,
.token-dialog-url-box,
.token-dialog-username-box,
.token-dialog-password-box,
.general-setting-dropdown,
.active-color,
.delete-dialog-uncheck-icon,
.next-chapter,
.progress-slide-circle,
.setting-dialog-location-title,
.delete-dialog-uncheck-icon,
.previous-chapter,
.color-option,
.line-option,
.original-text-box,
.trans-text-box,
.token-dialog-link-text,
.token-dialog-token-text,
.nav-search-page-item {
border: 2px solid rgba(235, 235, 235, 1);
}
.header-search-box,
input::-webkit-input-placeholder,
input::-moz-placeholder,
input::-ms-input-placeholder,
textarea::-webkit-input-placeholder,
textarea::-moz-placeholder,
textarea::-ms-input-placeholder,
.header-search-text {
color: rgba(235, 235, 235, 0.8);
}
.delete-digest-button,
.add-dialog-comfirm,
.backup-page-backup-selector,
.delete-dialog-comfirm,
.book-item-config,
.book-cover-item-config,
.side-menu-selector-container,
.download-desk-button,
.edit-dialog-comfirm,
.change-location-button,
.token-dialog-comfirm,
.new-version-open,
.update-dialog-container-button,
.import-from-local,
.side-menu-selector-container,
.previous-chapter-single-container,
.next-chapter-single-container,
.book-bookmark-link,
.message-box-container,
.only-local-icon,
.popup-close {
background-color: rgba(71, 76, 80, 1);
color: rgba(235, 235, 235, 1);
}
.reading-progress-icon,
.header-search-box,
#jumpPage,
#jumpChapter,
#newTag {
background-color: rgba(235, 235, 235, 0.1);
}
.backup-page-close-icon:hover,
.sidebar-list-icon:hover,
.nav-close-icon:hover,
.setting-close-container:hover,
.side-menu-hover-container,
.setting-dialog-location-title,
.note-option:hover,
.digest-option:hover,
.translation-option:hover,
.speaker-option:hover,
.search-book-option:hover,
.google-option:hover,
.header-search-text:hover,
.reader-setting-icon-container:hover,
.setting-icon-container:hover,
.animation-mask,
.animation-mask-local,
.sort-by-category-list:hover,
.sort-by-order-list:hover,
.backup-page-backup:hover,
.action-dialog-add:hover,
.action-dialog-delete:hover,
.action-dialog-edit:hover,
.backup-page-next:hover,
.book-manage-title:hover,
.backup-page-list-item:hover,
.restore-file:hover,
Z .copy-option:hover {
background-color: rgba(235, 235, 235, 0.035);
}
.drag-background {
background: hsla(0, 0%, 0%, 0.5);
}
.action-dialog-container,
.add-dialog-container,
.backup-page-container,
.delete-dialog-container,
.download-desk-container,
.edit-dialog-container,
.loading-dialog,
.setting-dialog-container,
.token-dialog-container,
.new-version,
.sort-dialog-container,
.popup-menu-box,
.loading-page-cover,
.loading-page-cover,
.navigation-panel,
.book-operation-panel,
.progress-panel,
.input-value,
.tag-list-item-new,
.tag-list-item,
.setting-panel-parent {
background: rgba(47, 52, 55, 1);
box-shadow: 0px 0px 7px rgba(0, 0, 0, 0.2);
}
.book-item-cover,
.book-cover,
.book-cover-item-cover,
.book-item-list-cover {
background: rgba(235, 235, 235, 0.1);
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.18);
}
.backup-page-backup-selector,
.message-box-container {
box-shadow: 0px 0px 12px rgba(75, 75, 75, 1);
}
.add-bookmark-button,
.exit-reading-button,
.add-bookmark-button,
.enter-fullscreen-button,
.card-list-item-card,
.navigation-header {
box-shadow: 0px 0px 5px rgba(30, 30, 30, 1);
}
.background-color-circle,
.background-box1,
.background-box2,
.background-box3 {
box-shadow: 0px 0px 2px rgba(235, 235, 235, 0.18);
}
.add-dialog-cancel,
.delete-dialog-cancel,
.edit-dialog-cancel,
.loading-dialog,
.lang-setting-dropdown,
.token-dialog-cancel,
.new-version,
.popup-menu-box,
.general-setting-dropdown,
.card-list-item-card,
.navigation-header,
.import-from-cloud,
.only-local-slider,
.background,
.single-control-button,
.add-dialog-shelf-list-box,
.add-dialog-new-shelf-box,
.edit-dialog-book-name-box,
.edit-dialog-book-author-box,
.booklist-shelf-list,
.progress-slide-circle {
background: rgba(47, 52, 55, 1);
}
.single-control-switch,
::-webkit-scrollbar-thumb,
::-webkit-scrollbar-thumb:hover,
.active-tag,
.active-page,
.sk-chase-dot:before {
background-color: rgba(235, 235, 235, 1) !important;
}
.exit-reading-text,
.add-bookmark-text,
.token-dialog-token-text,
.enter-fullscreen-text,
.reading-progress-icon,
.image-operation,
.add-bookmark-icon,
.exit-reading-icon,
.message-box-icon,
.active-icon,
.active-selector,
.enter-fullscreen-icon,
.icon-popup,
.token-dialog-link-text,
.token-dialog-token-text,
.delete-dialog-uncheck-icon,
.book-bookmark-link,
.general-setting-dropdown,
#jumpPage,
#jumpChapter,
.add-dialog-shelf-list-box,
.add-dialog-new-shelf-box,
.edit-dialog-book-name-box,
.edit-dialog-book-author-box,
.card-list-item-show-more,
.cover-banner,
.book-more-action,
.reading-progress-icon,
.book-love-icon,
input,
.input-value {
color: rgba(235, 235, 235, 1);
}
.book-content-name,
.book-subcontent-name,
.book-bookmark-list,
.nav-search-list-item,
.sort-dialog-seperator {
border-bottom: 1px solid rgba(235, 235, 235, 0.5);
}
.popup-menu-triangle-up,
.active-tag,
.active-page,
.popup-menu-triangle-down {
color: rgba(47, 52, 55, 1) !important;
}

View File

@@ -0,0 +1,249 @@
body,
.editor-box {
-webkit-tap-highlight-color: transparent;
background: rgba(255, 255, 255, 1);
color: rgba(75, 75, 75, 1);
}
.book-content-name,
.delete-tag-container,
.setting-subtitle,
.book-subcontent-name {
color: rgba(75, 75, 75, 1);
}
.reading-progress-icon,
.book-love-icon,
.book-loved-icon,
.zoom-in-icon,
.zoom-out-icon,
.save-icon,
.clockwise-icon,
.counterclockwise-icon,
.book-more-action {
text-shadow: 0px 0px 5px rgba(75, 75, 75, 0.3);
}
.add-dialog-shelf-list-box,
.add-dialog-shelf-list-option,
.add-dialog-new-shelf-box,
.add-dialog-cancel,
.delete-dialog-cancel,
.edit-dialog-book-name-box,
.edit-dialog-book-author-box,
.edit-dialog-cancel,
.tag-list-item,
.token-dialog-cancel,
.lang-setting-dropdown,
.tag-list-item-new,
.input-value,
.import-from-cloud,
.booklist-shelf-list,
.token-dialog-token-box,
.token-dialog-url-box,
.token-dialog-username-box,
.token-dialog-password-box,
.general-setting-dropdown,
.active-color,
.delete-dialog-uncheck-icon,
.next-chapter,
.progress-slide-circle,
.setting-dialog-location-title,
.delete-dialog-uncheck-icon,
.previous-chapter,
.color-option,
.original-text-box,
.trans-text-box,
.line-option,
.token-dialog-link-text,
.token-dialog-token-text,
.nav-search-page-item {
border: 2px solid rgba(75, 75, 75, 1);
}
.header-search-box,
input::-webkit-input-placeholder,
input::-moz-placeholder,
input::-ms-input-placeholder,
textarea::-webkit-input-placeholder,
textarea::-moz-placeholder,
textarea::-ms-input-placeholder,
.header-search-text,
.card-list-item-show-more,
.token-dialog-link-text,
.token-dialog-token-text {
color: rgba(75, 75, 75, 0.8);
}
::-webkit-scrollbar-thumb,
::-webkit-scrollbar-thumb:hover {
background-color: rgba(75, 75, 75, 0.5);
}
.delete-digest-button,
.add-dialog-comfirm,
.backup-page-backup-selector,
.delete-dialog-comfirm,
.book-item-config,
.book-cover-item-config,
.side-menu-selector-container,
.download-desk-button,
.edit-dialog-comfirm,
.change-location-button,
.token-dialog-comfirm,
.new-version-open,
.update-dialog-container-button,
.import-from-local,
.active-tag,
.single-control-switch,
.side-menu-selector-container,
.previous-chapter-single-container,
.next-chapter-single-container,
.book-bookmark-link,
.message-box-container,
.popup-close,
.only-local-icon,
.popup-close,
.active-page,
.sk-chase-dot:before {
background-color: rgba(75, 75, 75, 1) !important;
color: rgba(255, 255, 255, 1) !important;
}
.reading-progress-icon,
.header-search-box,
#jumpPage,
#jumpChapter,
#newTag {
background-color: rgba(75, 75, 75, 0.1);
}
.backup-page-close-icon:hover,
.sidebar-list-icon:hover,
.nav-close-icon:hover,
.setting-close-container:hover,
.side-menu-hover-container,
.setting-dialog-location-title,
.note-option:hover,
.digest-option:hover,
.translation-option:hover,
.speaker-option:hover,
.backup-page-backup:hover,
.search-book-option:hover,
.google-option:hover,
.header-search-text:hover,
.reader-setting-icon-container:hover,
.setting-icon-container:hover,
.animation-mask,
.animation-mask-local,
.sort-by-category-list:hover,
.sort-by-order-list:hover,
.action-dialog-add:hover,
.action-dialog-delete:hover,
.action-dialog-edit:hover,
.backup-page-next:hover,
.backup-page-list-item:hover,
.restore-file:hover,
.book-manage-title:hover,
.copy-option:hover {
background-color: rgba(75, 75, 75, 0.035);
}
.drag-background {
background: hsla(0, 0%, 100%, 0.5);
}
.action-dialog-container,
.add-dialog-container,
.backup-page-container,
.delete-dialog-container,
.download-desk-container,
.edit-dialog-container,
.loading-dialog,
.setting-dialog-container,
.token-dialog-container,
.new-version,
.sort-dialog-container,
.popup-menu-box,
.loading-page-cover,
.loading-page-cover,
.navigation-panel,
.book-operation-panel,
.progress-panel,
.setting-panel-parent {
background: rgba(255, 255, 255, 1);
box-shadow: 0px 0px 7px rgba(0, 0, 0, 0.2);
}
.book-item-cover,
.book-cover,
.book-cover-item-cover,
.book-item-list-cover {
background: rgba(255, 255, 255, 1);
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.18);
}
.book-item-list {
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.18);
}
.backup-page-backup-selector,
.message-box-container {
box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.3);
}
.tag-list-item {
background-color: white;
}
.add-bookmark-button,
.exit-reading-button,
.add-bookmark-button,
.enter-fullscreen-button,
.card-list-item-card,
.navigation-header,
.book-cover {
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.18);
}
.background-color-circle,
.background-box1,
.background-box2,
.background-box3 {
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.18);
}
.add-dialog-cancel,
.delete-dialog-cancel,
.edit-dialog-cancel,
.loading-dialog,
.lang-setting-dropdown,
.token-dialog-cancel,
.new-version,
.popup-menu-box,
.general-setting-dropdown,
.card-list-item-card,
.navigation-header,
.import-from-cloud,
.only-local-slider,
.single-control-button,
.progress-slide-circle {
background: rgba(255, 255, 255, 1);
}
.cover-banner,
.exit-reading-text,
.add-bookmark-text,
.enter-fullscreen-text,
.reading-progress-icon,
.book-love-icon,
.book-more-action,
.image-operation,
.popup-menu-triangle-up,
.popup-menu-triangle-down,
.add-bookmark-icon,
.active-page,
.exit-reading-icon,
.message-box-icon,
.active-icon,
.active-selector,
.enter-fullscreen-icon,
.icon-popup,
.delete-dialog-uncheck-icon,
.book-bookmark-link {
color: rgba(255, 255, 255, 1);
}
.book-content-name,
.book-subcontent-name,
.book-bookmark-list,
.nav-search-list-item,
.sort-dialog-seperator {
border-bottom: 1px solid rgba(75, 75, 75, 0.1);
}

View File

@@ -0,0 +1,74 @@
.delete-digest-button,
.add-dialog-comfirm,
.backup-page-backup-selector,
.delete-dialog-comfirm,
.book-item-config,
.book-cover-item-config,
.side-menu-selector-container,
.download-desk-button,
.edit-dialog-comfirm,
.change-location-button,
.token-dialog-comfirm,
.new-version-open,
.update-dialog-container-button,
.import-from-local,
.single-control-switch,
.side-menu-selector-container,
.previous-chapter-single-container,
.next-chapter-single-container,
.book-bookmark-link,
.message-box-container,
.only-local-icon {
background-color: rgba(0, 143, 145, 1) !important;
}
.header-search-box,
input::-webkit-input-placeholder,
input::-moz-placeholder,
input::-ms-input-placeholder,
textarea::-webkit-input-placeholder,
textarea::-moz-placeholder,
textarea::-ms-input-placeholder,
.header-search-text,
.card-list-item-show-more {
color: rgba(0, 143, 145, 0.8) !important;
}
.single-control-container,
.book-list-view {
color: rgba(0, 143, 145, 1) !important;
}
.reading-progress-icon,
.header-search-box,
#jumpPage,
#jumpChapter,
#newTag {
background-color: rgba(0, 143, 145, 0.1) !important;
}
.backup-page-close-icon:hover,
.sidebar-list-icon:hover,
.nav-close-icon:hover,
.setting-close-container:hover,
.side-menu-hover-container,
.setting-dialog-location-title,
.note-option:hover,
.digest-option:hover,
.translation-option:hover,
.speaker-option:hover,
.search-book-option:hover,
.google-option:hover,
.header-search-text:hover,
.reader-setting-icon-container:hover,
.setting-icon-container:hover,
.animation-mask,
.animation-mask-local,
.copy-option:hover {
background-color: rgba(0, 143, 145, 0.035) !important;
}
.book-content-name,
.book-subcontent-name,
.book-bookmark-list,
.nav-search-list-item,
.sort-dialog-seperator {
border-bottom: 1px solid rgba(0, 143, 145, 0.1) !important;
}

View File

@@ -0,0 +1,74 @@
.delete-digest-button,
.add-dialog-comfirm,
.backup-page-backup-selector,
.delete-dialog-comfirm,
.book-item-config,
.book-cover-item-config,
.side-menu-selector-container,
.download-desk-button,
.edit-dialog-comfirm,
.change-location-button,
.token-dialog-comfirm,
.new-version-open,
.update-dialog-container-button,
.import-from-local,
.single-control-switch,
.side-menu-selector-container,
.previous-chapter-single-container,
.next-chapter-single-container,
.book-bookmark-link,
.message-box-container,
.only-local-icon {
background-color: rgba(104, 103, 209, 1) !important;
}
.header-search-box,
input::-webkit-input-placeholder,
input::-moz-placeholder,
input::-ms-input-placeholder,
textarea::-webkit-input-placeholder,
textarea::-moz-placeholder,
textarea::-ms-input-placeholder,
.header-search-text,
.card-list-item-show-more {
color: rgba(104, 103, 209, 0.8) !important;
}
.single-control-container,
.book-list-view {
color: rgba(104, 103, 209, 1) !important;
}
.reading-progress-icon,
.header-search-box,
#jumpPage,
#jumpChapter,
#newTag {
background-color: rgba(104, 103, 209, 0.1) !important;
}
.backup-page-close-icon:hover,
.sidebar-list-icon:hover,
.nav-close-icon:hover,
.setting-close-container:hover,
.side-menu-hover-container,
.setting-dialog-location-title,
.note-option:hover,
.digest-option:hover,
.translation-option:hover,
.speaker-option:hover,
.search-book-option:hover,
.google-option:hover,
.header-search-text:hover,
.reader-setting-icon-container:hover,
.setting-icon-container:hover,
.animation-mask,
.animation-mask-local,
.copy-option:hover {
background-color: rgba(104, 103, 209, 0.035) !important;
}
.book-content-name,
.book-subcontent-name,
.book-bookmark-list,
.nav-search-list-item,
.sort-dialog-seperator {
border-bottom: 1px solid rgba(104, 103, 209, 0.1) !important;
}

View File

@@ -0,0 +1,74 @@
.delete-digest-button,
.add-dialog-comfirm,
.backup-page-backup-selector,
.delete-dialog-comfirm,
.book-item-config,
.book-cover-item-config,
.side-menu-selector-container,
.download-desk-button,
.edit-dialog-comfirm,
.change-location-button,
.token-dialog-comfirm,
.new-version-open,
.update-dialog-container-button,
.import-from-local,
.single-control-switch,
.side-menu-selector-container,
.previous-chapter-single-container,
.next-chapter-single-container,
.book-bookmark-link,
.message-box-container,
.only-local-icon {
background-color: rgba(241, 100, 100, 1) !important;
}
.header-search-box,
input::-webkit-input-placeholder,
input::-moz-placeholder,
input::-ms-input-placeholder,
textarea::-webkit-input-placeholder,
textarea::-moz-placeholder,
textarea::-ms-input-placeholder,
.header-search-text,
.card-list-item-show-more {
color: rgba(241, 100, 100, 0.8) !important;
}
.single-control-container,
.book-list-view {
color: rgba(241, 100, 100, 1) !important;
}
.reading-progress-icon,
.header-search-box,
#jumpPage,
#jumpChapter,
#newTag {
background-color: rgba(241, 100, 100, 0.1) !important;
}
.backup-page-close-icon:hover,
.sidebar-list-icon:hover,
.nav-close-icon:hover,
.setting-close-container:hover,
.side-menu-hover-container,
.setting-dialog-location-title,
.note-option:hover,
.digest-option:hover,
.translation-option:hover,
.speaker-option:hover,
.search-book-option:hover,
.google-option:hover,
.header-search-text:hover,
.reader-setting-icon-container:hover,
.setting-icon-container:hover,
.animation-mask,
.animation-mask-local,
.copy-option:hover {
background-color: rgba(241, 100, 100, 0.035) !important;
}
.book-content-name,
.book-subcontent-name,
.book-bookmark-list,
.nav-search-list-item,
.sort-dialog-seperator {
border-bottom: 1px solid rgba(241, 100, 100, 0.1) !important;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -0,0 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./favicon.png"/><link rel="dns-prefetch" href="https://reader.960960.xyz"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="keywords" content="epub reader free koodo"/><meta itemprop="name" content="Koodo Reader - Free Epub Reader for Windows, Mac and Web"/><meta itemprop="description" content="Koodo Reader is an open-source epub reader with backup and restore support, runs on Windows, Mac and Web"/><style>#root{height:100%;width:100%}</style><title>Koodo Reader</title><link href="./static/css/2.d1c82cca.chunk.css" rel="stylesheet"><link href="./static/css/main.1c469a44.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><canvas id="the-canvas"></canvas><script>var on_import_click=async()=>{},import_book=async o=>{console.log(o),await getMd5WithBrowser(o)},export_book=async o=>{},open_url=o=>{}</script><script type="text/javascript" src="./lib/JSZip/jszip.min.js"></script><script type="text/javascript" src="./lib/kookit/kookit.umd.js"></script><script type="text/javascript" src="./lib/marked/marked.js"></script><script type="text/javascript" src="./lib/EpubJS/epub.min.js"></script><script type="text/javascript" src="./lib/pdf/build/pdf.js"></script><script type="text/javascript" src="./lib/Dropbox/Dropbox-sdk.min.js"></script><script type="text/javascript" src="./lib/Rangy/rangy-core.js"></script><script type="text/javascript" src="./lib/Rangy/rangy-serializer.js"></script><script type="text/javascript" src="./lib/Rangy/rangy-classapplier.js"></script><script type="text/javascript" src="./lib/Rangy/rangy-highlighter.js"></script><script type="text/javascript" src="./lib/Rangy/rangy-textrange.js"></script><script type="text/javascript" src="./lib/Hammer/hammer.min.js"></script><script type="text/javascript" src="./lib/unrar/unrar.js"></script><script type="text/javascript" src="./lib/djvu/djvu.js"></script><script type="text/javascript" src="./lib/djvu/djvu_viewer.js"></script><script type="text/javascript" src="./lib/mammoth/mammoth.browser.min.js"></script><script>!function(e){function r(r){for(var n,l,a=r[0],f=r[1],i=r[2],c=0,s=[];c<a.length;c++)l=a[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in f)Object.prototype.hasOwnProperty.call(f,n)&&(e[n]=f[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,i||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,a=1;a<t.length;a++){var f=t[a];0!==o[f]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={1:0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="./";var a=this["webpackJsonpkoodo-reader"]=this["webpackJsonpkoodo-reader"]||[],f=a.push.bind(a);a.push=r,a=a.slice();for(var i=0;i<a.length;i++)r(a[i]);var p=f;t()}([])</script><script src="./static/js/2.3d8e3fcb.chunk.js"></script><script src="./static/js/main.588b597d.chunk.js"></script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,784 @@
/**
* Highlighter module for Rangy, a cross-browser JavaScript range and selection library
* https://github.com/timdown/rangy
*
* Depends on Rangy core, ClassApplier and optionally TextRange modules.
*
* Copyright 2015, Tim Down
* Licensed under the MIT license.
* Version: 1.3.0
* Build date: 10 May 2015
*/
(function (factory, root) {
if (typeof define == "function" && define.amd) {
// AMD. Register as an anonymous module with a dependency on Rangy.
define(["./rangy-core"], factory);
} else if (typeof module != "undefined" && typeof exports == "object") {
// Node/CommonJS style
module.exports = factory(require("rangy"));
} else {
// No AMD or CommonJS support so we use the rangy property of root (probably the global variable)
factory(root.rangy);
}
})(function (rangy) {
rangy.createModule("Highlighter", ["ClassApplier"], function (api, module) {
var dom = api.dom;
var contains = dom.arrayContains;
var getBody = dom.getBody;
var createOptions = api.util.createOptions;
var forEach = api.util.forEach;
var nextHighlightId = 1;
// Puts highlights in order, last in document first.
function compareHighlights(h1, h2) {
return h1.characterRange.start - h2.characterRange.start;
}
function getContainerElement(doc, id) {
return id ? doc.getElementById(id) : getBody(doc);
}
/*----------------------------------------------------------------------------------------------------------------*/
var highlighterTypes = {};
function HighlighterType(type, converterCreator) {
this.type = type;
this.converterCreator = converterCreator;
}
HighlighterType.prototype.create = function () {
var converter = this.converterCreator();
converter.type = this.type;
return converter;
};
function registerHighlighterType(type, converterCreator) {
highlighterTypes[type] = new HighlighterType(type, converterCreator);
}
function getConverter(type) {
var highlighterType = highlighterTypes[type];
if (highlighterType instanceof HighlighterType) {
return highlighterType.create();
} else {
throw new Error("Highlighter type '" + type + "' is not valid");
}
}
api.registerHighlighterType = registerHighlighterType;
/*----------------------------------------------------------------------------------------------------------------*/
function CharacterRange(start, end) {
this.start = start;
this.end = end;
}
CharacterRange.prototype = {
intersects: function (charRange) {
return this.start < charRange.end && this.end > charRange.start;
},
isContiguousWith: function (charRange) {
return this.start == charRange.end || this.end == charRange.start;
},
union: function (charRange) {
return new CharacterRange(
Math.min(this.start, charRange.start),
Math.max(this.end, charRange.end)
);
},
intersection: function (charRange) {
return new CharacterRange(
Math.max(this.start, charRange.start),
Math.min(this.end, charRange.end)
);
},
getComplements: function (charRange) {
var ranges = [];
if (this.start >= charRange.start) {
if (this.end <= charRange.end) {
return [];
}
ranges.push(new CharacterRange(charRange.end, this.end));
} else {
ranges.push(
new CharacterRange(this.start, Math.min(this.end, charRange.start))
);
if (this.end > charRange.end) {
ranges.push(new CharacterRange(charRange.end, this.end));
}
}
return ranges;
},
toString: function () {
return "[CharacterRange(" + this.start + ", " + this.end + ")]";
},
};
CharacterRange.fromCharacterRange = function (charRange) {
return new CharacterRange(charRange.start, charRange.end);
};
/*----------------------------------------------------------------------------------------------------------------*/
var textContentConverter = {
rangeToCharacterRange: function (range, containerNode) {
var bookmark = range.getBookmark(containerNode);
return new CharacterRange(bookmark.start, bookmark.end);
},
characterRangeToRange: function (doc, characterRange, containerNode) {
var range = api.createRange(doc);
range.moveToBookmark({
start: characterRange.start,
end: characterRange.end,
containerNode: containerNode,
});
return range;
},
serializeSelection: function (selection, containerNode) {
var ranges = selection.getAllRanges(),
rangeCount = ranges.length;
var rangeInfos = [];
var backward = rangeCount == 1 && selection.isBackward();
for (var i = 0, len = ranges.length; i < len; ++i) {
rangeInfos[i] = {
characterRange: this.rangeToCharacterRange(
ranges[i],
containerNode
),
backward: backward,
};
}
return rangeInfos;
},
restoreSelection: function (selection, savedSelection, containerNode) {
selection.removeAllRanges();
var doc = selection.win.document;
for (
var i = 0,
len = savedSelection.length,
range,
rangeInfo,
characterRange;
i < len;
++i
) {
rangeInfo = savedSelection[i];
characterRange = rangeInfo.characterRange;
range = this.characterRangeToRange(
doc,
rangeInfo.characterRange,
containerNode
);
selection.addRange(range, rangeInfo.backward);
}
},
};
registerHighlighterType("textContent", function () {
return textContentConverter;
});
/*----------------------------------------------------------------------------------------------------------------*/
// Lazily load the TextRange-based converter so that the dependency is only checked when required.
registerHighlighterType(
"TextRange",
(function () {
var converter;
return function () {
if (!converter) {
// Test that textRangeModule exists and is supported
var textRangeModule = api.modules.TextRange;
if (!textRangeModule) {
throw new Error("TextRange module is missing.");
} else if (!textRangeModule.supported) {
throw new Error("TextRange module is present but not supported.");
}
converter = {
rangeToCharacterRange: function (range, containerNode) {
return CharacterRange.fromCharacterRange(
range.toCharacterRange(containerNode)
);
},
characterRangeToRange: function (
doc,
characterRange,
containerNode
) {
var range = api.createRange(doc);
range.selectCharacters(
containerNode,
characterRange.start,
characterRange.end
);
return range;
},
serializeSelection: function (selection, containerNode) {
return selection.saveCharacterRanges(containerNode);
},
restoreSelection: function (
selection,
savedSelection,
containerNode
) {
selection.restoreCharacterRanges(containerNode, savedSelection);
},
};
}
return converter;
};
})()
);
/*----------------------------------------------------------------------------------------------------------------*/
function Highlight(
doc,
characterRange,
classApplier,
converter,
id,
containerElementId
) {
if (id) {
this.id = id;
nextHighlightId = Math.max(nextHighlightId, id + 1);
} else {
this.id = nextHighlightId++;
}
this.characterRange = characterRange;
this.doc = doc;
this.classApplier = classApplier;
this.converter = converter;
this.containerElementId = containerElementId || null;
this.applied = false;
}
Highlight.prototype = {
getContainerElement: function () {
return getContainerElement(this.doc, this.containerElementId);
},
getRange: function () {
return this.converter.characterRangeToRange(
this.doc,
this.characterRange,
this.getContainerElement()
);
},
fromRange: function (range) {
this.characterRange = this.converter.rangeToCharacterRange(
range,
this.getContainerElement()
);
},
getText: function () {
return this.getRange().toString();
},
containsElement: function (el) {
return this.getRange().containsNodeContents(el.firstChild);
},
unapply: function () {
this.classApplier.undoToRange(this.getRange());
this.applied = false;
},
apply: function () {
this.classApplier.applyToRange(this.getRange());
this.applied = true;
},
getHighlightElements: function () {
return this.classApplier.getElementsWithClassIntersectingRange(
this.getRange()
);
},
toString: function () {
return (
"[Highlight(ID: " +
this.id +
", class: " +
this.classApplier.className +
", character range: " +
this.characterRange.start +
" - " +
this.characterRange.end +
")]"
);
},
};
/*----------------------------------------------------------------------------------------------------------------*/
function Highlighter(doc, type) {
type = type || "textContent";
this.doc = doc || document;
this.classAppliers = {};
this.highlights = [];
this.converter = getConverter(type);
}
Highlighter.prototype = {
addClassApplier: function (classApplier) {
this.classAppliers[classApplier.className] = classApplier;
},
getHighlightForElement: function (el) {
var highlights = this.highlights;
for (var i = 0, len = highlights.length; i < len; ++i) {
if (highlights[i].containsElement(el)) {
return highlights[i];
}
}
return null;
},
removeHighlights: function (highlights) {
for (var i = 0, len = this.highlights.length, highlight; i < len; ++i) {
highlight = this.highlights[i];
if (contains(highlights, highlight)) {
highlight.unapply();
this.highlights.splice(i--, 1);
}
}
},
removeAllHighlights: function () {
this.removeHighlights(this.highlights);
},
getIntersectingHighlights: function (ranges) {
// Test each range against each of the highlighted ranges to see whether they overlap
var intersectingHighlights = [],
highlights = this.highlights;
forEach(ranges, function (range) {
//var selCharRange = converter.rangeToCharacterRange(range);
forEach(highlights, function (highlight) {
if (
range.intersectsRange(highlight.getRange()) &&
!contains(intersectingHighlights, highlight)
) {
intersectingHighlights.push(highlight);
}
});
});
return intersectingHighlights;
},
highlightCharacterRanges: function (className, charRanges, options) {
var i, len, j;
var highlights = this.highlights;
var converter = this.converter;
var doc = this.doc;
var highlightsToRemove = [];
var classApplier = className ? this.classAppliers[className] : null;
options = createOptions(options, {
containerElementId: null,
exclusive: true,
});
var containerElementId = options.containerElementId;
var exclusive = options.exclusive;
var containerElement, containerElementRange, containerElementCharRange;
if (containerElementId) {
containerElement = this.doc.getElementById(containerElementId);
if (containerElement) {
containerElementRange = api.createRange(this.doc);
containerElementRange.selectNodeContents(containerElement);
containerElementCharRange = new CharacterRange(
0,
containerElementRange.toString().length
);
}
}
var charRange,
highlightCharRange,
removeHighlight,
isSameClassApplier,
highlightsToKeep,
splitHighlight;
for (i = 0, len = charRanges.length; i < len; ++i) {
charRange = charRanges[i];
highlightsToKeep = [];
// Restrict character range to container element, if it exists
if (containerElementCharRange) {
charRange = charRange.intersection(containerElementCharRange);
}
// Ignore empty ranges
if (charRange.start == charRange.end) {
continue;
}
// Check for intersection with existing highlights. For each intersection, create a new highlight
// which is the union of the highlight range and the selected range
for (j = 0; j < highlights.length; ++j) {
removeHighlight = false;
if (containerElementId == highlights[j].containerElementId) {
highlightCharRange = highlights[j].characterRange;
isSameClassApplier = classApplier == highlights[j].classApplier;
splitHighlight = !isSameClassApplier && exclusive;
// Replace the existing highlight if it needs to be:
// 1. merged (isSameClassApplier)
// 2. partially or entirely erased (className === null)
// 3. partially or entirely replaced (isSameClassApplier == false && exclusive == true)
if (
(highlightCharRange.intersects(charRange) ||
highlightCharRange.isContiguousWith(charRange)) &&
(isSameClassApplier || splitHighlight)
) {
// Remove existing highlights, keeping the unselected parts
if (splitHighlight) {
forEach(
highlightCharRange.getComplements(charRange),
function (rangeToAdd) {
highlightsToKeep.push(
new Highlight(
doc,
rangeToAdd,
highlights[j].classApplier,
converter,
null,
containerElementId
)
);
}
);
}
removeHighlight = true;
if (isSameClassApplier) {
charRange = highlightCharRange.union(charRange);
}
}
}
if (removeHighlight) {
highlightsToRemove.push(highlights[j]);
highlights[j] = new Highlight(
doc,
highlightCharRange.union(charRange),
classApplier,
converter,
null,
containerElementId
);
} else {
highlightsToKeep.push(highlights[j]);
}
}
// Add new range
if (classApplier) {
highlightsToKeep.push(
new Highlight(
doc,
charRange,
classApplier,
converter,
null,
containerElementId
)
);
}
this.highlights = highlights = highlightsToKeep;
}
// Remove the old highlights
forEach(highlightsToRemove, function (highlightToRemove) {
highlightToRemove.unapply();
});
// Apply new highlights
var newHighlights = [];
forEach(highlights, function (highlight) {
if (!highlight.applied) {
highlight.apply();
newHighlights.push(highlight);
}
});
return newHighlights;
},
highlightRanges: function (className, ranges, options) {
var selCharRanges = [];
var converter = this.converter;
options = createOptions(options, {
containerElement: null,
exclusive: true,
});
var containerElement = options.containerElement;
var containerElementId = containerElement ? containerElement.id : null;
var containerElementRange;
if (containerElement) {
containerElementRange = api.createRange(containerElement);
containerElementRange.selectNodeContents(containerElement);
}
forEach(ranges, function (range) {
var scopedRange = containerElement
? containerElementRange.intersection(range)
: range;
selCharRanges.push(
converter.rangeToCharacterRange(
scopedRange,
containerElement || getBody(range.getDocument())
)
);
});
return this.highlightCharacterRanges(className, selCharRanges, {
containerElementId: containerElementId,
exclusive: options.exclusive,
});
},
highlightSelection: function (className, options) {
var converter = this.converter;
var classApplier = className ? this.classAppliers[className] : false;
options = createOptions(options, {
containerElementId: null,
selection: api.getSelection(this.doc),
exclusive: true,
});
var containerElementId = options.containerElementId;
var exclusive = options.exclusive;
var selection = options.selection;
var doc = selection.win.document;
var containerElement = getContainerElement(doc, containerElementId);
if (!classApplier && className !== false) {
throw new Error(
"No class applier found for class '" + className + "'"
);
}
// Store the existing selection as character ranges
var serializedSelection = converter.serializeSelection(
selection,
containerElement
);
// Create an array of selected character ranges
var selCharRanges = [];
forEach(serializedSelection, function (rangeInfo) {
selCharRanges.push(
CharacterRange.fromCharacterRange(rangeInfo.characterRange)
);
});
var newHighlights = this.highlightCharacterRanges(
className,
selCharRanges,
{
containerElementId: containerElementId,
exclusive: exclusive,
}
);
// Restore selection
converter.restoreSelection(
selection,
serializedSelection,
containerElement
);
return newHighlights;
},
unhighlightSelection: function (selection) {
selection = selection || api.getSelection(this.doc);
var intersectingHighlights = this.getIntersectingHighlights(
selection.getAllRanges()
);
this.removeHighlights(intersectingHighlights);
selection.removeAllRanges();
return intersectingHighlights;
},
getHighlightsInSelection: function (selection) {
selection = selection || api.getSelection(this.doc);
return this.getIntersectingHighlights(selection.getAllRanges());
},
selectionOverlapsHighlight: function (selection) {
return this.getHighlightsInSelection(selection).length > 0;
},
serialize: function (options) {
var highlighter = this;
var highlights = highlighter.highlights;
var serializedType,
serializedHighlights,
convertType,
serializationConverter;
highlights.sort(compareHighlights);
options = createOptions(options, {
serializeHighlightText: false,
type: highlighter.converter.type,
});
serializedType = options.type;
convertType = serializedType != highlighter.converter.type;
if (convertType) {
serializationConverter = getConverter(serializedType);
}
serializedHighlights = ["type:" + serializedType];
forEach(highlights, function (highlight) {
var characterRange = highlight.characterRange;
var containerElement;
// Convert to the current Highlighter's type, if different from the serialization type
if (convertType) {
containerElement = highlight.getContainerElement();
characterRange = serializationConverter.rangeToCharacterRange(
highlighter.converter.characterRangeToRange(
highlighter.doc,
characterRange,
containerElement
),
containerElement
);
}
var parts = [
characterRange.start,
characterRange.end,
highlight.id,
highlight.classApplier.className,
highlight.containerElementId,
];
if (options.serializeHighlightText) {
parts.push(highlight.getText());
}
serializedHighlights.push(parts.join("$"));
});
return serializedHighlights.join("|");
},
deserialize: function (serialized) {
var serializedHighlights = serialized.split("|");
var highlights = [];
var firstHighlight = serializedHighlights[0];
var regexResult;
var serializationType,
serializationConverter,
convertType = false;
if (
firstHighlight &&
(regexResult = /^type:(\w+)$/.exec(firstHighlight))
) {
serializationType = regexResult[1];
if (serializationType != this.converter.type) {
serializationConverter = getConverter(serializationType);
convertType = true;
}
serializedHighlights.shift();
} else {
throw new Error("Serialized highlights are invalid.");
}
var classApplier,
highlight,
characterRange,
containerElementId,
containerElement;
for (var i = serializedHighlights.length, parts; i-- > 0; ) {
parts = serializedHighlights[i].split("$");
characterRange = new CharacterRange(+parts[0], +parts[1]);
containerElementId = parts[4] || null;
// Convert to the current Highlighter's type, if different from the serialization type
if (convertType) {
containerElement = getContainerElement(
this.doc,
containerElementId
);
characterRange = this.converter.rangeToCharacterRange(
serializationConverter.characterRangeToRange(
this.doc,
characterRange,
containerElement
),
containerElement
);
}
classApplier = this.classAppliers[parts[3]];
if (!classApplier) {
throw new Error(
"No class applier found for class '" + parts[3] + "'"
);
}
highlight = new Highlight(
this.doc,
characterRange,
classApplier,
this.converter,
parseInt(parts[2]),
containerElementId
);
highlight.apply();
highlights.push(highlight);
}
this.highlights = highlights;
},
};
api.Highlighter = Highlighter;
api.createHighlighter = function (doc, rangeCharacterOffsetConverterType) {
return new Highlighter(doc, rangeCharacterOffsetConverterType);
};
});
return rangy;
}, this);

View File

@@ -0,0 +1,314 @@
/**
* Serializer module for Rangy.
* Serializes Ranges and Selections. An example use would be to store a user's selection on a particular page in a
* cookie or local storage and restore it on the user's next visit to the same page.
*
* Part of Rangy, a cross-browser JavaScript range and selection library
* https://github.com/timdown/rangy
*
* Depends on Rangy core.
*
* Copyright 2015, Tim Down
* Licensed under the MIT license.
* Version: 1.3.0
* Build date: 10 May 2015
*/
(function(factory, root) {
if (typeof define == "function" && define.amd) {
// AMD. Register as an anonymous module with a dependency on Rangy.
define(["./rangy-core"], factory);
} else if (typeof module != "undefined" && typeof exports == "object") {
// Node/CommonJS style
module.exports = factory( require("rangy") );
} else {
// No AMD or CommonJS support so we use the rangy property of root (probably the global variable)
factory(root.rangy);
}
})(function(rangy) {
rangy.createModule("Serializer", ["WrappedSelection"], function(api, module) {
var UNDEF = "undefined";
var util = api.util;
// encodeURIComponent and decodeURIComponent are required for cookie handling
if (typeof encodeURIComponent == UNDEF || typeof decodeURIComponent == UNDEF) {
module.fail("encodeURIComponent and/or decodeURIComponent method is missing");
}
// Checksum for checking whether range can be serialized
var crc32 = (function() {
function utf8encode(str) {
var utf8CharCodes = [];
for (var i = 0, len = str.length, c; i < len; ++i) {
c = str.charCodeAt(i);
if (c < 128) {
utf8CharCodes.push(c);
} else if (c < 2048) {
utf8CharCodes.push((c >> 6) | 192, (c & 63) | 128);
} else {
utf8CharCodes.push((c >> 12) | 224, ((c >> 6) & 63) | 128, (c & 63) | 128);
}
}
return utf8CharCodes;
}
var cachedCrcTable = null;
function buildCRCTable() {
var table = [];
for (var i = 0, j, crc; i < 256; ++i) {
crc = i;
j = 8;
while (j--) {
if ((crc & 1) == 1) {
crc = (crc >>> 1) ^ 0xEDB88320;
} else {
crc >>>= 1;
}
}
table[i] = crc >>> 0;
}
return table;
}
function getCrcTable() {
if (!cachedCrcTable) {
cachedCrcTable = buildCRCTable();
}
return cachedCrcTable;
}
return function(str) {
var utf8CharCodes = utf8encode(str), crc = -1, crcTable = getCrcTable();
for (var i = 0, len = utf8CharCodes.length, y; i < len; ++i) {
y = (crc ^ utf8CharCodes[i]) & 0xFF;
crc = (crc >>> 8) ^ crcTable[y];
}
return (crc ^ -1) >>> 0;
};
})();
var dom = api.dom;
function escapeTextForHtml(str) {
return str.replace(/</g, "&lt;").replace(/>/g, "&gt;");
}
function nodeToInfoString(node, infoParts) {
infoParts = infoParts || [];
var nodeType = node.nodeType, children = node.childNodes, childCount = children.length;
var nodeInfo = [nodeType, node.nodeName, childCount].join(":");
var start = "", end = "";
switch (nodeType) {
case 3: // Text node
start = escapeTextForHtml(node.nodeValue);
break;
case 8: // Comment
start = "<!--" + escapeTextForHtml(node.nodeValue) + "-->";
break;
default:
start = "<" + nodeInfo + ">";
end = "</>";
break;
}
if (start) {
infoParts.push(start);
}
for (var i = 0; i < childCount; ++i) {
nodeToInfoString(children[i], infoParts);
}
if (end) {
infoParts.push(end);
}
return infoParts;
}
// Creates a string representation of the specified element's contents that is similar to innerHTML but omits all
// attributes and comments and includes child node counts. This is done instead of using innerHTML to work around
// IE <= 8's policy of including element properties in attributes, which ruins things by changing an element's
// innerHTML whenever the user changes an input within the element.
function getElementChecksum(el) {
var info = nodeToInfoString(el).join("");
return crc32(info).toString(16);
}
function serializePosition(node, offset, rootNode) {
var pathParts = [], n = node;
rootNode = rootNode || dom.getDocument(node).documentElement;
while (n && n != rootNode) {
pathParts.push(dom.getNodeIndex(n, true));
n = n.parentNode;
}
return pathParts.join("/") + ":" + offset;
}
function deserializePosition(serialized, rootNode, doc) {
if (!rootNode) {
rootNode = (doc || document).documentElement;
}
var parts = serialized.split(":");
var node = rootNode;
var nodeIndices = parts[0] ? parts[0].split("/") : [], i = nodeIndices.length, nodeIndex;
while (i--) {
nodeIndex = parseInt(nodeIndices[i], 10);
if (nodeIndex < node.childNodes.length) {
node = node.childNodes[nodeIndex];
} else {
throw module.createError("deserializePosition() failed: node " + dom.inspectNode(node) +
" has no child with index " + nodeIndex + ", " + i);
}
}
return new dom.DomPosition(node, parseInt(parts[1], 10));
}
function serializeRange(range, omitChecksum, rootNode) {
rootNode = rootNode || api.DomRange.getRangeDocument(range).documentElement;
if (!dom.isOrIsAncestorOf(rootNode, range.commonAncestorContainer)) {
throw module.createError("serializeRange(): range " + range.inspect() +
" is not wholly contained within specified root node " + dom.inspectNode(rootNode));
}
var serialized = serializePosition(range.startContainer, range.startOffset, rootNode) + "," +
serializePosition(range.endContainer, range.endOffset, rootNode);
if (!omitChecksum) {
serialized += "{" + getElementChecksum(rootNode) + "}";
}
return serialized;
}
var deserializeRegex = /^([^,]+),([^,\{]+)(\{([^}]+)\})?$/;
function deserializeRange(serialized, rootNode, doc) {
if (rootNode) {
doc = doc || dom.getDocument(rootNode);
} else {
doc = doc || document;
rootNode = doc.documentElement;
}
var result = deserializeRegex.exec(serialized);
var checksum = result[4];
if (checksum) {
var rootNodeChecksum = getElementChecksum(rootNode);
if (checksum !== rootNodeChecksum) {
throw module.createError("deserializeRange(): checksums of serialized range root node (" + checksum +
") and target root node (" + rootNodeChecksum + ") do not match");
}
}
var start = deserializePosition(result[1], rootNode, doc), end = deserializePosition(result[2], rootNode, doc);
var range = api.createRange(doc);
range.setStartAndEnd(start.node, start.offset, end.node, end.offset);
return range;
}
function canDeserializeRange(serialized, rootNode, doc) {
if (!rootNode) {
rootNode = (doc || document).documentElement;
}
var result = deserializeRegex.exec(serialized);
var checksum = result[3];
return !checksum || checksum === getElementChecksum(rootNode);
}
function serializeSelection(selection, omitChecksum, rootNode) {
selection = api.getSelection(selection);
var ranges = selection.getAllRanges(), serializedRanges = [];
for (var i = 0, len = ranges.length; i < len; ++i) {
serializedRanges[i] = serializeRange(ranges[i], omitChecksum, rootNode);
}
return serializedRanges.join("|");
}
function deserializeSelection(serialized, rootNode, win) {
if (rootNode) {
win = win || dom.getWindow(rootNode);
} else {
win = win || window;
rootNode = win.document.documentElement;
}
var serializedRanges = serialized.split("|");
var sel = api.getSelection(win);
var ranges = [];
for (var i = 0, len = serializedRanges.length; i < len; ++i) {
ranges[i] = deserializeRange(serializedRanges[i], rootNode, win.document);
}
sel.setRanges(ranges);
return sel;
}
function canDeserializeSelection(serialized, rootNode, win) {
var doc;
if (rootNode) {
doc = win ? win.document : dom.getDocument(rootNode);
} else {
win = win || window;
rootNode = win.document.documentElement;
}
var serializedRanges = serialized.split("|");
for (var i = 0, len = serializedRanges.length; i < len; ++i) {
if (!canDeserializeRange(serializedRanges[i], rootNode, doc)) {
return false;
}
}
return true;
}
var cookieName = "rangySerializedSelection";
function getSerializedSelectionFromCookie(cookie) {
var parts = cookie.split(/[;,]/);
for (var i = 0, len = parts.length, nameVal, val; i < len; ++i) {
nameVal = parts[i].split("=");
if (nameVal[0].replace(/^\s+/, "") == cookieName) {
val = nameVal[1];
if (val) {
return decodeURIComponent(val.replace(/\s+$/, ""));
}
}
}
return null;
}
function restoreSelectionFromCookie(win) {
win = win || window;
var serialized = getSerializedSelectionFromCookie(win.document.cookie);
if (serialized) {
deserializeSelection(serialized, win.doc);
}
}
function saveSelectionCookie(win, props) {
win = win || window;
props = (typeof props == "object") ? props : {};
var expires = props.expires ? ";expires=" + props.expires.toUTCString() : "";
var path = props.path ? ";path=" + props.path : "";
var domain = props.domain ? ";domain=" + props.domain : "";
var secure = props.secure ? ";secure" : "";
var serialized = serializeSelection(api.getSelection(win));
win.document.cookie = encodeURIComponent(cookieName) + "=" + encodeURIComponent(serialized) + expires + path + domain + secure;
}
util.extend(api, {
serializePosition: serializePosition,
deserializePosition: deserializePosition,
serializeRange: serializeRange,
deserializeRange: deserializeRange,
canDeserializeRange: canDeserializeRange,
serializeSelection: serializeSelection,
deserializeSelection: deserializeSelection,
canDeserializeSelection: canDeserializeSelection,
restoreSelectionFromCookie: restoreSelectionFromCookie,
saveSelectionCookie: saveSelectionCookie,
getElementChecksum: getElementChecksum,
nodeToInfoString: nodeToInfoString
});
util.crc32 = crc32;
});
return rangy;
}, this);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,3 @@
<03>RCopyright 1990-2009 Adobe Systems Incorporated.
All rights reserved.
See ./LICENSE<53>CNS2-H

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More