2 <script>window
.markdeepOptions
= {mode
: 'script'};</script>
3 <script src=
"https://morgan3d.github.io/markdeep/latest/markdeep.min.js"></script>
4 <script id=
"MathJax-script" async
src=
"https://fastly.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
6 function absFile(url
) {
8 this.slice
= async(offset
, length
) =>{
9 const headers
= new Headers();
10 headers
.append('range', 'bytes=' + offset
+ '-' + ( offset
+ length
-1).toString());
13 credentials
: 'include',
17 const resp
= await
fetch( this.name
, opts
);
18 return await resp
.arrayBuffer();
19 //alert(JSON.stringify(resp.headers));
20 //return await resp.text();
25 var blocksize
= 20480;
27 function render(u8array
){
28 document
.body
.innerHTML
= window
.markdeep
.format(new TextDecoder().decode(u8array
),true);
29 MathJax
.typesetPromise();
31 function setPageUrl(pageurl
){
32 let a
= document
.createElement('a');
33 a
.href
= "i:5c"+pageurl
;
39 var extrasize
= blocksize
; //extrasize should <= blocksize
40 let lhash
= location
.hash
;
42 if("p"!==lhash
.charAt(1)){//#offset=&[len]
43 let iAmpersand
= lhash
.indexOf('&',8);
44 let offset
= parseInt(lhash
.substring(8,iAmpersand
));
45 let len
= parseInt(lhash
.substring(iAmpersand
+1));
46 {//update urlInc() url
47 let href
= location
.href
;
48 let iHash
= href
.indexOf('#');
49 href
=href
.substring(0,iHash
)+"#page="+Math
.floor((offset
+len
)/blocksize
);
52 file
.slice(offset
,len
).then((buffer
)=>{
53 let u8
= new Uint8Array(buffer
);
59 page
= parseInt(lhash
.substring(6));
61 setPageUrl(location
.href
+"#page=1");
62 file
.slice(blocksize
*(page
-1),blocksize
+extrasize
).then((buffer
)=>{
63 let u8
= new Uint8Array(buffer
);
64 let u8len
= u8
.length
;
66 let limit
= Math
.min(u8len
,extrasize
);
68 for(let i
=1;i
<limit
;i
=i
+2){
69 if(10==u8
[i
] && 10==u8
[i
-1]) {
75 let iEnd
= Math
.min(u8len
,blocksize
);
76 limit
= Math
.min(u8len
,blocksize
+extrasize
);
77 for(let i
=blocksize
+1;i
<limit
;i
=i
+2){
78 if(10==u8
[i
] && 10==u8
[i
-1]) {
83 render(u8
.slice(iStart
,iEnd
));
87 //?url=#offset=&[len]&page=
88 file
= new absFile(location
.search
.substring(5));
89 window
.addEventListener('hashchange',loadSlice
);
93 <script>loadSlice();</script>