├── docs ├── dochack.js ├── nimdoc.out.css └── patgraph.html ├── patgraph.nim ├── patgraph.nimble └── readme.md /docs/dochack.js: -------------------------------------------------------------------------------- 1 | /* Generated by the Nim Compiler v1.9.1 */ 2 | var framePtr = null; 3 | var excHandler = 0; 4 | var lastJSError = null; 5 | var NTI687865870 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; 6 | var NTI536871446 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; 7 | var NTI671088733 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 8 | var NTI671088732 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 9 | var NTI671088731 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 10 | var NTI671088730 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 11 | var NTI671088729 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 12 | var NTI671088728 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 13 | var NTI671088727 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 14 | var NTI671088726 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 15 | var NTI671088725 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 16 | var NTI671088724 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 17 | var NTI671088723 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 18 | var NTI671088722 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 19 | var NTI671088721 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 20 | var NTI671088720 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 21 | var NTI671088719 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 22 | var NTI671088718 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 23 | var NTI671088717 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 24 | var NTI671088716 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 25 | var NTI671088715 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 26 | var NTI671088714 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 27 | var NTI671088713 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 28 | var NTI671088712 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 29 | var NTI671088711 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 30 | var NTI671088710 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 31 | var NTI671088709 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 32 | var NTI671088782 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 33 | var NTI671088670 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; 34 | var NTI671088829 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 35 | var NTI671088826 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; 36 | var NTI671088825 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; 37 | var NTI671088705 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; 38 | var NTI671088828 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; 39 | var NTI671088706 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; 40 | var NTI671088775 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 41 | var NTI671088664 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; 42 | var NTI671088764 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; 43 | var NTI671088776 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 44 | var NTI671088665 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; 45 | var NTI671088763 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; 46 | var NTI671088762 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; 47 | var NTI671088781 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 48 | var NTI671088669 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; 49 | var NTI671088761 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; 50 | var NTI671088760 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; 51 | var NTI671088777 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 52 | var NTI671088666 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; 53 | var NTI671088759 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; 54 | var NTI671088767 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; 55 | var NTI671088778 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 56 | var NTI671088667 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; 57 | var NTI671088766 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; 58 | var NTI33554435 = {size: 0,kind: 31,base: null,node: null,finalizer: null}; 59 | var NTI671088780 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; 60 | var NTI671088779 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 61 | var NTI671088668 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; 62 | var NTI33554466 = {size: 0,kind: 1,base: null,node: null,finalizer: null}; 63 | var NTI671088751 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 64 | var NTI671088654 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; 65 | var NTI671088765 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 66 | var NTI671088658 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; 67 | var NTI671088758 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 68 | var NTI671088657 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; 69 | var NTI671088655 = {size: 0, kind: 14, base: null, node: null, finalizer: null}; 70 | var NTI671088757 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; 71 | var NTI671088756 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; 72 | var NTI671088755 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; 73 | var NTI671088754 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 74 | var NTI671088656 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; 75 | var NTI671089087 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; 76 | var NTI134217745 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 77 | var NTI134217749 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 78 | var NTI134217751 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 79 | var NTI33555171 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 80 | var NTI33555179 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; 81 | var NTI33554449 = {size: 0,kind: 28,base: null,node: null,finalizer: null}; 82 | var NTI33554450 = {size: 0,kind: 29,base: null,node: null,finalizer: null}; 83 | var NTI33555178 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; 84 | var NTI33555175 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 85 | var NTI33555176 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 86 | var NTI134217741 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 87 | var NTI134217743 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; 88 | var NNI134217743 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; 89 | NTI134217743.node = NNI134217743; 90 | var NNI134217741 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; 91 | NTI134217741.node = NNI134217741; 92 | var NNI33555176 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; 93 | NTI33555176.node = NNI33555176; 94 | NTI33555178.base = NTI33555175; 95 | NTI33555179.base = NTI33555175; 96 | var NNI33555175 = {kind: 2, len: 5, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "parent", len: 0, typ: NTI33555178, name: "parent", sons: null}, 97 | {kind: 1, offset: "name", len: 0, typ: NTI33554450, name: "name", sons: null}, 98 | {kind: 1, offset: "message", len: 0, typ: NTI33554449, name: "msg", sons: null}, 99 | {kind: 1, offset: "trace", len: 0, typ: NTI33554449, name: "trace", sons: null}, 100 | {kind: 1, offset: "up", len: 0, typ: NTI33555179, name: "up", sons: null}]}; 101 | NTI33555175.node = NNI33555175; 102 | var NNI33555171 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; 103 | NTI33555171.node = NNI33555171; 104 | NTI33555175.base = NTI33555171; 105 | NTI33555176.base = NTI33555175; 106 | NTI134217741.base = NTI33555176; 107 | NTI134217743.base = NTI134217741; 108 | var NNI134217751 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; 109 | NTI134217751.node = NNI134217751; 110 | NTI134217751.base = NTI33555176; 111 | var NNI134217749 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; 112 | NTI134217749.node = NNI134217749; 113 | NTI134217749.base = NTI33555176; 114 | var NNI134217745 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; 115 | NTI134217745.node = NNI134217745; 116 | NTI134217745.base = NTI33555176; 117 | NTI671088755.base = NTI671088656; 118 | NTI671088756.base = NTI671088656; 119 | NTI671088757.base = NTI671088656; 120 | var NNI671088655 = {kind: 2, offset: 0, typ: null, name: null, len: 12, sons: {"1": {kind: 1, offset: 1, typ: NTI671088655, name: "ElementNode", len: 0, sons: null}, 121 | "2": {kind: 1, offset: 2, typ: NTI671088655, name: "AttributeNode", len: 0, sons: null}, 122 | "3": {kind: 1, offset: 3, typ: NTI671088655, name: "TextNode", len: 0, sons: null}, 123 | "4": {kind: 1, offset: 4, typ: NTI671088655, name: "CDATANode", len: 0, sons: null}, 124 | "5": {kind: 1, offset: 5, typ: NTI671088655, name: "EntityRefNode", len: 0, sons: null}, 125 | "6": {kind: 1, offset: 6, typ: NTI671088655, name: "EntityNode", len: 0, sons: null}, 126 | "7": {kind: 1, offset: 7, typ: NTI671088655, name: "ProcessingInstructionNode", len: 0, sons: null}, 127 | "8": {kind: 1, offset: 8, typ: NTI671088655, name: "CommentNode", len: 0, sons: null}, 128 | "9": {kind: 1, offset: 9, typ: NTI671088655, name: "DocumentNode", len: 0, sons: null}, 129 | "10": {kind: 1, offset: 10, typ: NTI671088655, name: "DocumentTypeNode", len: 0, sons: null}, 130 | "11": {kind: 1, offset: 11, typ: NTI671088655, name: "DocumentFragmentNode", len: 0, sons: null}, 131 | "12": {kind: 1, offset: 12, typ: NTI671088655, name: "NotationNode", len: 0, sons: null}}}; 132 | NTI671088655.node = NNI671088655; 133 | var NNI671088751 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; 134 | NTI671088751.node = NNI671088751; 135 | NTI671088751.base = NTI33555171; 136 | NTI671088654.base = NTI671088751; 137 | NTI671088780.base = NTI671088658; 138 | var NNI671088779 = {kind: 2, len: 10, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "acceptCharset", len: 0, typ: NTI33554450, name: "acceptCharset", sons: null}, 139 | {kind: 1, offset: "action", len: 0, typ: NTI33554450, name: "action", sons: null}, 140 | {kind: 1, offset: "autocomplete", len: 0, typ: NTI33554450, name: "autocomplete", sons: null}, 141 | {kind: 1, offset: "elements", len: 0, typ: NTI671088780, name: "elements", sons: null}, 142 | {kind: 1, offset: "encoding", len: 0, typ: NTI33554450, name: "encoding", sons: null}, 143 | {kind: 1, offset: "enctype", len: 0, typ: NTI33554450, name: "enctype", sons: null}, 144 | {kind: 1, offset: "length", len: 0, typ: NTI33554435, name: "length", sons: null}, 145 | {kind: 1, offset: "method", len: 0, typ: NTI33554450, name: "method", sons: null}, 146 | {kind: 1, offset: "noValidate", len: 0, typ: NTI33554466, name: "noValidate", sons: null}, 147 | {kind: 1, offset: "target", len: 0, typ: NTI33554450, name: "target", sons: null}]}; 148 | NTI671088779.node = NNI671088779; 149 | NTI671088779.base = NTI671088765; 150 | NTI671088668.base = NTI671088779; 151 | var NNI671088778 = {kind: 2, len: 5, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "defaultSelected", len: 0, typ: NTI33554466, name: "defaultSelected", sons: null}, 152 | {kind: 1, offset: "selected", len: 0, typ: NTI33554466, name: "selected", sons: null}, 153 | {kind: 1, offset: "selectedIndex", len: 0, typ: NTI33554435, name: "selectedIndex", sons: null}, 154 | {kind: 1, offset: "text", len: 0, typ: NTI33554450, name: "text", sons: null}, 155 | {kind: 1, offset: "value", len: 0, typ: NTI33554450, name: "value", sons: null}]}; 156 | NTI671088778.node = NNI671088778; 157 | NTI671088778.base = NTI671088765; 158 | NTI671088667.base = NTI671088778; 159 | NTI671088766.base = NTI671088667; 160 | NTI671088767.base = NTI671088667; 161 | var NNI671088765 = {kind: 2, len: 20, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "className", len: 0, typ: NTI33554450, name: "className", sons: null}, 162 | {kind: 1, offset: "classList", len: 0, typ: NTI671088654, name: "classList", sons: null}, 163 | {kind: 1, offset: "checked", len: 0, typ: NTI33554466, name: "checked", sons: null}, 164 | {kind: 1, offset: "defaultChecked", len: 0, typ: NTI33554466, name: "defaultChecked", sons: null}, 165 | {kind: 1, offset: "defaultValue", len: 0, typ: NTI33554450, name: "defaultValue", sons: null}, 166 | {kind: 1, offset: "disabled", len: 0, typ: NTI33554466, name: "disabled", sons: null}, 167 | {kind: 1, offset: "form", len: 0, typ: NTI671088668, name: "form", sons: null}, 168 | {kind: 1, offset: "name", len: 0, typ: NTI33554450, name: "name", sons: null}, 169 | {kind: 1, offset: "readOnly", len: 0, typ: NTI33554466, name: "readOnly", sons: null}, 170 | {kind: 1, offset: "options", len: 0, typ: NTI671088766, name: "options", sons: null}, 171 | {kind: 1, offset: "selectedOptions", len: 0, typ: NTI671088767, name: "selectedOptions", sons: null}, 172 | {kind: 1, offset: "clientWidth", len: 0, typ: NTI33554435, name: "clientWidth", sons: null}, 173 | {kind: 1, offset: "clientHeight", len: 0, typ: NTI33554435, name: "clientHeight", sons: null}, 174 | {kind: 1, offset: "contentEditable", len: 0, typ: NTI33554450, name: "contentEditable", sons: null}, 175 | {kind: 1, offset: "isContentEditable", len: 0, typ: NTI33554466, name: "isContentEditable", sons: null}, 176 | {kind: 1, offset: "dir", len: 0, typ: NTI33554450, name: "dir", sons: null}, 177 | {kind: 1, offset: "offsetHeight", len: 0, typ: NTI33554435, name: "offsetHeight", sons: null}, 178 | {kind: 1, offset: "offsetWidth", len: 0, typ: NTI33554435, name: "offsetWidth", sons: null}, 179 | {kind: 1, offset: "offsetLeft", len: 0, typ: NTI33554435, name: "offsetLeft", sons: null}, 180 | {kind: 1, offset: "offsetTop", len: 0, typ: NTI33554435, name: "offsetTop", sons: null}]}; 181 | NTI671088765.node = NNI671088765; 182 | NTI671088765.base = NTI671088754; 183 | NTI671088658.base = NTI671088765; 184 | var NNI671088777 = {kind: 2, len: 3, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "text", len: 0, typ: NTI33554450, name: "text", sons: null}, 185 | {kind: 1, offset: "x", len: 0, typ: NTI33554435, name: "x", sons: null}, 186 | {kind: 1, offset: "y", len: 0, typ: NTI33554435, name: "y", sons: null}]}; 187 | NTI671088777.node = NNI671088777; 188 | NTI671088777.base = NTI671088765; 189 | NTI671088666.base = NTI671088777; 190 | NTI671088759.base = NTI671088666; 191 | NTI671088760.base = NTI671088668; 192 | var NNI671088781 = {kind: 2, len: 8, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "border", len: 0, typ: NTI33554435, name: "border", sons: null}, 193 | {kind: 1, offset: "complete", len: 0, typ: NTI33554466, name: "complete", sons: null}, 194 | {kind: 1, offset: "height", len: 0, typ: NTI33554435, name: "height", sons: null}, 195 | {kind: 1, offset: "hspace", len: 0, typ: NTI33554435, name: "hspace", sons: null}, 196 | {kind: 1, offset: "lowsrc", len: 0, typ: NTI33554450, name: "lowsrc", sons: null}, 197 | {kind: 1, offset: "src", len: 0, typ: NTI33554450, name: "src", sons: null}, 198 | {kind: 1, offset: "vspace", len: 0, typ: NTI33554435, name: "vspace", sons: null}, 199 | {kind: 1, offset: "width", len: 0, typ: NTI33554435, name: "width", sons: null}]}; 200 | NTI671088781.node = NNI671088781; 201 | NTI671088781.base = NTI671088765; 202 | NTI671088669.base = NTI671088781; 203 | NTI671088761.base = NTI671088669; 204 | NTI671088762.base = NTI671088658; 205 | var NNI671088776 = {kind: 2, len: 6, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "height", len: 0, typ: NTI33554435, name: "height", sons: null}, 206 | {kind: 1, offset: "hspace", len: 0, typ: NTI33554435, name: "hspace", sons: null}, 207 | {kind: 1, offset: "src", len: 0, typ: NTI33554450, name: "src", sons: null}, 208 | {kind: 1, offset: "width", len: 0, typ: NTI33554435, name: "width", sons: null}, 209 | {kind: 1, offset: "type", len: 0, typ: NTI33554450, name: "type", sons: null}, 210 | {kind: 1, offset: "vspace", len: 0, typ: NTI33554435, name: "vspace", sons: null}]}; 211 | NTI671088776.node = NNI671088776; 212 | NTI671088776.base = NTI671088765; 213 | NTI671088665.base = NTI671088776; 214 | NTI671088763.base = NTI671088665; 215 | var NNI671088775 = {kind: 2, len: 4, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "target", len: 0, typ: NTI33554450, name: "target", sons: null}, 216 | {kind: 1, offset: "text", len: 0, typ: NTI33554450, name: "text", sons: null}, 217 | {kind: 1, offset: "x", len: 0, typ: NTI33554435, name: "x", sons: null}, 218 | {kind: 1, offset: "y", len: 0, typ: NTI33554435, name: "y", sons: null}]}; 219 | NTI671088775.node = NNI671088775; 220 | NTI671088775.base = NTI671088765; 221 | NTI671088664.base = NTI671088775; 222 | NTI671088764.base = NTI671088664; 223 | var NNI671088825 = {kind: 1, offset: "then", len: 0, typ: NTI671088826, name: "then", sons: null}; 224 | NTI671088825.node = NNI671088825; 225 | NTI671088705.base = NTI671088825; 226 | var NNI671088828 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "ready", len: 0, typ: NTI671088705, name: "ready", sons: null}, 227 | {kind: 1, offset: "onloadingdone", len: 0, typ: NTI671088829, name: "onloadingdone", sons: null}]}; 228 | NTI671088828.node = NNI671088828; 229 | NTI671088706.base = NTI671088828; 230 | var NNI671088758 = {kind: 2, len: 25, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "activeElement", len: 0, typ: NTI671088658, name: "activeElement", sons: null}, 231 | {kind: 1, offset: "documentElement", len: 0, typ: NTI671088658, name: "documentElement", sons: null}, 232 | {kind: 1, offset: "alinkColor", len: 0, typ: NTI33554450, name: "alinkColor", sons: null}, 233 | {kind: 1, offset: "bgColor", len: 0, typ: NTI33554450, name: "bgColor", sons: null}, 234 | {kind: 1, offset: "body", len: 0, typ: NTI671088658, name: "body", sons: null}, 235 | {kind: 1, offset: "charset", len: 0, typ: NTI33554450, name: "charset", sons: null}, 236 | {kind: 1, offset: "cookie", len: 0, typ: NTI33554450, name: "cookie", sons: null}, 237 | {kind: 1, offset: "defaultCharset", len: 0, typ: NTI33554450, name: "defaultCharset", sons: null}, 238 | {kind: 1, offset: "fgColor", len: 0, typ: NTI33554450, name: "fgColor", sons: null}, 239 | {kind: 1, offset: "head", len: 0, typ: NTI671088658, name: "head", sons: null}, 240 | {kind: 1, offset: "hidden", len: 0, typ: NTI33554466, name: "hidden", sons: null}, 241 | {kind: 1, offset: "lastModified", len: 0, typ: NTI33554450, name: "lastModified", sons: null}, 242 | {kind: 1, offset: "linkColor", len: 0, typ: NTI33554450, name: "linkColor", sons: null}, 243 | {kind: 1, offset: "referrer", len: 0, typ: NTI33554450, name: "referrer", sons: null}, 244 | {kind: 1, offset: "title", len: 0, typ: NTI33554450, name: "title", sons: null}, 245 | {kind: 1, offset: "URL", len: 0, typ: NTI33554450, name: "URL", sons: null}, 246 | {kind: 1, offset: "visibilityState", len: 0, typ: NTI33554450, name: "visibilityState", sons: null}, 247 | {kind: 1, offset: "vlinkColor", len: 0, typ: NTI33554450, name: "vlinkColor", sons: null}, 248 | {kind: 1, offset: "anchors", len: 0, typ: NTI671088759, name: "anchors", sons: null}, 249 | {kind: 1, offset: "forms", len: 0, typ: NTI671088760, name: "forms", sons: null}, 250 | {kind: 1, offset: "images", len: 0, typ: NTI671088761, name: "images", sons: null}, 251 | {kind: 1, offset: "applets", len: 0, typ: NTI671088762, name: "applets", sons: null}, 252 | {kind: 1, offset: "embeds", len: 0, typ: NTI671088763, name: "embeds", sons: null}, 253 | {kind: 1, offset: "links", len: 0, typ: NTI671088764, name: "links", sons: null}, 254 | {kind: 1, offset: "fonts", len: 0, typ: NTI671088706, name: "fonts", sons: null}]}; 255 | NTI671088758.node = NNI671088758; 256 | NTI671088758.base = NTI671088754; 257 | NTI671088657.base = NTI671088758; 258 | var NNI671088782 = {kind: 2, len: 368, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "alignContent", len: 0, typ: NTI33554450, name: "alignContent", sons: null}, 259 | {kind: 1, offset: "alignItems", len: 0, typ: NTI33554450, name: "alignItems", sons: null}, 260 | {kind: 1, offset: "alignSelf", len: 0, typ: NTI33554450, name: "alignSelf", sons: null}, 261 | {kind: 1, offset: "all", len: 0, typ: NTI33554450, name: "all", sons: null}, 262 | {kind: 1, offset: "animation", len: 0, typ: NTI33554450, name: "animation", sons: null}, 263 | {kind: 1, offset: "animationDelay", len: 0, typ: NTI33554450, name: "animationDelay", sons: null}, 264 | {kind: 1, offset: "animationDirection", len: 0, typ: NTI33554450, name: "animationDirection", sons: null}, 265 | {kind: 1, offset: "animationDuration", len: 0, typ: NTI33554450, name: "animationDuration", sons: null}, 266 | {kind: 1, offset: "animationFillMode", len: 0, typ: NTI33554450, name: "animationFillMode", sons: null}, 267 | {kind: 1, offset: "animationIterationCount", len: 0, typ: NTI33554450, name: "animationIterationCount", sons: null}, 268 | {kind: 1, offset: "animationName", len: 0, typ: NTI33554450, name: "animationName", sons: null}, 269 | {kind: 1, offset: "animationPlayState", len: 0, typ: NTI33554450, name: "animationPlayState", sons: null}, 270 | {kind: 1, offset: "animationTimingFunction", len: 0, typ: NTI33554450, name: "animationTimingFunction", sons: null}, 271 | {kind: 1, offset: "backdropFilter", len: 0, typ: NTI33554450, name: "backdropFilter", sons: null}, 272 | {kind: 1, offset: "backfaceVisibility", len: 0, typ: NTI33554450, name: "backfaceVisibility", sons: null}, 273 | {kind: 1, offset: "background", len: 0, typ: NTI33554450, name: "background", sons: null}, 274 | {kind: 1, offset: "backgroundAttachment", len: 0, typ: NTI33554450, name: "backgroundAttachment", sons: null}, 275 | {kind: 1, offset: "backgroundBlendMode", len: 0, typ: NTI33554450, name: "backgroundBlendMode", sons: null}, 276 | {kind: 1, offset: "backgroundClip", len: 0, typ: NTI33554450, name: "backgroundClip", sons: null}, 277 | {kind: 1, offset: "backgroundColor", len: 0, typ: NTI33554450, name: "backgroundColor", sons: null}, 278 | {kind: 1, offset: "backgroundImage", len: 0, typ: NTI33554450, name: "backgroundImage", sons: null}, 279 | {kind: 1, offset: "backgroundOrigin", len: 0, typ: NTI33554450, name: "backgroundOrigin", sons: null}, 280 | {kind: 1, offset: "backgroundPosition", len: 0, typ: NTI33554450, name: "backgroundPosition", sons: null}, 281 | {kind: 1, offset: "backgroundRepeat", len: 0, typ: NTI33554450, name: "backgroundRepeat", sons: null}, 282 | {kind: 1, offset: "backgroundSize", len: 0, typ: NTI33554450, name: "backgroundSize", sons: null}, 283 | {kind: 1, offset: "blockSize", len: 0, typ: NTI33554450, name: "blockSize", sons: null}, 284 | {kind: 1, offset: "border", len: 0, typ: NTI33554450, name: "border", sons: null}, 285 | {kind: 1, offset: "borderBlock", len: 0, typ: NTI33554450, name: "borderBlock", sons: null}, 286 | {kind: 1, offset: "borderBlockColor", len: 0, typ: NTI33554450, name: "borderBlockColor", sons: null}, 287 | {kind: 1, offset: "borderBlockEnd", len: 0, typ: NTI33554450, name: "borderBlockEnd", sons: null}, 288 | {kind: 1, offset: "borderBlockEndColor", len: 0, typ: NTI33554450, name: "borderBlockEndColor", sons: null}, 289 | {kind: 1, offset: "borderBlockEndStyle", len: 0, typ: NTI33554450, name: "borderBlockEndStyle", sons: null}, 290 | {kind: 1, offset: "borderBlockEndWidth", len: 0, typ: NTI33554450, name: "borderBlockEndWidth", sons: null}, 291 | {kind: 1, offset: "borderBlockStart", len: 0, typ: NTI33554450, name: "borderBlockStart", sons: null}, 292 | {kind: 1, offset: "borderBlockStartColor", len: 0, typ: NTI33554450, name: "borderBlockStartColor", sons: null}, 293 | {kind: 1, offset: "borderBlockStartStyle", len: 0, typ: NTI33554450, name: "borderBlockStartStyle", sons: null}, 294 | {kind: 1, offset: "borderBlockStartWidth", len: 0, typ: NTI33554450, name: "borderBlockStartWidth", sons: null}, 295 | {kind: 1, offset: "borderBlockStyle", len: 0, typ: NTI33554450, name: "borderBlockStyle", sons: null}, 296 | {kind: 1, offset: "borderBlockWidth", len: 0, typ: NTI33554450, name: "borderBlockWidth", sons: null}, 297 | {kind: 1, offset: "borderBottom", len: 0, typ: NTI33554450, name: "borderBottom", sons: null}, 298 | {kind: 1, offset: "borderBottomColor", len: 0, typ: NTI33554450, name: "borderBottomColor", sons: null}, 299 | {kind: 1, offset: "borderBottomLeftRadius", len: 0, typ: NTI33554450, name: "borderBottomLeftRadius", sons: null}, 300 | {kind: 1, offset: "borderBottomRightRadius", len: 0, typ: NTI33554450, name: "borderBottomRightRadius", sons: null}, 301 | {kind: 1, offset: "borderBottomStyle", len: 0, typ: NTI33554450, name: "borderBottomStyle", sons: null}, 302 | {kind: 1, offset: "borderBottomWidth", len: 0, typ: NTI33554450, name: "borderBottomWidth", sons: null}, 303 | {kind: 1, offset: "borderCollapse", len: 0, typ: NTI33554450, name: "borderCollapse", sons: null}, 304 | {kind: 1, offset: "borderColor", len: 0, typ: NTI33554450, name: "borderColor", sons: null}, 305 | {kind: 1, offset: "borderEndEndRadius", len: 0, typ: NTI33554450, name: "borderEndEndRadius", sons: null}, 306 | {kind: 1, offset: "borderEndStartRadius", len: 0, typ: NTI33554450, name: "borderEndStartRadius", sons: null}, 307 | {kind: 1, offset: "borderImage", len: 0, typ: NTI33554450, name: "borderImage", sons: null}, 308 | {kind: 1, offset: "borderImageOutset", len: 0, typ: NTI33554450, name: "borderImageOutset", sons: null}, 309 | {kind: 1, offset: "borderImageRepeat", len: 0, typ: NTI33554450, name: "borderImageRepeat", sons: null}, 310 | {kind: 1, offset: "borderImageSlice", len: 0, typ: NTI33554450, name: "borderImageSlice", sons: null}, 311 | {kind: 1, offset: "borderImageSource", len: 0, typ: NTI33554450, name: "borderImageSource", sons: null}, 312 | {kind: 1, offset: "borderImageWidth", len: 0, typ: NTI33554450, name: "borderImageWidth", sons: null}, 313 | {kind: 1, offset: "borderInline", len: 0, typ: NTI33554450, name: "borderInline", sons: null}, 314 | {kind: 1, offset: "borderInlineColor", len: 0, typ: NTI33554450, name: "borderInlineColor", sons: null}, 315 | {kind: 1, offset: "borderInlineEnd", len: 0, typ: NTI33554450, name: "borderInlineEnd", sons: null}, 316 | {kind: 1, offset: "borderInlineEndColor", len: 0, typ: NTI33554450, name: "borderInlineEndColor", sons: null}, 317 | {kind: 1, offset: "borderInlineEndStyle", len: 0, typ: NTI33554450, name: "borderInlineEndStyle", sons: null}, 318 | {kind: 1, offset: "borderInlineEndWidth", len: 0, typ: NTI33554450, name: "borderInlineEndWidth", sons: null}, 319 | {kind: 1, offset: "borderInlineStart", len: 0, typ: NTI33554450, name: "borderInlineStart", sons: null}, 320 | {kind: 1, offset: "borderInlineStartColor", len: 0, typ: NTI33554450, name: "borderInlineStartColor", sons: null}, 321 | {kind: 1, offset: "borderInlineStartStyle", len: 0, typ: NTI33554450, name: "borderInlineStartStyle", sons: null}, 322 | {kind: 1, offset: "borderInlineStartWidth", len: 0, typ: NTI33554450, name: "borderInlineStartWidth", sons: null}, 323 | {kind: 1, offset: "borderInlineStyle", len: 0, typ: NTI33554450, name: "borderInlineStyle", sons: null}, 324 | {kind: 1, offset: "borderInlineWidth", len: 0, typ: NTI33554450, name: "borderInlineWidth", sons: null}, 325 | {kind: 1, offset: "borderLeft", len: 0, typ: NTI33554450, name: "borderLeft", sons: null}, 326 | {kind: 1, offset: "borderLeftColor", len: 0, typ: NTI33554450, name: "borderLeftColor", sons: null}, 327 | {kind: 1, offset: "borderLeftStyle", len: 0, typ: NTI33554450, name: "borderLeftStyle", sons: null}, 328 | {kind: 1, offset: "borderLeftWidth", len: 0, typ: NTI33554450, name: "borderLeftWidth", sons: null}, 329 | {kind: 1, offset: "borderRadius", len: 0, typ: NTI33554450, name: "borderRadius", sons: null}, 330 | {kind: 1, offset: "borderRight", len: 0, typ: NTI33554450, name: "borderRight", sons: null}, 331 | {kind: 1, offset: "borderRightColor", len: 0, typ: NTI33554450, name: "borderRightColor", sons: null}, 332 | {kind: 1, offset: "borderRightStyle", len: 0, typ: NTI33554450, name: "borderRightStyle", sons: null}, 333 | {kind: 1, offset: "borderRightWidth", len: 0, typ: NTI33554450, name: "borderRightWidth", sons: null}, 334 | {kind: 1, offset: "borderSpacing", len: 0, typ: NTI33554450, name: "borderSpacing", sons: null}, 335 | {kind: 1, offset: "borderStartEndRadius", len: 0, typ: NTI33554450, name: "borderStartEndRadius", sons: null}, 336 | {kind: 1, offset: "borderStartStartRadius", len: 0, typ: NTI33554450, name: "borderStartStartRadius", sons: null}, 337 | {kind: 1, offset: "borderStyle", len: 0, typ: NTI33554450, name: "borderStyle", sons: null}, 338 | {kind: 1, offset: "borderTop", len: 0, typ: NTI33554450, name: "borderTop", sons: null}, 339 | {kind: 1, offset: "borderTopColor", len: 0, typ: NTI33554450, name: "borderTopColor", sons: null}, 340 | {kind: 1, offset: "borderTopLeftRadius", len: 0, typ: NTI33554450, name: "borderTopLeftRadius", sons: null}, 341 | {kind: 1, offset: "borderTopRightRadius", len: 0, typ: NTI33554450, name: "borderTopRightRadius", sons: null}, 342 | {kind: 1, offset: "borderTopStyle", len: 0, typ: NTI33554450, name: "borderTopStyle", sons: null}, 343 | {kind: 1, offset: "borderTopWidth", len: 0, typ: NTI33554450, name: "borderTopWidth", sons: null}, 344 | {kind: 1, offset: "borderWidth", len: 0, typ: NTI33554450, name: "borderWidth", sons: null}, 345 | {kind: 1, offset: "bottom", len: 0, typ: NTI33554450, name: "bottom", sons: null}, 346 | {kind: 1, offset: "boxDecorationBreak", len: 0, typ: NTI33554450, name: "boxDecorationBreak", sons: null}, 347 | {kind: 1, offset: "boxShadow", len: 0, typ: NTI33554450, name: "boxShadow", sons: null}, 348 | {kind: 1, offset: "boxSizing", len: 0, typ: NTI33554450, name: "boxSizing", sons: null}, 349 | {kind: 1, offset: "breakAfter", len: 0, typ: NTI33554450, name: "breakAfter", sons: null}, 350 | {kind: 1, offset: "breakBefore", len: 0, typ: NTI33554450, name: "breakBefore", sons: null}, 351 | {kind: 1, offset: "breakInside", len: 0, typ: NTI33554450, name: "breakInside", sons: null}, 352 | {kind: 1, offset: "captionSide", len: 0, typ: NTI33554450, name: "captionSide", sons: null}, 353 | {kind: 1, offset: "caretColor", len: 0, typ: NTI33554450, name: "caretColor", sons: null}, 354 | {kind: 1, offset: "clear", len: 0, typ: NTI33554450, name: "clear", sons: null}, 355 | {kind: 1, offset: "clip", len: 0, typ: NTI33554450, name: "clip", sons: null}, 356 | {kind: 1, offset: "clipPath", len: 0, typ: NTI33554450, name: "clipPath", sons: null}, 357 | {kind: 1, offset: "color", len: 0, typ: NTI33554450, name: "color", sons: null}, 358 | {kind: 1, offset: "colorAdjust", len: 0, typ: NTI33554450, name: "colorAdjust", sons: null}, 359 | {kind: 1, offset: "columnCount", len: 0, typ: NTI33554450, name: "columnCount", sons: null}, 360 | {kind: 1, offset: "columnFill", len: 0, typ: NTI33554450, name: "columnFill", sons: null}, 361 | {kind: 1, offset: "columnGap", len: 0, typ: NTI33554450, name: "columnGap", sons: null}, 362 | {kind: 1, offset: "columnRule", len: 0, typ: NTI33554450, name: "columnRule", sons: null}, 363 | {kind: 1, offset: "columnRuleColor", len: 0, typ: NTI33554450, name: "columnRuleColor", sons: null}, 364 | {kind: 1, offset: "columnRuleStyle", len: 0, typ: NTI33554450, name: "columnRuleStyle", sons: null}, 365 | {kind: 1, offset: "columnRuleWidth", len: 0, typ: NTI33554450, name: "columnRuleWidth", sons: null}, 366 | {kind: 1, offset: "columnSpan", len: 0, typ: NTI33554450, name: "columnSpan", sons: null}, 367 | {kind: 1, offset: "columnWidth", len: 0, typ: NTI33554450, name: "columnWidth", sons: null}, 368 | {kind: 1, offset: "columns", len: 0, typ: NTI33554450, name: "columns", sons: null}, 369 | {kind: 1, offset: "contain", len: 0, typ: NTI33554450, name: "contain", sons: null}, 370 | {kind: 1, offset: "content", len: 0, typ: NTI33554450, name: "content", sons: null}, 371 | {kind: 1, offset: "counterIncrement", len: 0, typ: NTI33554450, name: "counterIncrement", sons: null}, 372 | {kind: 1, offset: "counterReset", len: 0, typ: NTI33554450, name: "counterReset", sons: null}, 373 | {kind: 1, offset: "counterSet", len: 0, typ: NTI33554450, name: "counterSet", sons: null}, 374 | {kind: 1, offset: "cursor", len: 0, typ: NTI33554450, name: "cursor", sons: null}, 375 | {kind: 1, offset: "direction", len: 0, typ: NTI33554450, name: "direction", sons: null}, 376 | {kind: 1, offset: "display", len: 0, typ: NTI33554450, name: "display", sons: null}, 377 | {kind: 1, offset: "emptyCells", len: 0, typ: NTI33554450, name: "emptyCells", sons: null}, 378 | {kind: 1, offset: "filter", len: 0, typ: NTI33554450, name: "filter", sons: null}, 379 | {kind: 1, offset: "flex", len: 0, typ: NTI33554450, name: "flex", sons: null}, 380 | {kind: 1, offset: "flexBasis", len: 0, typ: NTI33554450, name: "flexBasis", sons: null}, 381 | {kind: 1, offset: "flexDirection", len: 0, typ: NTI33554450, name: "flexDirection", sons: null}, 382 | {kind: 1, offset: "flexFlow", len: 0, typ: NTI33554450, name: "flexFlow", sons: null}, 383 | {kind: 1, offset: "flexGrow", len: 0, typ: NTI33554450, name: "flexGrow", sons: null}, 384 | {kind: 1, offset: "flexShrink", len: 0, typ: NTI33554450, name: "flexShrink", sons: null}, 385 | {kind: 1, offset: "flexWrap", len: 0, typ: NTI33554450, name: "flexWrap", sons: null}, 386 | {kind: 1, offset: "cssFloat", len: 0, typ: NTI33554450, name: "cssFloat", sons: null}, 387 | {kind: 1, offset: "font", len: 0, typ: NTI33554450, name: "font", sons: null}, 388 | {kind: 1, offset: "fontFamily", len: 0, typ: NTI33554450, name: "fontFamily", sons: null}, 389 | {kind: 1, offset: "fontFeatureSettings", len: 0, typ: NTI33554450, name: "fontFeatureSettings", sons: null}, 390 | {kind: 1, offset: "fontKerning", len: 0, typ: NTI33554450, name: "fontKerning", sons: null}, 391 | {kind: 1, offset: "fontLanguageOverride", len: 0, typ: NTI33554450, name: "fontLanguageOverride", sons: null}, 392 | {kind: 1, offset: "fontOpticalSizing", len: 0, typ: NTI33554450, name: "fontOpticalSizing", sons: null}, 393 | {kind: 1, offset: "fontSize", len: 0, typ: NTI33554450, name: "fontSize", sons: null}, 394 | {kind: 1, offset: "fontSizeAdjust", len: 0, typ: NTI33554450, name: "fontSizeAdjust", sons: null}, 395 | {kind: 1, offset: "fontStretch", len: 0, typ: NTI33554450, name: "fontStretch", sons: null}, 396 | {kind: 1, offset: "fontStyle", len: 0, typ: NTI33554450, name: "fontStyle", sons: null}, 397 | {kind: 1, offset: "fontSynthesis", len: 0, typ: NTI33554450, name: "fontSynthesis", sons: null}, 398 | {kind: 1, offset: "fontVariant", len: 0, typ: NTI33554450, name: "fontVariant", sons: null}, 399 | {kind: 1, offset: "fontVariantAlternates", len: 0, typ: NTI33554450, name: "fontVariantAlternates", sons: null}, 400 | {kind: 1, offset: "fontVariantCaps", len: 0, typ: NTI33554450, name: "fontVariantCaps", sons: null}, 401 | {kind: 1, offset: "fontVariantEastAsian", len: 0, typ: NTI33554450, name: "fontVariantEastAsian", sons: null}, 402 | {kind: 1, offset: "fontVariantLigatures", len: 0, typ: NTI33554450, name: "fontVariantLigatures", sons: null}, 403 | {kind: 1, offset: "fontVariantNumeric", len: 0, typ: NTI33554450, name: "fontVariantNumeric", sons: null}, 404 | {kind: 1, offset: "fontVariantPosition", len: 0, typ: NTI33554450, name: "fontVariantPosition", sons: null}, 405 | {kind: 1, offset: "fontVariationSettings", len: 0, typ: NTI33554450, name: "fontVariationSettings", sons: null}, 406 | {kind: 1, offset: "fontWeight", len: 0, typ: NTI33554450, name: "fontWeight", sons: null}, 407 | {kind: 1, offset: "gap", len: 0, typ: NTI33554450, name: "gap", sons: null}, 408 | {kind: 1, offset: "grid", len: 0, typ: NTI33554450, name: "grid", sons: null}, 409 | {kind: 1, offset: "gridArea", len: 0, typ: NTI33554450, name: "gridArea", sons: null}, 410 | {kind: 1, offset: "gridAutoColumns", len: 0, typ: NTI33554450, name: "gridAutoColumns", sons: null}, 411 | {kind: 1, offset: "gridAutoFlow", len: 0, typ: NTI33554450, name: "gridAutoFlow", sons: null}, 412 | {kind: 1, offset: "gridAutoRows", len: 0, typ: NTI33554450, name: "gridAutoRows", sons: null}, 413 | {kind: 1, offset: "gridColumn", len: 0, typ: NTI33554450, name: "gridColumn", sons: null}, 414 | {kind: 1, offset: "gridColumnEnd", len: 0, typ: NTI33554450, name: "gridColumnEnd", sons: null}, 415 | {kind: 1, offset: "gridColumnStart", len: 0, typ: NTI33554450, name: "gridColumnStart", sons: null}, 416 | {kind: 1, offset: "gridRow", len: 0, typ: NTI33554450, name: "gridRow", sons: null}, 417 | {kind: 1, offset: "gridRowEnd", len: 0, typ: NTI33554450, name: "gridRowEnd", sons: null}, 418 | {kind: 1, offset: "gridRowStart", len: 0, typ: NTI33554450, name: "gridRowStart", sons: null}, 419 | {kind: 1, offset: "gridTemplate", len: 0, typ: NTI33554450, name: "gridTemplate", sons: null}, 420 | {kind: 1, offset: "gridTemplateAreas", len: 0, typ: NTI33554450, name: "gridTemplateAreas", sons: null}, 421 | {kind: 1, offset: "gridTemplateColumns", len: 0, typ: NTI33554450, name: "gridTemplateColumns", sons: null}, 422 | {kind: 1, offset: "gridTemplateRows", len: 0, typ: NTI33554450, name: "gridTemplateRows", sons: null}, 423 | {kind: 1, offset: "hangingPunctuation", len: 0, typ: NTI33554450, name: "hangingPunctuation", sons: null}, 424 | {kind: 1, offset: "height", len: 0, typ: NTI33554450, name: "height", sons: null}, 425 | {kind: 1, offset: "hyphens", len: 0, typ: NTI33554450, name: "hyphens", sons: null}, 426 | {kind: 1, offset: "imageOrientation", len: 0, typ: NTI33554450, name: "imageOrientation", sons: null}, 427 | {kind: 1, offset: "imageRendering", len: 0, typ: NTI33554450, name: "imageRendering", sons: null}, 428 | {kind: 1, offset: "inlineSize", len: 0, typ: NTI33554450, name: "inlineSize", sons: null}, 429 | {kind: 1, offset: "inset", len: 0, typ: NTI33554450, name: "inset", sons: null}, 430 | {kind: 1, offset: "insetBlock", len: 0, typ: NTI33554450, name: "insetBlock", sons: null}, 431 | {kind: 1, offset: "insetBlockEnd", len: 0, typ: NTI33554450, name: "insetBlockEnd", sons: null}, 432 | {kind: 1, offset: "insetBlockStart", len: 0, typ: NTI33554450, name: "insetBlockStart", sons: null}, 433 | {kind: 1, offset: "insetInline", len: 0, typ: NTI33554450, name: "insetInline", sons: null}, 434 | {kind: 1, offset: "insetInlineEnd", len: 0, typ: NTI33554450, name: "insetInlineEnd", sons: null}, 435 | {kind: 1, offset: "insetInlineStart", len: 0, typ: NTI33554450, name: "insetInlineStart", sons: null}, 436 | {kind: 1, offset: "isolation", len: 0, typ: NTI33554450, name: "isolation", sons: null}, 437 | {kind: 1, offset: "justifyContent", len: 0, typ: NTI33554450, name: "justifyContent", sons: null}, 438 | {kind: 1, offset: "justifyItems", len: 0, typ: NTI33554450, name: "justifyItems", sons: null}, 439 | {kind: 1, offset: "justifySelf", len: 0, typ: NTI33554450, name: "justifySelf", sons: null}, 440 | {kind: 1, offset: "left", len: 0, typ: NTI33554450, name: "left", sons: null}, 441 | {kind: 1, offset: "letterSpacing", len: 0, typ: NTI33554450, name: "letterSpacing", sons: null}, 442 | {kind: 1, offset: "lineBreak", len: 0, typ: NTI33554450, name: "lineBreak", sons: null}, 443 | {kind: 1, offset: "lineHeight", len: 0, typ: NTI33554450, name: "lineHeight", sons: null}, 444 | {kind: 1, offset: "listStyle", len: 0, typ: NTI33554450, name: "listStyle", sons: null}, 445 | {kind: 1, offset: "listStyleImage", len: 0, typ: NTI33554450, name: "listStyleImage", sons: null}, 446 | {kind: 1, offset: "listStylePosition", len: 0, typ: NTI33554450, name: "listStylePosition", sons: null}, 447 | {kind: 1, offset: "listStyleType", len: 0, typ: NTI33554450, name: "listStyleType", sons: null}, 448 | {kind: 1, offset: "margin", len: 0, typ: NTI33554450, name: "margin", sons: null}, 449 | {kind: 1, offset: "marginBlock", len: 0, typ: NTI33554450, name: "marginBlock", sons: null}, 450 | {kind: 1, offset: "marginBlockEnd", len: 0, typ: NTI33554450, name: "marginBlockEnd", sons: null}, 451 | {kind: 1, offset: "marginBlockStart", len: 0, typ: NTI33554450, name: "marginBlockStart", sons: null}, 452 | {kind: 1, offset: "marginBottom", len: 0, typ: NTI33554450, name: "marginBottom", sons: null}, 453 | {kind: 1, offset: "marginInline", len: 0, typ: NTI33554450, name: "marginInline", sons: null}, 454 | {kind: 1, offset: "marginInlineEnd", len: 0, typ: NTI33554450, name: "marginInlineEnd", sons: null}, 455 | {kind: 1, offset: "marginInlineStart", len: 0, typ: NTI33554450, name: "marginInlineStart", sons: null}, 456 | {kind: 1, offset: "marginLeft", len: 0, typ: NTI33554450, name: "marginLeft", sons: null}, 457 | {kind: 1, offset: "marginRight", len: 0, typ: NTI33554450, name: "marginRight", sons: null}, 458 | {kind: 1, offset: "marginTop", len: 0, typ: NTI33554450, name: "marginTop", sons: null}, 459 | {kind: 1, offset: "mask", len: 0, typ: NTI33554450, name: "mask", sons: null}, 460 | {kind: 1, offset: "maskBorder", len: 0, typ: NTI33554450, name: "maskBorder", sons: null}, 461 | {kind: 1, offset: "maskBorderMode", len: 0, typ: NTI33554450, name: "maskBorderMode", sons: null}, 462 | {kind: 1, offset: "maskBorderOutset", len: 0, typ: NTI33554450, name: "maskBorderOutset", sons: null}, 463 | {kind: 1, offset: "maskBorderRepeat", len: 0, typ: NTI33554450, name: "maskBorderRepeat", sons: null}, 464 | {kind: 1, offset: "maskBorderSlice", len: 0, typ: NTI33554450, name: "maskBorderSlice", sons: null}, 465 | {kind: 1, offset: "maskBorderSource", len: 0, typ: NTI33554450, name: "maskBorderSource", sons: null}, 466 | {kind: 1, offset: "maskBorderWidth", len: 0, typ: NTI33554450, name: "maskBorderWidth", sons: null}, 467 | {kind: 1, offset: "maskClip", len: 0, typ: NTI33554450, name: "maskClip", sons: null}, 468 | {kind: 1, offset: "maskComposite", len: 0, typ: NTI33554450, name: "maskComposite", sons: null}, 469 | {kind: 1, offset: "maskImage", len: 0, typ: NTI33554450, name: "maskImage", sons: null}, 470 | {kind: 1, offset: "maskMode", len: 0, typ: NTI33554450, name: "maskMode", sons: null}, 471 | {kind: 1, offset: "maskOrigin", len: 0, typ: NTI33554450, name: "maskOrigin", sons: null}, 472 | {kind: 1, offset: "maskPosition", len: 0, typ: NTI33554450, name: "maskPosition", sons: null}, 473 | {kind: 1, offset: "maskRepeat", len: 0, typ: NTI33554450, name: "maskRepeat", sons: null}, 474 | {kind: 1, offset: "maskSize", len: 0, typ: NTI33554450, name: "maskSize", sons: null}, 475 | {kind: 1, offset: "maskType", len: 0, typ: NTI33554450, name: "maskType", sons: null}, 476 | {kind: 1, offset: "maxBlockSize", len: 0, typ: NTI33554450, name: "maxBlockSize", sons: null}, 477 | {kind: 1, offset: "maxHeight", len: 0, typ: NTI33554450, name: "maxHeight", sons: null}, 478 | {kind: 1, offset: "maxInlineSize", len: 0, typ: NTI33554450, name: "maxInlineSize", sons: null}, 479 | {kind: 1, offset: "maxWidth", len: 0, typ: NTI33554450, name: "maxWidth", sons: null}, 480 | {kind: 1, offset: "minBlockSize", len: 0, typ: NTI33554450, name: "minBlockSize", sons: null}, 481 | {kind: 1, offset: "minHeight", len: 0, typ: NTI33554450, name: "minHeight", sons: null}, 482 | {kind: 1, offset: "minInlineSize", len: 0, typ: NTI33554450, name: "minInlineSize", sons: null}, 483 | {kind: 1, offset: "minWidth", len: 0, typ: NTI33554450, name: "minWidth", sons: null}, 484 | {kind: 1, offset: "mixBlendMode", len: 0, typ: NTI33554450, name: "mixBlendMode", sons: null}, 485 | {kind: 1, offset: "objectFit", len: 0, typ: NTI33554450, name: "objectFit", sons: null}, 486 | {kind: 1, offset: "objectPosition", len: 0, typ: NTI33554450, name: "objectPosition", sons: null}, 487 | {kind: 1, offset: "offset", len: 0, typ: NTI33554450, name: "offset", sons: null}, 488 | {kind: 1, offset: "offsetAnchor", len: 0, typ: NTI33554450, name: "offsetAnchor", sons: null}, 489 | {kind: 1, offset: "offsetDistance", len: 0, typ: NTI33554450, name: "offsetDistance", sons: null}, 490 | {kind: 1, offset: "offsetPath", len: 0, typ: NTI33554450, name: "offsetPath", sons: null}, 491 | {kind: 1, offset: "offsetRotate", len: 0, typ: NTI33554450, name: "offsetRotate", sons: null}, 492 | {kind: 1, offset: "opacity", len: 0, typ: NTI33554450, name: "opacity", sons: null}, 493 | {kind: 1, offset: "order", len: 0, typ: NTI33554450, name: "order", sons: null}, 494 | {kind: 1, offset: "orphans", len: 0, typ: NTI33554450, name: "orphans", sons: null}, 495 | {kind: 1, offset: "outline", len: 0, typ: NTI33554450, name: "outline", sons: null}, 496 | {kind: 1, offset: "outlineColor", len: 0, typ: NTI33554450, name: "outlineColor", sons: null}, 497 | {kind: 1, offset: "outlineOffset", len: 0, typ: NTI33554450, name: "outlineOffset", sons: null}, 498 | {kind: 1, offset: "outlineStyle", len: 0, typ: NTI33554450, name: "outlineStyle", sons: null}, 499 | {kind: 1, offset: "outlineWidth", len: 0, typ: NTI33554450, name: "outlineWidth", sons: null}, 500 | {kind: 1, offset: "overflow", len: 0, typ: NTI33554450, name: "overflow", sons: null}, 501 | {kind: 1, offset: "overflowAnchor", len: 0, typ: NTI33554450, name: "overflowAnchor", sons: null}, 502 | {kind: 1, offset: "overflowBlock", len: 0, typ: NTI33554450, name: "overflowBlock", sons: null}, 503 | {kind: 1, offset: "overflowInline", len: 0, typ: NTI33554450, name: "overflowInline", sons: null}, 504 | {kind: 1, offset: "overflowWrap", len: 0, typ: NTI33554450, name: "overflowWrap", sons: null}, 505 | {kind: 1, offset: "overflowX", len: 0, typ: NTI33554450, name: "overflowX", sons: null}, 506 | {kind: 1, offset: "overflowY", len: 0, typ: NTI33554450, name: "overflowY", sons: null}, 507 | {kind: 1, offset: "overscrollBehavior", len: 0, typ: NTI33554450, name: "overscrollBehavior", sons: null}, 508 | {kind: 1, offset: "overscrollBehaviorBlock", len: 0, typ: NTI33554450, name: "overscrollBehaviorBlock", sons: null}, 509 | {kind: 1, offset: "overscrollBehaviorInline", len: 0, typ: NTI33554450, name: "overscrollBehaviorInline", sons: null}, 510 | {kind: 1, offset: "overscrollBehaviorX", len: 0, typ: NTI33554450, name: "overscrollBehaviorX", sons: null}, 511 | {kind: 1, offset: "overscrollBehaviorY", len: 0, typ: NTI33554450, name: "overscrollBehaviorY", sons: null}, 512 | {kind: 1, offset: "padding", len: 0, typ: NTI33554450, name: "padding", sons: null}, 513 | {kind: 1, offset: "paddingBlock", len: 0, typ: NTI33554450, name: "paddingBlock", sons: null}, 514 | {kind: 1, offset: "paddingBlockEnd", len: 0, typ: NTI33554450, name: "paddingBlockEnd", sons: null}, 515 | {kind: 1, offset: "paddingBlockStart", len: 0, typ: NTI33554450, name: "paddingBlockStart", sons: null}, 516 | {kind: 1, offset: "paddingBottom", len: 0, typ: NTI33554450, name: "paddingBottom", sons: null}, 517 | {kind: 1, offset: "paddingInline", len: 0, typ: NTI33554450, name: "paddingInline", sons: null}, 518 | {kind: 1, offset: "paddingInlineEnd", len: 0, typ: NTI33554450, name: "paddingInlineEnd", sons: null}, 519 | {kind: 1, offset: "paddingInlineStart", len: 0, typ: NTI33554450, name: "paddingInlineStart", sons: null}, 520 | {kind: 1, offset: "paddingLeft", len: 0, typ: NTI33554450, name: "paddingLeft", sons: null}, 521 | {kind: 1, offset: "paddingRight", len: 0, typ: NTI33554450, name: "paddingRight", sons: null}, 522 | {kind: 1, offset: "paddingTop", len: 0, typ: NTI33554450, name: "paddingTop", sons: null}, 523 | {kind: 1, offset: "pageBreakAfter", len: 0, typ: NTI33554450, name: "pageBreakAfter", sons: null}, 524 | {kind: 1, offset: "pageBreakBefore", len: 0, typ: NTI33554450, name: "pageBreakBefore", sons: null}, 525 | {kind: 1, offset: "pageBreakInside", len: 0, typ: NTI33554450, name: "pageBreakInside", sons: null}, 526 | {kind: 1, offset: "paintOrder", len: 0, typ: NTI33554450, name: "paintOrder", sons: null}, 527 | {kind: 1, offset: "perspective", len: 0, typ: NTI33554450, name: "perspective", sons: null}, 528 | {kind: 1, offset: "perspectiveOrigin", len: 0, typ: NTI33554450, name: "perspectiveOrigin", sons: null}, 529 | {kind: 1, offset: "placeContent", len: 0, typ: NTI33554450, name: "placeContent", sons: null}, 530 | {kind: 1, offset: "placeItems", len: 0, typ: NTI33554450, name: "placeItems", sons: null}, 531 | {kind: 1, offset: "placeSelf", len: 0, typ: NTI33554450, name: "placeSelf", sons: null}, 532 | {kind: 1, offset: "pointerEvents", len: 0, typ: NTI33554450, name: "pointerEvents", sons: null}, 533 | {kind: 1, offset: "position", len: 0, typ: NTI33554450, name: "position", sons: null}, 534 | {kind: 1, offset: "quotes", len: 0, typ: NTI33554450, name: "quotes", sons: null}, 535 | {kind: 1, offset: "resize", len: 0, typ: NTI33554450, name: "resize", sons: null}, 536 | {kind: 1, offset: "right", len: 0, typ: NTI33554450, name: "right", sons: null}, 537 | {kind: 1, offset: "rotate", len: 0, typ: NTI33554450, name: "rotate", sons: null}, 538 | {kind: 1, offset: "rowGap", len: 0, typ: NTI33554450, name: "rowGap", sons: null}, 539 | {kind: 1, offset: "scale", len: 0, typ: NTI33554450, name: "scale", sons: null}, 540 | {kind: 1, offset: "scrollBehavior", len: 0, typ: NTI33554450, name: "scrollBehavior", sons: null}, 541 | {kind: 1, offset: "scrollMargin", len: 0, typ: NTI33554450, name: "scrollMargin", sons: null}, 542 | {kind: 1, offset: "scrollMarginBlock", len: 0, typ: NTI33554450, name: "scrollMarginBlock", sons: null}, 543 | {kind: 1, offset: "scrollMarginBlockEnd", len: 0, typ: NTI33554450, name: "scrollMarginBlockEnd", sons: null}, 544 | {kind: 1, offset: "scrollMarginBlockStart", len: 0, typ: NTI33554450, name: "scrollMarginBlockStart", sons: null}, 545 | {kind: 1, offset: "scrollMarginBottom", len: 0, typ: NTI33554450, name: "scrollMarginBottom", sons: null}, 546 | {kind: 1, offset: "scrollMarginInline", len: 0, typ: NTI33554450, name: "scrollMarginInline", sons: null}, 547 | {kind: 1, offset: "scrollMarginInlineEnd", len: 0, typ: NTI33554450, name: "scrollMarginInlineEnd", sons: null}, 548 | {kind: 1, offset: "scrollMarginInlineStart", len: 0, typ: NTI33554450, name: "scrollMarginInlineStart", sons: null}, 549 | {kind: 1, offset: "scrollMarginLeft", len: 0, typ: NTI33554450, name: "scrollMarginLeft", sons: null}, 550 | {kind: 1, offset: "scrollMarginRight", len: 0, typ: NTI33554450, name: "scrollMarginRight", sons: null}, 551 | {kind: 1, offset: "scrollMarginTop", len: 0, typ: NTI33554450, name: "scrollMarginTop", sons: null}, 552 | {kind: 1, offset: "scrollPadding", len: 0, typ: NTI33554450, name: "scrollPadding", sons: null}, 553 | {kind: 1, offset: "scrollPaddingBlock", len: 0, typ: NTI33554450, name: "scrollPaddingBlock", sons: null}, 554 | {kind: 1, offset: "scrollPaddingBlockEnd", len: 0, typ: NTI33554450, name: "scrollPaddingBlockEnd", sons: null}, 555 | {kind: 1, offset: "scrollPaddingBlockStart", len: 0, typ: NTI33554450, name: "scrollPaddingBlockStart", sons: null}, 556 | {kind: 1, offset: "scrollPaddingBottom", len: 0, typ: NTI33554450, name: "scrollPaddingBottom", sons: null}, 557 | {kind: 1, offset: "scrollPaddingInline", len: 0, typ: NTI33554450, name: "scrollPaddingInline", sons: null}, 558 | {kind: 1, offset: "scrollPaddingInlineEnd", len: 0, typ: NTI33554450, name: "scrollPaddingInlineEnd", sons: null}, 559 | {kind: 1, offset: "scrollPaddingInlineStart", len: 0, typ: NTI33554450, name: "scrollPaddingInlineStart", sons: null}, 560 | {kind: 1, offset: "scrollPaddingLeft", len: 0, typ: NTI33554450, name: "scrollPaddingLeft", sons: null}, 561 | {kind: 1, offset: "scrollPaddingRight", len: 0, typ: NTI33554450, name: "scrollPaddingRight", sons: null}, 562 | {kind: 1, offset: "scrollPaddingTop", len: 0, typ: NTI33554450, name: "scrollPaddingTop", sons: null}, 563 | {kind: 1, offset: "scrollSnapAlign", len: 0, typ: NTI33554450, name: "scrollSnapAlign", sons: null}, 564 | {kind: 1, offset: "scrollSnapStop", len: 0, typ: NTI33554450, name: "scrollSnapStop", sons: null}, 565 | {kind: 1, offset: "scrollSnapType", len: 0, typ: NTI33554450, name: "scrollSnapType", sons: null}, 566 | {kind: 1, offset: "scrollbar3dLightColor", len: 0, typ: NTI33554450, name: "scrollbar3dLightColor", sons: null}, 567 | {kind: 1, offset: "scrollbarArrowColor", len: 0, typ: NTI33554450, name: "scrollbarArrowColor", sons: null}, 568 | {kind: 1, offset: "scrollbarBaseColor", len: 0, typ: NTI33554450, name: "scrollbarBaseColor", sons: null}, 569 | {kind: 1, offset: "scrollbarColor", len: 0, typ: NTI33554450, name: "scrollbarColor", sons: null}, 570 | {kind: 1, offset: "scrollbarDarkshadowColor", len: 0, typ: NTI33554450, name: "scrollbarDarkshadowColor", sons: null}, 571 | {kind: 1, offset: "scrollbarFaceColor", len: 0, typ: NTI33554450, name: "scrollbarFaceColor", sons: null}, 572 | {kind: 1, offset: "scrollbarHighlightColor", len: 0, typ: NTI33554450, name: "scrollbarHighlightColor", sons: null}, 573 | {kind: 1, offset: "scrollbarShadowColor", len: 0, typ: NTI33554450, name: "scrollbarShadowColor", sons: null}, 574 | {kind: 1, offset: "scrollbarTrackColor", len: 0, typ: NTI33554450, name: "scrollbarTrackColor", sons: null}, 575 | {kind: 1, offset: "scrollbarWidth", len: 0, typ: NTI33554450, name: "scrollbarWidth", sons: null}, 576 | {kind: 1, offset: "shapeImageThreshold", len: 0, typ: NTI33554450, name: "shapeImageThreshold", sons: null}, 577 | {kind: 1, offset: "shapeMargin", len: 0, typ: NTI33554450, name: "shapeMargin", sons: null}, 578 | {kind: 1, offset: "shapeOutside", len: 0, typ: NTI33554450, name: "shapeOutside", sons: null}, 579 | {kind: 1, offset: "tabSize", len: 0, typ: NTI33554450, name: "tabSize", sons: null}, 580 | {kind: 1, offset: "tableLayout", len: 0, typ: NTI33554450, name: "tableLayout", sons: null}, 581 | {kind: 1, offset: "textAlign", len: 0, typ: NTI33554450, name: "textAlign", sons: null}, 582 | {kind: 1, offset: "textAlignLast", len: 0, typ: NTI33554450, name: "textAlignLast", sons: null}, 583 | {kind: 1, offset: "textCombineUpright", len: 0, typ: NTI33554450, name: "textCombineUpright", sons: null}, 584 | {kind: 1, offset: "textDecoration", len: 0, typ: NTI33554450, name: "textDecoration", sons: null}, 585 | {kind: 1, offset: "textDecorationColor", len: 0, typ: NTI33554450, name: "textDecorationColor", sons: null}, 586 | {kind: 1, offset: "textDecorationLine", len: 0, typ: NTI33554450, name: "textDecorationLine", sons: null}, 587 | {kind: 1, offset: "textDecorationSkipInk", len: 0, typ: NTI33554450, name: "textDecorationSkipInk", sons: null}, 588 | {kind: 1, offset: "textDecorationStyle", len: 0, typ: NTI33554450, name: "textDecorationStyle", sons: null}, 589 | {kind: 1, offset: "textDecorationThickness", len: 0, typ: NTI33554450, name: "textDecorationThickness", sons: null}, 590 | {kind: 1, offset: "textEmphasis", len: 0, typ: NTI33554450, name: "textEmphasis", sons: null}, 591 | {kind: 1, offset: "textEmphasisColor", len: 0, typ: NTI33554450, name: "textEmphasisColor", sons: null}, 592 | {kind: 1, offset: "textEmphasisPosition", len: 0, typ: NTI33554450, name: "textEmphasisPosition", sons: null}, 593 | {kind: 1, offset: "textEmphasisStyle", len: 0, typ: NTI33554450, name: "textEmphasisStyle", sons: null}, 594 | {kind: 1, offset: "textIndent", len: 0, typ: NTI33554450, name: "textIndent", sons: null}, 595 | {kind: 1, offset: "textJustify", len: 0, typ: NTI33554450, name: "textJustify", sons: null}, 596 | {kind: 1, offset: "textOrientation", len: 0, typ: NTI33554450, name: "textOrientation", sons: null}, 597 | {kind: 1, offset: "textOverflow", len: 0, typ: NTI33554450, name: "textOverflow", sons: null}, 598 | {kind: 1, offset: "textRendering", len: 0, typ: NTI33554450, name: "textRendering", sons: null}, 599 | {kind: 1, offset: "textShadow", len: 0, typ: NTI33554450, name: "textShadow", sons: null}, 600 | {kind: 1, offset: "textTransform", len: 0, typ: NTI33554450, name: "textTransform", sons: null}, 601 | {kind: 1, offset: "textUnderlineOffset", len: 0, typ: NTI33554450, name: "textUnderlineOffset", sons: null}, 602 | {kind: 1, offset: "textUnderlinePosition", len: 0, typ: NTI33554450, name: "textUnderlinePosition", sons: null}, 603 | {kind: 1, offset: "top", len: 0, typ: NTI33554450, name: "top", sons: null}, 604 | {kind: 1, offset: "touchAction", len: 0, typ: NTI33554450, name: "touchAction", sons: null}, 605 | {kind: 1, offset: "transform", len: 0, typ: NTI33554450, name: "transform", sons: null}, 606 | {kind: 1, offset: "transformBox", len: 0, typ: NTI33554450, name: "transformBox", sons: null}, 607 | {kind: 1, offset: "transformOrigin", len: 0, typ: NTI33554450, name: "transformOrigin", sons: null}, 608 | {kind: 1, offset: "transformStyle", len: 0, typ: NTI33554450, name: "transformStyle", sons: null}, 609 | {kind: 1, offset: "transition", len: 0, typ: NTI33554450, name: "transition", sons: null}, 610 | {kind: 1, offset: "transitionDelay", len: 0, typ: NTI33554450, name: "transitionDelay", sons: null}, 611 | {kind: 1, offset: "transitionDuration", len: 0, typ: NTI33554450, name: "transitionDuration", sons: null}, 612 | {kind: 1, offset: "transitionProperty", len: 0, typ: NTI33554450, name: "transitionProperty", sons: null}, 613 | {kind: 1, offset: "transitionTimingFunction", len: 0, typ: NTI33554450, name: "transitionTimingFunction", sons: null}, 614 | {kind: 1, offset: "translate", len: 0, typ: NTI33554450, name: "translate", sons: null}, 615 | {kind: 1, offset: "unicodeBidi", len: 0, typ: NTI33554450, name: "unicodeBidi", sons: null}, 616 | {kind: 1, offset: "verticalAlign", len: 0, typ: NTI33554450, name: "verticalAlign", sons: null}, 617 | {kind: 1, offset: "visibility", len: 0, typ: NTI33554450, name: "visibility", sons: null}, 618 | {kind: 1, offset: "whiteSpace", len: 0, typ: NTI33554450, name: "whiteSpace", sons: null}, 619 | {kind: 1, offset: "widows", len: 0, typ: NTI33554450, name: "widows", sons: null}, 620 | {kind: 1, offset: "width", len: 0, typ: NTI33554450, name: "width", sons: null}, 621 | {kind: 1, offset: "willChange", len: 0, typ: NTI33554450, name: "willChange", sons: null}, 622 | {kind: 1, offset: "wordBreak", len: 0, typ: NTI33554450, name: "wordBreak", sons: null}, 623 | {kind: 1, offset: "wordSpacing", len: 0, typ: NTI33554450, name: "wordSpacing", sons: null}, 624 | {kind: 1, offset: "writingMode", len: 0, typ: NTI33554450, name: "writingMode", sons: null}, 625 | {kind: 1, offset: "zIndex", len: 0, typ: NTI33554450, name: "zIndex", sons: null}]}; 626 | NTI671088782.node = NNI671088782; 627 | NTI671088782.base = NTI33555171; 628 | NTI671088670.base = NTI671088782; 629 | var NNI671088754 = {kind: 2, len: 22, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "attributes", len: 0, typ: NTI671088755, name: "attributes", sons: null}, 630 | {kind: 1, offset: "childNodes", len: 0, typ: NTI671088756, name: "childNodes", sons: null}, 631 | {kind: 1, offset: "children", len: 0, typ: NTI671088757, name: "children", sons: null}, 632 | {kind: 1, offset: "data", len: 0, typ: NTI33554450, name: "data", sons: null}, 633 | {kind: 1, offset: "firstChild", len: 0, typ: NTI671088656, name: "firstChild", sons: null}, 634 | {kind: 1, offset: "lastChild", len: 0, typ: NTI671088656, name: "lastChild", sons: null}, 635 | {kind: 1, offset: "nextSibling", len: 0, typ: NTI671088656, name: "nextSibling", sons: null}, 636 | {kind: 1, offset: "nodeName", len: 0, typ: NTI33554450, name: "nodeName", sons: null}, 637 | {kind: 1, offset: "nodeType", len: 0, typ: NTI671088655, name: "nodeType", sons: null}, 638 | {kind: 1, offset: "nodeValue", len: 0, typ: NTI33554450, name: "nodeValue", sons: null}, 639 | {kind: 1, offset: "parentNode", len: 0, typ: NTI671088656, name: "parentNode", sons: null}, 640 | {kind: 1, offset: "content", len: 0, typ: NTI671088656, name: "content", sons: null}, 641 | {kind: 1, offset: "previousSibling", len: 0, typ: NTI671088656, name: "previousSibling", sons: null}, 642 | {kind: 1, offset: "ownerDocument", len: 0, typ: NTI671088657, name: "ownerDocument", sons: null}, 643 | {kind: 1, offset: "innerHTML", len: 0, typ: NTI33554450, name: "innerHTML", sons: null}, 644 | {kind: 1, offset: "outerHTML", len: 0, typ: NTI33554450, name: "outerHTML", sons: null}, 645 | {kind: 1, offset: "innerText", len: 0, typ: NTI33554450, name: "innerText", sons: null}, 646 | {kind: 1, offset: "textContent", len: 0, typ: NTI33554450, name: "textContent", sons: null}, 647 | {kind: 1, offset: "style", len: 0, typ: NTI671088670, name: "style", sons: null}, 648 | {kind: 1, offset: "baseURI", len: 0, typ: NTI33554450, name: "baseURI", sons: null}, 649 | {kind: 1, offset: "parentElement", len: 0, typ: NTI671088658, name: "parentElement", sons: null}, 650 | {kind: 1, offset: "isConnected", len: 0, typ: NTI33554466, name: "isConnected", sons: null}]}; 651 | NTI671088754.node = NNI671088754; 652 | var NNI671088709 = {kind: 2, len: 24, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "onabort", len: 0, typ: NTI671088710, name: "onabort", sons: null}, 653 | {kind: 1, offset: "onblur", len: 0, typ: NTI671088711, name: "onblur", sons: null}, 654 | {kind: 1, offset: "onchange", len: 0, typ: NTI671088712, name: "onchange", sons: null}, 655 | {kind: 1, offset: "onclick", len: 0, typ: NTI671088713, name: "onclick", sons: null}, 656 | {kind: 1, offset: "ondblclick", len: 0, typ: NTI671088714, name: "ondblclick", sons: null}, 657 | {kind: 1, offset: "onerror", len: 0, typ: NTI671088715, name: "onerror", sons: null}, 658 | {kind: 1, offset: "onfocus", len: 0, typ: NTI671088716, name: "onfocus", sons: null}, 659 | {kind: 1, offset: "onkeydown", len: 0, typ: NTI671088717, name: "onkeydown", sons: null}, 660 | {kind: 1, offset: "onkeypress", len: 0, typ: NTI671088718, name: "onkeypress", sons: null}, 661 | {kind: 1, offset: "onkeyup", len: 0, typ: NTI671088719, name: "onkeyup", sons: null}, 662 | {kind: 1, offset: "onload", len: 0, typ: NTI671088720, name: "onload", sons: null}, 663 | {kind: 1, offset: "onmousedown", len: 0, typ: NTI671088721, name: "onmousedown", sons: null}, 664 | {kind: 1, offset: "onmousemove", len: 0, typ: NTI671088722, name: "onmousemove", sons: null}, 665 | {kind: 1, offset: "onmouseout", len: 0, typ: NTI671088723, name: "onmouseout", sons: null}, 666 | {kind: 1, offset: "onmouseover", len: 0, typ: NTI671088724, name: "onmouseover", sons: null}, 667 | {kind: 1, offset: "onmouseup", len: 0, typ: NTI671088725, name: "onmouseup", sons: null}, 668 | {kind: 1, offset: "onreset", len: 0, typ: NTI671088726, name: "onreset", sons: null}, 669 | {kind: 1, offset: "onselect", len: 0, typ: NTI671088727, name: "onselect", sons: null}, 670 | {kind: 1, offset: "onstorage", len: 0, typ: NTI671088728, name: "onstorage", sons: null}, 671 | {kind: 1, offset: "onsubmit", len: 0, typ: NTI671088729, name: "onsubmit", sons: null}, 672 | {kind: 1, offset: "onunload", len: 0, typ: NTI671088730, name: "onunload", sons: null}, 673 | {kind: 1, offset: "onloadstart", len: 0, typ: NTI671088731, name: "onloadstart", sons: null}, 674 | {kind: 1, offset: "onprogress", len: 0, typ: NTI671088732, name: "onprogress", sons: null}, 675 | {kind: 1, offset: "onloadend", len: 0, typ: NTI671088733, name: "onloadend", sons: null}]}; 676 | NTI671088709.node = NNI671088709; 677 | NTI671088709.base = NTI33555171; 678 | NTI671088754.base = NTI671088709; 679 | NTI671088656.base = NTI671088754; 680 | NTI671089087.base = NTI671088656; 681 | NTI536871446.base = NTI33554450; 682 | var NNI687865870 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI33554435, name: "Field0", sons: null}, 683 | {kind: 1, offset: "Field1", len: 0, typ: NTI33554466, name: "Field1", sons: null}]}; 684 | NTI687865870.node = NNI687865870; 685 | 686 | function mnewString(len_33556826) { 687 | return new Array(len_33556826); 688 | 689 | 690 | 691 | } 692 | 693 | function toJSStr(s_33556737) { 694 | var result_33556738 = null; 695 | 696 | var res_33556772 = newSeq_33556755((s_33556737).length); 697 | var i_33556773 = 0; 698 | var j_33556774 = 0; 699 | Label1: { 700 | Label2: while (true) { 701 | if (!(i_33556773 < (s_33556737).length)) break Label2; 702 | var c_33556775 = s_33556737[i_33556773]; 703 | if ((c_33556775 < 128)) { 704 | res_33556772[j_33556774] = String.fromCharCode(c_33556775); 705 | i_33556773 += 1; 706 | } 707 | else { 708 | var helper_33556788 = newSeq_33556755(0); 709 | Label3: { 710 | Label4: while (true) { 711 | if (!true) break Label4; 712 | var code_33556789 = c_33556775.toString(16); 713 | if ((((code_33556789) == null ? 0 : (code_33556789).length) == 1)) { 714 | helper_33556788.push("%0");; 715 | } 716 | else { 717 | helper_33556788.push("%");; 718 | } 719 | 720 | helper_33556788.push(code_33556789);; 721 | i_33556773 += 1; 722 | if ((((s_33556737).length <= i_33556773) || (s_33556737[i_33556773] < 128))) { 723 | break Label3; 724 | } 725 | 726 | c_33556775 = s_33556737[i_33556773]; 727 | } 728 | }; 729 | ++excHandler; 730 | try { 731 | res_33556772[j_33556774] = decodeURIComponent(helper_33556788.join("")); 732 | --excHandler; 733 | } catch (EXCEPTION) { 734 | var prevJSError = lastJSError; 735 | lastJSError = EXCEPTION; 736 | --excHandler; 737 | res_33556772[j_33556774] = helper_33556788.join(""); 738 | lastJSError = prevJSError; 739 | } finally { 740 | } 741 | } 742 | 743 | j_33556774 += 1; 744 | } 745 | }; 746 | if (res_33556772.length < j_33556774) { for (var i = res_33556772.length ; i < j_33556774 ; ++i) res_33556772.push(null); } 747 | else { res_33556772.length = j_33556774; }; 748 | result_33556738 = res_33556772.join(""); 749 | 750 | return result_33556738; 751 | 752 | } 753 | 754 | function raiseException(e_33556597, ename_33556598) { 755 | e_33556597.name = ename_33556598; 756 | if ((excHandler == 0)) { 757 | unhandledException(e_33556597); 758 | } 759 | 760 | throw e_33556597; 761 | 762 | 763 | } 764 | 765 | function addInt(a_33556873, b_33556874) { 766 | var result = a_33556873 + b_33556874; 767 | checkOverflowInt(result); 768 | return result; 769 | 770 | 771 | 772 | } 773 | 774 | function chckRange(i_33557122, a_33557123, b_33557124) { 775 | var result_33557125 = 0; 776 | 777 | BeforeRet: { 778 | if (((a_33557123 <= i_33557122) && (i_33557122 <= b_33557124))) { 779 | result_33557125 = i_33557122; 780 | break BeforeRet; 781 | } 782 | else { 783 | raiseRangeError(); 784 | } 785 | 786 | }; 787 | 788 | return result_33557125; 789 | 790 | } 791 | 792 | function setConstr() { 793 | var result = {}; 794 | for (var i = 0; i < arguments.length; ++i) { 795 | var x = arguments[i]; 796 | if (typeof(x) == "object") { 797 | for (var j = x[0]; j <= x[1]; ++j) { 798 | result[j] = true; 799 | } 800 | } else { 801 | result[x] = true; 802 | } 803 | } 804 | return result; 805 | 806 | 807 | 808 | } 809 | var ConstSet1 = setConstr(17, 16, 4, 18, 27, 19, 23, 22, 21); 810 | 811 | function nimCopy(dest_33557073, src_33557074, ti_33557075) { 812 | var result_33557084 = null; 813 | 814 | switch (ti_33557075.kind) { 815 | case 21: 816 | case 22: 817 | case 23: 818 | case 5: 819 | if (!(isFatPointer_33557064(ti_33557075))) { 820 | result_33557084 = src_33557074; 821 | } 822 | else { 823 | result_33557084 = [src_33557074[0], src_33557074[1]]; 824 | } 825 | 826 | break; 827 | case 19: 828 | if (dest_33557073 === null || dest_33557073 === undefined) { 829 | dest_33557073 = {}; 830 | } 831 | else { 832 | for (var key in dest_33557073) { delete dest_33557073[key]; } 833 | } 834 | for (var key in src_33557074) { dest_33557073[key] = src_33557074[key]; } 835 | result_33557084 = dest_33557073; 836 | 837 | break; 838 | case 18: 839 | case 17: 840 | if (!((ti_33557075.base == null))) { 841 | result_33557084 = nimCopy(dest_33557073, src_33557074, ti_33557075.base); 842 | } 843 | else { 844 | if ((ti_33557075.kind == 17)) { 845 | result_33557084 = (dest_33557073 === null || dest_33557073 === undefined) ? {m_type: ti_33557075} : dest_33557073; 846 | } 847 | else { 848 | result_33557084 = (dest_33557073 === null || dest_33557073 === undefined) ? {} : dest_33557073; 849 | } 850 | } 851 | nimCopyAux(result_33557084, src_33557074, ti_33557075.node); 852 | break; 853 | case 4: 854 | case 16: 855 | if(ArrayBuffer.isView(src_33557074)) { 856 | if(dest_33557073 === null || dest_33557073 === undefined || dest_33557073.length != src_33557074.length) { 857 | dest_33557073 = new src_33557074.constructor(src_33557074); 858 | } else { 859 | dest_33557073.set(src_33557074, 0); 860 | } 861 | result_33557084 = dest_33557073; 862 | } else { 863 | if (src_33557074 === null) { 864 | result_33557084 = null; 865 | } 866 | else { 867 | if (dest_33557073 === null || dest_33557073 === undefined || dest_33557073.length != src_33557074.length) { 868 | dest_33557073 = new Array(src_33557074.length); 869 | } 870 | result_33557084 = dest_33557073; 871 | for (var i = 0; i < src_33557074.length; ++i) { 872 | result_33557084[i] = nimCopy(result_33557084[i], src_33557074[i], ti_33557075.base); 873 | } 874 | } 875 | } 876 | 877 | break; 878 | case 24: 879 | case 27: 880 | if (src_33557074 === null) { 881 | result_33557084 = null; 882 | } 883 | else { 884 | if (dest_33557073 === null || dest_33557073 === undefined || dest_33557073.length != src_33557074.length) { 885 | dest_33557073 = new Array(src_33557074.length); 886 | } 887 | result_33557084 = dest_33557073; 888 | for (var i = 0; i < src_33557074.length; ++i) { 889 | result_33557084[i] = nimCopy(result_33557084[i], src_33557074[i], ti_33557075.base); 890 | } 891 | } 892 | 893 | break; 894 | case 28: 895 | if (src_33557074 !== null) { 896 | result_33557084 = src_33557074.slice(0); 897 | } 898 | 899 | break; 900 | default: 901 | result_33557084 = src_33557074; 902 | break; 903 | } 904 | 905 | return result_33557084; 906 | 907 | } 908 | 909 | function chckIndx(i_33557117, a_33557118, b_33557119) { 910 | var result_33557120 = 0; 911 | 912 | BeforeRet: { 913 | if (((a_33557118 <= i_33557117) && (i_33557117 <= b_33557119))) { 914 | result_33557120 = i_33557117; 915 | break BeforeRet; 916 | } 917 | else { 918 | raiseIndexError(i_33557117, a_33557118, b_33557119); 919 | } 920 | 921 | }; 922 | 923 | return result_33557120; 924 | 925 | } 926 | 927 | function makeNimstrLit(c_33556731) { 928 | var result = []; 929 | for (var i = 0; i < c_33556731.length; ++i) { 930 | result[i] = c_33556731.charCodeAt(i); 931 | } 932 | return result; 933 | 934 | 935 | 936 | } 937 | 938 | function subInt(a_33556877, b_33556878) { 939 | var result = a_33556877 - b_33556878; 940 | checkOverflowInt(result); 941 | return result; 942 | 943 | 944 | 945 | } 946 | var ConstSet2 = setConstr([65, 90]); 947 | var ConstSet3 = setConstr(95, 32, 46); 948 | var ConstSet4 = setConstr(95, 32, 46); 949 | 950 | function mulInt(a_33556881, b_33556882) { 951 | var result = a_33556881 * b_33556882; 952 | checkOverflowInt(result); 953 | return result; 954 | 955 | 956 | 957 | } 958 | var ConstSet5 = setConstr([97, 122]); 959 | var ConstSet6 = setConstr([65, 90], [97, 122]); 960 | var ConstSet7 = setConstr([97, 122]); 961 | var ConstSet8 = setConstr([65, 90]); 962 | var ConstSet9 = setConstr([65, 90], [97, 122]); 963 | 964 | function nimMax(a_33556931, b_33556932) { 965 | var Temporary1; 966 | 967 | var result_33556933 = 0; 968 | 969 | BeforeRet: { 970 | if ((b_33556932 <= a_33556931)) { 971 | Temporary1 = a_33556931; 972 | } 973 | else { 974 | Temporary1 = b_33556932; 975 | } 976 | 977 | result_33556933 = Temporary1; 978 | break BeforeRet; 979 | }; 980 | 981 | return result_33556933; 982 | 983 | } 984 | 985 | function nimMin(a_33556927, b_33556928) { 986 | var Temporary1; 987 | 988 | var result_33556929 = 0; 989 | 990 | BeforeRet: { 991 | if ((a_33556927 <= b_33556928)) { 992 | Temporary1 = a_33556927; 993 | } 994 | else { 995 | Temporary1 = b_33556928; 996 | } 997 | 998 | result_33556929 = Temporary1; 999 | break BeforeRet; 1000 | }; 1001 | 1002 | return result_33556929; 1003 | 1004 | } 1005 | 1006 | function addChar(x_33557188, c_33557189) { 1007 | x_33557188.push(c_33557189); 1008 | 1009 | 1010 | } 1011 | 1012 | function setTheme(theme_536870916) { 1013 | document.documentElement.setAttribute("data-theme", theme_536870916); 1014 | window.localStorage.setItem("theme", theme_536870916); 1015 | 1016 | 1017 | } 1018 | var Temporary1; 1019 | var t_536870935 = window.localStorage.getItem("theme"); 1020 | if ((t_536870935 == null)) { 1021 | Temporary1 = "auto"; 1022 | } 1023 | else { 1024 | Temporary1 = t_536870935; 1025 | } 1026 | 1027 | setTheme(Temporary1); 1028 | 1029 | function add_33556385(x_33556386, x_33556386_Idx, y_33556387) { 1030 | if (x_33556386[x_33556386_Idx] === null) { x_33556386[x_33556386_Idx] = []; } 1031 | var off = x_33556386[x_33556386_Idx].length; 1032 | x_33556386[x_33556386_Idx].length += y_33556387.length; 1033 | for (var i = 0; i < y_33556387.length; ++i) { 1034 | x_33556386[x_33556386_Idx][off+i] = y_33556387.charCodeAt(i); 1035 | } 1036 | 1037 | 1038 | 1039 | } 1040 | 1041 | function newSeq_33556755(len_33556757) { 1042 | var result_33556758 = []; 1043 | 1044 | result_33556758 = new Array(len_33556757); for (var i = 0 ; i < len_33556757 ; ++i) { result_33556758[i] = null; } 1045 | return result_33556758; 1046 | 1047 | } 1048 | 1049 | function unhandledException(e_33556593) { 1050 | var buf_33556594 = [[]]; 1051 | if (!(((e_33556593.message).length == 0))) { 1052 | buf_33556594[0].push.apply(buf_33556594[0], [69,114,114,111,114,58,32,117,110,104,97,110,100,108,101,100,32,101,120,99,101,112,116,105,111,110,58,32]);; 1053 | buf_33556594[0].push.apply(buf_33556594[0], e_33556593.message);; 1054 | } 1055 | else { 1056 | buf_33556594[0].push.apply(buf_33556594[0], [69,114,114,111,114,58,32,117,110,104,97,110,100,108,101,100,32,101,120,99,101,112,116,105,111,110]);; 1057 | } 1058 | 1059 | buf_33556594[0].push.apply(buf_33556594[0], [32,91]);; 1060 | add_33556385(buf_33556594, 0, e_33556593.name); 1061 | buf_33556594[0].push.apply(buf_33556594[0], [93,10]);; 1062 | var cbuf_33556595 = toJSStr(buf_33556594[0]); 1063 | if (typeof(Error) !== "undefined") { 1064 | throw new Error(cbuf_33556595); 1065 | } 1066 | else { 1067 | throw cbuf_33556595; 1068 | } 1069 | 1070 | 1071 | 1072 | } 1073 | 1074 | function raiseOverflow() { 1075 | raiseException({message: [111,118,101,114,45,32,111,114,32,117,110,100,101,114,102,108,111,119], parent: null, m_type: NTI134217743, name: null, trace: [], up: null}, "OverflowDefect"); 1076 | 1077 | 1078 | } 1079 | 1080 | function checkOverflowInt(a_33556871) { 1081 | if (a_33556871 > 2147483647 || a_33556871 < -2147483648) raiseOverflow(); 1082 | 1083 | 1084 | 1085 | } 1086 | 1087 | function raiseRangeError() { 1088 | raiseException({message: [118,97,108,117,101,32,111,117,116,32,111,102,32,114,97,110,103,101], parent: null, m_type: NTI134217751, name: null, trace: [], up: null}, "RangeDefect"); 1089 | 1090 | 1091 | } 1092 | 1093 | function addChars_285212850(result_285212852, result_285212852_Idx, x_285212853, start_285212854, n_285212855) { 1094 | var Temporary1; 1095 | 1096 | var old_285212856 = (result_285212852[result_285212852_Idx]).length; 1097 | if (result_285212852[result_285212852_Idx].length < (Temporary1 = chckRange(addInt(old_285212856, n_285212855), 0, 2147483647), Temporary1)) { for (var i = result_285212852[result_285212852_Idx].length; i < Temporary1; ++i) result_285212852[result_285212852_Idx].push(0); } 1098 | else {result_285212852[result_285212852_Idx].length = Temporary1; }; 1099 | Label2: { 1100 | var iHEX60gensym4_285212870 = 0; 1101 | var i_536871009 = 0; 1102 | Label3: { 1103 | Label4: while (true) { 1104 | if (!(i_536871009 < n_285212855)) break Label4; 1105 | iHEX60gensym4_285212870 = i_536871009; 1106 | result_285212852[result_285212852_Idx][chckIndx(addInt(old_285212856, iHEX60gensym4_285212870), 0, (result_285212852[result_285212852_Idx]).length - 1)] = x_285212853.charCodeAt(chckIndx(addInt(start_285212854, iHEX60gensym4_285212870), 0, (x_285212853).length - 1)); 1107 | i_536871009 = addInt(i_536871009, 1); 1108 | } 1109 | }; 1110 | }; 1111 | 1112 | 1113 | } 1114 | 1115 | function addChars_285212846(result_285212848, result_285212848_Idx, x_285212849) { 1116 | addChars_285212850(result_285212848, result_285212848_Idx, x_285212849, 0, ((x_285212849) == null ? 0 : (x_285212849).length)); 1117 | 1118 | 1119 | } 1120 | 1121 | function addInt_285212871(result_285212872, result_285212872_Idx, x_285212873) { 1122 | addChars_285212846(result_285212872, result_285212872_Idx, ((x_285212873) + "")); 1123 | 1124 | 1125 | } 1126 | 1127 | function addInt_285212892(result_285212893, result_285212893_Idx, x_285212894) { 1128 | addInt_285212871(result_285212893, result_285212893_Idx, x_285212894); 1129 | 1130 | 1131 | } 1132 | 1133 | function HEX24_369098760(x_369098761) { 1134 | var result_369098762 = [[]]; 1135 | 1136 | addInt_285212892(result_369098762, 0, x_369098761); 1137 | 1138 | return result_369098762[0]; 1139 | 1140 | } 1141 | 1142 | function isFatPointer_33557064(ti_33557065) { 1143 | var result_33557066 = false; 1144 | 1145 | BeforeRet: { 1146 | result_33557066 = !((ConstSet1[ti_33557065.base.kind] != undefined)); 1147 | break BeforeRet; 1148 | }; 1149 | 1150 | return result_33557066; 1151 | 1152 | } 1153 | 1154 | function nimCopyAux(dest_33557077, src_33557078, n_33557079) { 1155 | switch (n_33557079.kind) { 1156 | case 0: 1157 | break; 1158 | case 1: 1159 | dest_33557077[n_33557079.offset] = nimCopy(dest_33557077[n_33557079.offset], src_33557078[n_33557079.offset], n_33557079.typ); 1160 | 1161 | break; 1162 | case 2: 1163 | for (var i = 0; i < n_33557079.sons.length; i++) { 1164 | nimCopyAux(dest_33557077, src_33557078, n_33557079.sons[i]); 1165 | } 1166 | 1167 | break; 1168 | case 3: 1169 | dest_33557077[n_33557079.offset] = nimCopy(dest_33557077[n_33557079.offset], src_33557078[n_33557079.offset], n_33557079.typ); 1170 | for (var i = 0; i < n_33557079.sons.length; ++i) { 1171 | nimCopyAux(dest_33557077, src_33557078, n_33557079.sons[i][1]); 1172 | } 1173 | 1174 | break; 1175 | } 1176 | 1177 | 1178 | } 1179 | 1180 | function raiseIndexError(i_33556684, a_33556685, b_33556686) { 1181 | var Temporary1; 1182 | 1183 | if ((b_33556686 < a_33556685)) { 1184 | Temporary1 = [105,110,100,101,120,32,111,117,116,32,111,102,32,98,111,117,110,100,115,44,32,116,104,101,32,99,111,110,116,97,105,110,101,114,32,105,115,32,101,109,112,116,121]; 1185 | } 1186 | else { 1187 | Temporary1 = ([105,110,100,101,120,32] || []).concat(HEX24_369098760(i_33556684) || [],[32,110,111,116,32,105,110,32] || [],HEX24_369098760(a_33556685) || [],[32,46,46,32] || [],HEX24_369098760(b_33556686) || []); 1188 | } 1189 | 1190 | raiseException({message: nimCopy(null, Temporary1, NTI33554449), parent: null, m_type: NTI134217749, name: null, trace: [], up: null}, "IndexDefect"); 1191 | 1192 | 1193 | } 1194 | 1195 | function raiseAssert_251658262(msg_251658263) { 1196 | raiseException({message: nimCopy(null, msg_251658263, NTI33554449), parent: null, m_type: NTI134217745, name: null, trace: [], up: null}, "AssertionDefect"); 1197 | 1198 | 1199 | } 1200 | 1201 | function failedAssertImpl_251658292(msg_251658293) { 1202 | raiseAssert_251658262(msg_251658293); 1203 | 1204 | 1205 | } 1206 | 1207 | function onDOMLoaded(e_536870937) { 1208 | 1209 | function HEX3Aanonymous_536870961(event_536870962) { 1210 | event_536870962.target.parentNode.style.display = "none"; 1211 | event_536870962.target.parentNode.nextSibling.style.display = "inline"; 1212 | 1213 | 1214 | } 1215 | 1216 | document.getElementById("theme-select").value = window.localStorage.getItem("theme"); 1217 | Label1: { 1218 | var pragmaDots_536870960 = null; 1219 | var colontmp__536871000 = []; 1220 | colontmp__536871000 = document.getElementsByClassName("pragmadots"); 1221 | var i_536871002 = 0; 1222 | var L_536871003 = (colontmp__536871000).length; 1223 | Label2: { 1224 | Label3: while (true) { 1225 | if (!(i_536871002 < L_536871003)) break Label3; 1226 | pragmaDots_536870960 = colontmp__536871000[chckIndx(i_536871002, 0, (colontmp__536871000).length - 1)]; 1227 | pragmaDots_536870960.onclick = HEX3Aanonymous_536870961; 1228 | i_536871002 = addInt(i_536871002, 1); 1229 | if (!(((colontmp__536871000).length == L_536871003))) { 1230 | failedAssertImpl_251658292(makeNimstrLit("iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it")); 1231 | } 1232 | 1233 | } 1234 | }; 1235 | }; 1236 | 1237 | 1238 | } 1239 | var alternative_536871499 = [null]; 1240 | 1241 | function isWhitespace_536871245(x_536871246) { 1242 | var result_536871247 = false; 1243 | 1244 | result_536871247 = (((x_536871246.nodeName == "#text") && !/\S/.test(x_536871246.textContent)) || (x_536871246.nodeName == "#comment")); 1245 | 1246 | return result_536871247; 1247 | 1248 | } 1249 | 1250 | function toToc_536871248(x_536871249, father_536871250) { 1251 | var Temporary5; 1252 | var Temporary6; 1253 | var Temporary7; 1254 | var Temporary8; 1255 | var Temporary15; 1256 | 1257 | if ((x_536871249.nodeName == "UL")) { 1258 | var f_536871258 = {heading: null, kids: [], sortId: (father_536871250.kids).length, doSort: false}; 1259 | var i_536871259 = 0; 1260 | Label1: { 1261 | Label2: while (true) { 1262 | if (!(i_536871259 < x_536871249.childNodes.length)) break Label2; 1263 | var nxt_536871260 = addInt(i_536871259, 1); 1264 | Label3: { 1265 | Label4: while (true) { 1266 | if (!(nxt_536871260 < x_536871249.childNodes.length)) Temporary5 = false; else { Temporary5 = isWhitespace_536871245(x_536871249.childNodes[nxt_536871260]); } if (!Temporary5) break Label4; 1267 | nxt_536871260 = addInt(nxt_536871260, 1); 1268 | } 1269 | }; 1270 | if (!(nxt_536871260 < x_536871249.childNodes.length)) Temporary8 = false; else { Temporary8 = (x_536871249.childNodes[i_536871259].nodeName == "LI"); } if (!Temporary8) Temporary7 = false; else { Temporary7 = (x_536871249.childNodes[i_536871259].childNodes.length == 1); } if (!Temporary7) Temporary6 = false; else { Temporary6 = (x_536871249.childNodes[nxt_536871260].nodeName == "UL"); } if (Temporary6) { 1271 | var e_536871273 = {heading: x_536871249.childNodes[i_536871259].childNodes[0], kids: [], sortId: (f_536871258.kids).length, doSort: false}; 1272 | var it_536871274 = x_536871249.childNodes[nxt_536871260]; 1273 | Label9: { 1274 | var j_536871279 = 0; 1275 | var colontmp__536871537 = 0; 1276 | colontmp__536871537 = it_536871274.childNodes.length; 1277 | var i_536871538 = 0; 1278 | Label10: { 1279 | Label11: while (true) { 1280 | if (!(i_536871538 < colontmp__536871537)) break Label11; 1281 | j_536871279 = i_536871538; 1282 | toToc_536871248(it_536871274.childNodes[j_536871279], e_536871273); 1283 | i_536871538 = addInt(i_536871538, 1); 1284 | } 1285 | }; 1286 | }; 1287 | f_536871258.kids.push(e_536871273);; 1288 | i_536871259 = addInt(nxt_536871260, 1); 1289 | } 1290 | else { 1291 | toToc_536871248(x_536871249.childNodes[i_536871259], f_536871258); 1292 | i_536871259 = addInt(i_536871259, 1); 1293 | } 1294 | 1295 | } 1296 | }; 1297 | father_536871250.kids.push(f_536871258);; 1298 | } 1299 | else { 1300 | if (isWhitespace_536871245(x_536871249)) { 1301 | } 1302 | else { 1303 | if ((x_536871249.nodeName == "LI")) { 1304 | var idx_536871297 = []; 1305 | Label12: { 1306 | var i_536871302 = 0; 1307 | var colontmp__536871541 = 0; 1308 | colontmp__536871541 = x_536871249.childNodes.length; 1309 | var i_536871542 = 0; 1310 | Label13: { 1311 | Label14: while (true) { 1312 | if (!(i_536871542 < colontmp__536871541)) break Label14; 1313 | i_536871302 = i_536871542; 1314 | if (!(isWhitespace_536871245(x_536871249.childNodes[i_536871302]))) { 1315 | idx_536871297.push(i_536871302);; 1316 | } 1317 | 1318 | i_536871542 = addInt(i_536871542, 1); 1319 | } 1320 | }; 1321 | }; 1322 | if (!((idx_536871297).length == 2)) Temporary15 = false; else { Temporary15 = (x_536871249.childNodes[idx_536871297[chckIndx(1, 0, (idx_536871297).length - 1)]].nodeName == "UL"); } if (Temporary15) { 1323 | var e_536871318 = {heading: x_536871249.childNodes[idx_536871297[chckIndx(0, 0, (idx_536871297).length - 1)]], kids: [], sortId: (father_536871250.kids).length, doSort: false}; 1324 | var it_536871319 = x_536871249.childNodes[idx_536871297[chckIndx(1, 0, (idx_536871297).length - 1)]]; 1325 | Label16: { 1326 | var j_536871324 = 0; 1327 | var colontmp__536871545 = 0; 1328 | colontmp__536871545 = it_536871319.childNodes.length; 1329 | var i_536871546 = 0; 1330 | Label17: { 1331 | Label18: while (true) { 1332 | if (!(i_536871546 < colontmp__536871545)) break Label18; 1333 | j_536871324 = i_536871546; 1334 | toToc_536871248(it_536871319.childNodes[j_536871324], e_536871318); 1335 | i_536871546 = addInt(i_536871546, 1); 1336 | } 1337 | }; 1338 | }; 1339 | father_536871250.kids.push(e_536871318);; 1340 | } 1341 | else { 1342 | Label19: { 1343 | var i_536871333 = 0; 1344 | var colontmp__536871549 = 0; 1345 | colontmp__536871549 = x_536871249.childNodes.length; 1346 | var i_536871550 = 0; 1347 | Label20: { 1348 | Label21: while (true) { 1349 | if (!(i_536871550 < colontmp__536871549)) break Label21; 1350 | i_536871333 = i_536871550; 1351 | toToc_536871248(x_536871249.childNodes[i_536871333], father_536871250); 1352 | i_536871550 = addInt(i_536871550, 1); 1353 | } 1354 | }; 1355 | }; 1356 | } 1357 | 1358 | } 1359 | else { 1360 | father_536871250.kids.push({heading: x_536871249, kids: [], sortId: (father_536871250.kids).length, doSort: false});; 1361 | } 1362 | }} 1363 | 1364 | 1365 | } 1366 | 1367 | function extractItems_536871082(x_536871083, heading_536871084, items_536871085, items_536871085_Idx) { 1368 | BeforeRet: { 1369 | if ((x_536871083 == null)) { 1370 | break BeforeRet; 1371 | } 1372 | 1373 | if ((!((x_536871083.heading == null)) && (x_536871083.heading.textContent == heading_536871084))) { 1374 | Label1: { 1375 | var i_536871102 = 0; 1376 | var colontmp__536871553 = 0; 1377 | colontmp__536871553 = (x_536871083.kids).length; 1378 | var i_536871554 = 0; 1379 | Label2: { 1380 | Label3: while (true) { 1381 | if (!(i_536871554 < colontmp__536871553)) break Label3; 1382 | i_536871102 = i_536871554; 1383 | items_536871085[items_536871085_Idx].push(x_536871083.kids[chckIndx(i_536871102, 0, (x_536871083.kids).length - 1)].heading);; 1384 | i_536871554 = addInt(i_536871554, 1); 1385 | } 1386 | }; 1387 | }; 1388 | } 1389 | else { 1390 | Label4: { 1391 | var k_536871128 = null; 1392 | var i_536871558 = 0; 1393 | var L_536871559 = (x_536871083.kids).length; 1394 | Label5: { 1395 | Label6: while (true) { 1396 | if (!(i_536871558 < L_536871559)) break Label6; 1397 | k_536871128 = x_536871083.kids[chckIndx(i_536871558, 0, (x_536871083.kids).length - 1)]; 1398 | extractItems_536871082(k_536871128, heading_536871084, items_536871085, items_536871085_Idx); 1399 | i_536871558 = addInt(i_536871558, 1); 1400 | if (!(((x_536871083.kids).length == L_536871559))) { 1401 | failedAssertImpl_251658292(makeNimstrLit("iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it")); 1402 | } 1403 | 1404 | } 1405 | }; 1406 | }; 1407 | } 1408 | 1409 | }; 1410 | 1411 | 1412 | } 1413 | 1414 | function tree_536871013(tag_536871014, kids_536871015) { 1415 | var result_536871016 = null; 1416 | 1417 | result_536871016 = document.createElement(tag_536871014); 1418 | Label1: { 1419 | var k_536871030 = null; 1420 | var i_536871571 = 0; 1421 | Label2: { 1422 | Label3: while (true) { 1423 | if (!(i_536871571 < (kids_536871015).length)) break Label3; 1424 | k_536871030 = kids_536871015[chckIndx(i_536871571, 0, (kids_536871015).length - 1)]; 1425 | result_536871016.appendChild(k_536871030); 1426 | i_536871571 = addInt(i_536871571, 1); 1427 | } 1428 | }; 1429 | }; 1430 | 1431 | return result_536871016; 1432 | 1433 | } 1434 | 1435 | function text_536871038(s_536871039) { 1436 | var result_536871040 = null; 1437 | 1438 | result_536871040 = document.createTextNode(s_536871039); 1439 | 1440 | return result_536871040; 1441 | 1442 | } 1443 | 1444 | function uncovered_536871399(x_536871400) { 1445 | var Temporary1; 1446 | 1447 | var result_536871401 = null; 1448 | 1449 | BeforeRet: { 1450 | if ((((x_536871400.kids).length == 0) && !((x_536871400.heading == null)))) { 1451 | if (!(x_536871400.heading.hasOwnProperty('__karaxMarker__'))) { 1452 | Temporary1 = x_536871400; 1453 | } 1454 | else { 1455 | Temporary1 = null; 1456 | } 1457 | 1458 | result_536871401 = Temporary1; 1459 | break BeforeRet; 1460 | } 1461 | 1462 | result_536871401 = {heading: x_536871400.heading, kids: [], sortId: x_536871400.sortId, doSort: x_536871400.doSort}; 1463 | Label2: { 1464 | var k_536871416 = null; 1465 | var i_536871578 = 0; 1466 | var L_536871579 = (x_536871400.kids).length; 1467 | Label3: { 1468 | Label4: while (true) { 1469 | if (!(i_536871578 < L_536871579)) break Label4; 1470 | k_536871416 = x_536871400.kids[chckIndx(i_536871578, 0, (x_536871400.kids).length - 1)]; 1471 | var y_536871417 = uncovered_536871399(k_536871416); 1472 | if (!((y_536871417 == null))) { 1473 | result_536871401.kids.push(y_536871417);; 1474 | } 1475 | 1476 | i_536871578 = addInt(i_536871578, 1); 1477 | if (!(((x_536871400.kids).length == L_536871579))) { 1478 | failedAssertImpl_251658292(makeNimstrLit("iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it")); 1479 | } 1480 | 1481 | } 1482 | }; 1483 | }; 1484 | if (((result_536871401.kids).length == 0)) { 1485 | result_536871401 = null; 1486 | } 1487 | 1488 | }; 1489 | 1490 | return result_536871401; 1491 | 1492 | } 1493 | 1494 | function mergeTocs_536871429(orig_536871430, news_536871431) { 1495 | var result_536871432 = null; 1496 | 1497 | result_536871432 = uncovered_536871399(orig_536871430); 1498 | if ((result_536871432 == null)) { 1499 | result_536871432 = news_536871431; 1500 | } 1501 | else { 1502 | Label1: { 1503 | var i_536871444 = 0; 1504 | var colontmp__536871574 = 0; 1505 | colontmp__536871574 = (news_536871431.kids).length; 1506 | var i_536871575 = 0; 1507 | Label2: { 1508 | Label3: while (true) { 1509 | if (!(i_536871575 < colontmp__536871574)) break Label3; 1510 | i_536871444 = i_536871575; 1511 | result_536871432.kids.push(news_536871431.kids[chckIndx(i_536871444, 0, (news_536871431.kids).length - 1)]);; 1512 | i_536871575 = addInt(i_536871575, 1); 1513 | } 1514 | }; 1515 | }; 1516 | } 1517 | 1518 | 1519 | return result_536871432; 1520 | 1521 | } 1522 | 1523 | function buildToc_536871449(orig_536871450, types_536871451, procs_536871452) { 1524 | var result_536871453 = null; 1525 | 1526 | var newStuff_536871458 = {heading: null, kids: [], doSort: true, sortId: 0}; 1527 | Label1: { 1528 | var t_536871462 = null; 1529 | var i_536871566 = 0; 1530 | var L_536871567 = (types_536871451).length; 1531 | Label2: { 1532 | Label3: while (true) { 1533 | if (!(i_536871566 < L_536871567)) break Label3; 1534 | t_536871462 = types_536871451[chckIndx(i_536871566, 0, (types_536871451).length - 1)]; 1535 | var c_536871467 = {heading: t_536871462.cloneNode(true), kids: [], doSort: true, sortId: 0}; 1536 | t_536871462.__karaxMarker__ = true; 1537 | Label4: { 1538 | var p_536871471 = null; 1539 | var i_536871563 = 0; 1540 | var L_536871564 = (procs_536871452).length; 1541 | Label5: { 1542 | Label6: while (true) { 1543 | if (!(i_536871563 < L_536871564)) break Label6; 1544 | p_536871471 = procs_536871452[chckIndx(i_536871563, 0, (procs_536871452).length - 1)]; 1545 | if (!(p_536871471.hasOwnProperty('__karaxMarker__'))) { 1546 | var xx_536871472 = p_536871471.parentNode.getElementsByClassName("attachedType"); 1547 | if ((((xx_536871472).length == 1) && (xx_536871472[chckIndx(0, 0, (xx_536871472).length - 1)].textContent == t_536871462.textContent))) { 1548 | var q_536871477 = tree_536871013("A", [text_536871038(p_536871471.title)]); 1549 | q_536871477.setAttribute("href", p_536871471.getAttribute("href")); 1550 | c_536871467.kids.push({heading: q_536871477, kids: [], sortId: 0, doSort: false});; 1551 | p_536871471.__karaxMarker__ = true; 1552 | } 1553 | 1554 | } 1555 | 1556 | i_536871563 = addInt(i_536871563, 1); 1557 | if (!(((procs_536871452).length == L_536871564))) { 1558 | failedAssertImpl_251658292(makeNimstrLit("iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it")); 1559 | } 1560 | 1561 | } 1562 | }; 1563 | }; 1564 | newStuff_536871458.kids.push(c_536871467);; 1565 | i_536871566 = addInt(i_536871566, 1); 1566 | if (!(((types_536871451).length == L_536871567))) { 1567 | failedAssertImpl_251658292(makeNimstrLit("iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it")); 1568 | } 1569 | 1570 | } 1571 | }; 1572 | }; 1573 | result_536871453 = mergeTocs_536871429(orig_536871450, newStuff_536871458); 1574 | 1575 | return result_536871453; 1576 | 1577 | } 1578 | 1579 | function add_536871031(parent_536871032, kid_536871033) { 1580 | if (((parent_536871032.nodeName == "TR") && ((kid_536871033.nodeName == "TD") || (kid_536871033.nodeName == "TH")))) { 1581 | var k_536871034 = document.createElement("TD"); 1582 | k_536871034.appendChild(kid_536871033); 1583 | parent_536871032.appendChild(k_536871034); 1584 | } 1585 | else { 1586 | parent_536871032.appendChild(kid_536871033); 1587 | } 1588 | 1589 | 1590 | 1591 | } 1592 | 1593 | function setClass_536871035(e_536871036, value_536871037) { 1594 | e_536871036.setAttribute("class", value_536871037); 1595 | 1596 | 1597 | } 1598 | 1599 | function toHtml_536871147(x_536871148, isRoot_536871149) { 1600 | 1601 | function HEX3Aanonymous_536871167(a_536871168, b_536871169) { 1602 | var result_536871170 = 0; 1603 | 1604 | BeforeRet: { 1605 | if ((!((a_536871168.heading == null)) && !((b_536871169.heading == null)))) { 1606 | var x_536871179 = a_536871168.heading.textContent; 1607 | var y_536871180 = b_536871169.heading.textContent; 1608 | if ((x_536871179 < y_536871180)) { 1609 | result_536871170 = -1; 1610 | break BeforeRet; 1611 | } 1612 | 1613 | if ((y_536871180 < x_536871179)) { 1614 | result_536871170 = 1; 1615 | break BeforeRet; 1616 | } 1617 | 1618 | result_536871170 = 0; 1619 | break BeforeRet; 1620 | } 1621 | else { 1622 | result_536871170 = subInt(a_536871168.sortId, b_536871169.sortId); 1623 | break BeforeRet; 1624 | } 1625 | 1626 | }; 1627 | 1628 | return result_536871170; 1629 | 1630 | } 1631 | 1632 | var result_536871150 = null; 1633 | 1634 | BeforeRet: { 1635 | if ((x_536871148 == null)) { 1636 | result_536871150 = null; 1637 | break BeforeRet; 1638 | } 1639 | 1640 | if (((x_536871148.kids).length == 0)) { 1641 | if ((x_536871148.heading == null)) { 1642 | result_536871150 = null; 1643 | break BeforeRet; 1644 | } 1645 | 1646 | result_536871150 = x_536871148.heading.cloneNode(true); 1647 | break BeforeRet; 1648 | } 1649 | 1650 | result_536871150 = tree_536871013("DIV", []); 1651 | if ((!((x_536871148.heading == null)) && !(x_536871148.heading.hasOwnProperty('__karaxMarker__')))) { 1652 | add_536871031(result_536871150, x_536871148.heading.cloneNode(true)); 1653 | } 1654 | 1655 | var ul_536871166 = tree_536871013("UL", []); 1656 | if (isRoot_536871149) { 1657 | setClass_536871035(ul_536871166, "simple simple-toc"); 1658 | } 1659 | else { 1660 | setClass_536871035(ul_536871166, "simple"); 1661 | } 1662 | 1663 | if (x_536871148.doSort) { 1664 | x_536871148.kids.sort(HEX3Aanonymous_536871167); 1665 | } 1666 | 1667 | Label1: { 1668 | var k_536871192 = null; 1669 | var i_536871582 = 0; 1670 | var L_536871583 = (x_536871148.kids).length; 1671 | Label2: { 1672 | Label3: while (true) { 1673 | if (!(i_536871582 < L_536871583)) break Label3; 1674 | k_536871192 = x_536871148.kids[chckIndx(i_536871582, 0, (x_536871148.kids).length - 1)]; 1675 | var y_536871193 = toHtml_536871147(k_536871192, false); 1676 | if (!((y_536871193 == null))) { 1677 | add_536871031(ul_536871166, tree_536871013("LI", [y_536871193])); 1678 | } 1679 | 1680 | i_536871582 = addInt(i_536871582, 1); 1681 | if (!(((x_536871148.kids).length == L_536871583))) { 1682 | failedAssertImpl_251658292(makeNimstrLit("iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it")); 1683 | } 1684 | 1685 | } 1686 | }; 1687 | }; 1688 | if (!((ul_536871166.childNodes.length == 0))) { 1689 | add_536871031(result_536871150, ul_536871166); 1690 | } 1691 | 1692 | if ((result_536871150.childNodes.length == 0)) { 1693 | result_536871150 = null; 1694 | } 1695 | 1696 | }; 1697 | 1698 | return result_536871150; 1699 | 1700 | } 1701 | 1702 | function replaceById_536871041(id_536871042, newTree_536871043) { 1703 | var x_536871044 = document.getElementById(id_536871042); 1704 | x_536871044.parentNode.replaceChild(newTree_536871043, x_536871044); 1705 | newTree_536871043.id = id_536871042; 1706 | 1707 | 1708 | } 1709 | 1710 | function togglevis_536871500(d_536871501) { 1711 | if ((d_536871501.style.display == "none")) { 1712 | d_536871501.style.display = "inline"; 1713 | } 1714 | else { 1715 | d_536871501.style.display = "none"; 1716 | } 1717 | 1718 | 1719 | 1720 | } 1721 | 1722 | function groupBy(value_536871503) { 1723 | var toc_536871504 = document.getElementById("toc-list"); 1724 | if ((alternative_536871499[0] == null)) { 1725 | var tt_536871512 = {heading: null, kids: [], sortId: 0, doSort: false}; 1726 | toToc_536871248(toc_536871504, tt_536871512); 1727 | tt_536871512 = tt_536871512.kids[chckIndx(0, 0, (tt_536871512.kids).length - 1)]; 1728 | var types_536871517 = [[]]; 1729 | var procs_536871522 = [[]]; 1730 | extractItems_536871082(tt_536871512, "Types", types_536871517, 0); 1731 | extractItems_536871082(tt_536871512, "Procs", procs_536871522, 0); 1732 | extractItems_536871082(tt_536871512, "Converters", procs_536871522, 0); 1733 | extractItems_536871082(tt_536871512, "Methods", procs_536871522, 0); 1734 | extractItems_536871082(tt_536871512, "Templates", procs_536871522, 0); 1735 | extractItems_536871082(tt_536871512, "Macros", procs_536871522, 0); 1736 | extractItems_536871082(tt_536871512, "Iterators", procs_536871522, 0); 1737 | var ntoc_536871523 = buildToc_536871449(tt_536871512, types_536871517[0], procs_536871522[0]); 1738 | var x_536871524 = toHtml_536871147(ntoc_536871523, true); 1739 | alternative_536871499[0] = tree_536871013("DIV", [x_536871524]); 1740 | } 1741 | 1742 | if ((value_536871503 == "type")) { 1743 | replaceById_536871041("tocRoot", alternative_536871499[0]); 1744 | } 1745 | else { 1746 | replaceById_536871041("tocRoot", tree_536871013("DIV", [])); 1747 | } 1748 | 1749 | togglevis_536871500(document.getElementById("toc-list")); 1750 | 1751 | 1752 | } 1753 | var db_536871585 = [[]]; 1754 | var contents_536871586 = [[]]; 1755 | var oldtoc_536871750 = [null]; 1756 | var timer_536871751 = [null]; 1757 | 1758 | function nsuToLowerAsciiChar(c_704643156) { 1759 | var result_704643157 = 0; 1760 | 1761 | if ((ConstSet2[c_704643156] != undefined)) { 1762 | result_704643157 = (c_704643156 ^ 32); 1763 | } 1764 | else { 1765 | result_704643157 = c_704643156; 1766 | } 1767 | 1768 | 1769 | return result_704643157; 1770 | 1771 | } 1772 | 1773 | function fuzzyMatch_687865872(pattern_687865873, str_687865874) { 1774 | var Temporary4; 1775 | var Temporary5; 1776 | var Temporary6; 1777 | var Temporary7; 1778 | var Temporary8; 1779 | 1780 | var result_687865877 = {Field0: 0, Field1: false}; 1781 | 1782 | var scoreState_687865878 = -100; 1783 | var headerMatched_687865879 = false; 1784 | var unmatchedLeadingCharCount_687865880 = 0; 1785 | var consecutiveMatchCount_687865881 = 0; 1786 | var strIndex_687865882 = 0; 1787 | var patIndex_687865883 = 0; 1788 | var score_687865884 = 0; 1789 | Label1: { 1790 | Label2: while (true) { 1791 | if (!((strIndex_687865882 < ((str_687865874) == null ? 0 : (str_687865874).length)) && (patIndex_687865883 < ((pattern_687865873) == null ? 0 : (pattern_687865873).length)))) break Label2; 1792 | Label3: { 1793 | var patternChar_687865887 = nsuToLowerAsciiChar(pattern_687865873.charCodeAt(chckIndx(patIndex_687865883, 0, (pattern_687865873).length - 1))); 1794 | var strChar_687865888 = nsuToLowerAsciiChar(str_687865874.charCodeAt(chckIndx(strIndex_687865882, 0, (str_687865874).length - 1))); 1795 | if ((ConstSet3[patternChar_687865887] != undefined)) { 1796 | patIndex_687865883 = addInt(patIndex_687865883, 1); 1797 | break Label3; 1798 | } 1799 | 1800 | if ((ConstSet4[strChar_687865888] != undefined)) { 1801 | strIndex_687865882 = addInt(strIndex_687865882, 1); 1802 | break Label3; 1803 | } 1804 | 1805 | if ((!(headerMatched_687865879) && (strChar_687865888 == 58))) { 1806 | headerMatched_687865879 = true; 1807 | scoreState_687865878 = -100; 1808 | score_687865884 = ((Math.floor((0.5 * score_687865884))) | 0); 1809 | patIndex_687865883 = 0; 1810 | strIndex_687865882 = addInt(strIndex_687865882, 1); 1811 | break Label3; 1812 | } 1813 | 1814 | if ((strChar_687865888 == patternChar_687865887)) { 1815 | switch (scoreState_687865878) { 1816 | case -100: 1817 | case 20: 1818 | scoreState_687865878 = 10; 1819 | break; 1820 | case 0: 1821 | scoreState_687865878 = 5; 1822 | score_687865884 = addInt(score_687865884, scoreState_687865878); 1823 | break; 1824 | case 10: 1825 | case 5: 1826 | consecutiveMatchCount_687865881 = addInt(consecutiveMatchCount_687865881, 1); 1827 | scoreState_687865878 = 5; 1828 | score_687865884 = addInt(score_687865884, mulInt(5, consecutiveMatchCount_687865881)); 1829 | if ((scoreState_687865878 == 10)) { 1830 | score_687865884 = addInt(score_687865884, 10); 1831 | } 1832 | 1833 | var onBoundary_687865940 = (patIndex_687865883 == ((pattern_687865873) == null ? -1 : (pattern_687865873).length - 1)); 1834 | if ((!(onBoundary_687865940) && (strIndex_687865882 < ((str_687865874) == null ? -1 : (str_687865874).length - 1)))) { 1835 | var nextPatternChar_687865941 = nsuToLowerAsciiChar(pattern_687865873.charCodeAt(chckIndx(addInt(patIndex_687865883, 1), 0, (pattern_687865873).length - 1))); 1836 | var nextStrChar_687865942 = nsuToLowerAsciiChar(str_687865874.charCodeAt(chckIndx(addInt(strIndex_687865882, 1), 0, (str_687865874).length - 1))); 1837 | if (!!((ConstSet5[nextStrChar_687865942] != undefined))) Temporary4 = false; else { Temporary4 = !((nextStrChar_687865942 == nextPatternChar_687865941)); } onBoundary_687865940 = Temporary4; 1838 | } 1839 | 1840 | if (onBoundary_687865940) { 1841 | scoreState_687865878 = 20; 1842 | score_687865884 = addInt(score_687865884, scoreState_687865878); 1843 | } 1844 | 1845 | break; 1846 | case -1: 1847 | case -3: 1848 | if (!((ConstSet6[str_687865874.charCodeAt(chckIndx(subInt(strIndex_687865882, 1), 0, (str_687865874).length - 1))] != undefined))) Temporary5 = true; else { if (!(ConstSet7[str_687865874.charCodeAt(chckIndx(subInt(strIndex_687865882, 1), 0, (str_687865874).length - 1))] != undefined)) Temporary6 = false; else { Temporary6 = (ConstSet8[str_687865874.charCodeAt(chckIndx(strIndex_687865882, 0, (str_687865874).length - 1))] != undefined); } Temporary5 = Temporary6; } var isLeadingChar_687865966 = Temporary5; 1849 | if (isLeadingChar_687865966) { 1850 | scoreState_687865878 = 10; 1851 | } 1852 | else { 1853 | scoreState_687865878 = 0; 1854 | score_687865884 = addInt(score_687865884, scoreState_687865878); 1855 | } 1856 | 1857 | break; 1858 | } 1859 | patIndex_687865883 = addInt(patIndex_687865883, 1); 1860 | } 1861 | else { 1862 | switch (scoreState_687865878) { 1863 | case -100: 1864 | scoreState_687865878 = -3; 1865 | score_687865884 = addInt(score_687865884, scoreState_687865878); 1866 | break; 1867 | case 5: 1868 | scoreState_687865878 = -1; 1869 | score_687865884 = addInt(score_687865884, scoreState_687865878); 1870 | consecutiveMatchCount_687865881 = 0; 1871 | break; 1872 | case -3: 1873 | if ((unmatchedLeadingCharCount_687865880 < 3)) { 1874 | scoreState_687865878 = -3; 1875 | score_687865884 = addInt(score_687865884, scoreState_687865878); 1876 | } 1877 | 1878 | unmatchedLeadingCharCount_687865880 = addInt(unmatchedLeadingCharCount_687865880, 1); 1879 | break; 1880 | default: 1881 | scoreState_687865878 = -1; 1882 | score_687865884 = addInt(score_687865884, scoreState_687865878); 1883 | break; 1884 | } 1885 | } 1886 | 1887 | strIndex_687865882 = addInt(strIndex_687865882, 1); 1888 | }; 1889 | } 1890 | }; 1891 | if (!(patIndex_687865883 == ((pattern_687865873) == null ? 0 : (pattern_687865873).length))) Temporary7 = false; else { if ((strIndex_687865882 == ((str_687865874) == null ? 0 : (str_687865874).length))) Temporary8 = true; else { Temporary8 = !((ConstSet9[str_687865874.charCodeAt(chckIndx(strIndex_687865882, 0, (str_687865874).length - 1))] != undefined)); } Temporary7 = Temporary8; } if (Temporary7) { 1892 | score_687865884 = addInt(score_687865884, 10); 1893 | } 1894 | 1895 | var colontmp__536871811 = nimMax(0, score_687865884); 1896 | var colontmp__536871812 = (0 < score_687865884); 1897 | result_687865877 = nimCopy(result_687865877, {Field0: colontmp__536871811, Field1: colontmp__536871812}, NTI687865870); 1898 | 1899 | return result_687865877; 1900 | 1901 | } 1902 | 1903 | function escapeCString_536871587(x_536871588, x_536871588_Idx) { 1904 | var s_536871589 = []; 1905 | Label1: { 1906 | var c_536871590 = 0; 1907 | var iHEX60gensym6_536871815 = 0; 1908 | var nHEX60gensym6_536871816 = ((x_536871588[x_536871588_Idx]) == null ? 0 : (x_536871588[x_536871588_Idx]).length); 1909 | Label2: { 1910 | Label3: while (true) { 1911 | if (!(iHEX60gensym6_536871815 < nHEX60gensym6_536871816)) break Label3; 1912 | c_536871590 = x_536871588[x_536871588_Idx].charCodeAt(chckIndx(iHEX60gensym6_536871815, 0, (x_536871588[x_536871588_Idx]).length - 1)); 1913 | switch (c_536871590) { 1914 | case 60: 1915 | s_536871589.push.apply(s_536871589, [38,108,116,59]);; 1916 | break; 1917 | case 62: 1918 | s_536871589.push.apply(s_536871589, [38,103,116,59]);; 1919 | break; 1920 | default: 1921 | addChar(s_536871589, c_536871590);; 1922 | break; 1923 | } 1924 | iHEX60gensym6_536871815 = addInt(iHEX60gensym6_536871815, 1); 1925 | } 1926 | }; 1927 | }; 1928 | x_536871588[x_536871588_Idx] = toJSStr(s_536871589); 1929 | 1930 | 1931 | } 1932 | 1933 | function dosearch_536871591(value_536871592) { 1934 | 1935 | function HEX3Aanonymous_536871649(a_536871654, b_536871655) { 1936 | var result_536871660 = 0; 1937 | 1938 | result_536871660 = subInt(b_536871655["Field1"], a_536871654["Field1"]); 1939 | 1940 | return result_536871660; 1941 | 1942 | } 1943 | 1944 | var result_536871593 = null; 1945 | 1946 | if (((db_536871585[0]).length == 0)) { 1947 | var stuff_536871597 = null; 1948 | var request = new XMLHttpRequest(); 1949 | request.open("GET", document.getElementById("indexLink").href, false); 1950 | request.send(null); 1951 | 1952 | var doc = document.implementation.createHTMLDocument("theindex"); 1953 | doc.documentElement.innerHTML = request.responseText; 1954 | 1955 | stuff_536871597 = doc.documentElement; 1956 | 1957 | db_536871585[0] = nimCopy(null, stuff_536871597.getElementsByClassName("reference"), NTI671089087); 1958 | contents_536871586[0] = nimCopy(null, [], NTI536871446); 1959 | Label1: { 1960 | var ahref_536871623 = null; 1961 | var i_536871796 = 0; 1962 | var L_536871797 = (db_536871585[0]).length; 1963 | Label2: { 1964 | Label3: while (true) { 1965 | if (!(i_536871796 < L_536871797)) break Label3; 1966 | ahref_536871623 = db_536871585[0][chckIndx(i_536871796, 0, (db_536871585[0]).length - 1)]; 1967 | contents_536871586[0].push(ahref_536871623.getAttribute("data-doc-search-tag"));; 1968 | i_536871796 = addInt(i_536871796, 1); 1969 | if (!(((db_536871585[0]).length == L_536871797))) { 1970 | failedAssertImpl_251658292(makeNimstrLit("iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it")); 1971 | } 1972 | 1973 | } 1974 | }; 1975 | }; 1976 | } 1977 | 1978 | var ul_536871628 = tree_536871013("UL", []); 1979 | result_536871593 = tree_536871013("DIV", []); 1980 | setClass_536871035(result_536871593, "search_results"); 1981 | var matches_536871633 = []; 1982 | Label4: { 1983 | var i_536871641 = 0; 1984 | var colontmp__536871801 = 0; 1985 | colontmp__536871801 = (db_536871585[0]).length; 1986 | var i_536871802 = 0; 1987 | Label5: { 1988 | Label6: while (true) { 1989 | if (!(i_536871802 < colontmp__536871801)) break Label6; 1990 | i_536871641 = i_536871802; 1991 | Label7: { 1992 | var c_536871642 = contents_536871586[0][chckIndx(i_536871641, 0, (contents_536871586[0]).length - 1)]; 1993 | if (((c_536871642 == "Examples") || (c_536871642 == "PEG construction"))) { 1994 | break Label7; 1995 | } 1996 | 1997 | var colontmp__536871808 = fuzzyMatch_687865872(value_536871592, c_536871642); 1998 | var score_536871643 = colontmp__536871808["Field0"]; 1999 | var matched_536871644 = colontmp__536871808["Field1"]; 2000 | if (matched_536871644) { 2001 | matches_536871633.push({Field0: db_536871585[0][chckIndx(i_536871641, 0, (db_536871585[0]).length - 1)], Field1: score_536871643});; 2002 | } 2003 | 2004 | }; 2005 | i_536871802 = addInt(i_536871802, 1); 2006 | } 2007 | }; 2008 | }; 2009 | matches_536871633.sort(HEX3Aanonymous_536871649); 2010 | Label8: { 2011 | var i_536871677 = 0; 2012 | var colontmp__536871805 = 0; 2013 | colontmp__536871805 = nimMin((matches_536871633).length, 29); 2014 | var i_536871806 = 0; 2015 | Label9: { 2016 | Label10: while (true) { 2017 | if (!(i_536871806 < colontmp__536871805)) break Label10; 2018 | i_536871677 = i_536871806; 2019 | matches_536871633[chckIndx(i_536871677, 0, (matches_536871633).length - 1)]["Field0"].innerHTML = matches_536871633[chckIndx(i_536871677, 0, (matches_536871633).length - 1)]["Field0"].getAttribute("data-doc-search-tag"); 2020 | escapeCString_536871587(matches_536871633[chckIndx(i_536871677, 0, (matches_536871633).length - 1)]["Field0"], "innerHTML"); 2021 | add_536871031(ul_536871628, tree_536871013("LI", [matches_536871633[chckIndx(i_536871677, 0, (matches_536871633).length - 1)]["Field0"]])); 2022 | i_536871806 = addInt(i_536871806, 1); 2023 | } 2024 | }; 2025 | }; 2026 | if ((ul_536871628.childNodes.length == 0)) { 2027 | add_536871031(result_536871593, tree_536871013("B", [text_536871038("no search results")])); 2028 | } 2029 | else { 2030 | add_536871031(result_536871593, tree_536871013("B", [text_536871038("search results")])); 2031 | add_536871031(result_536871593, ul_536871628); 2032 | } 2033 | 2034 | 2035 | return result_536871593; 2036 | 2037 | } 2038 | 2039 | function search() { 2040 | 2041 | function wrapper_536871762() { 2042 | var elem_536871763 = document.getElementById("searchInput"); 2043 | var value_536871764 = elem_536871763.value; 2044 | if (!((((value_536871764) == null ? 0 : (value_536871764).length) == 0))) { 2045 | if ((oldtoc_536871750[0] == null)) { 2046 | oldtoc_536871750[0] = document.getElementById("tocRoot"); 2047 | } 2048 | 2049 | var results_536871768 = dosearch_536871591(value_536871764); 2050 | replaceById_536871041("tocRoot", results_536871768); 2051 | } 2052 | else { 2053 | if (!((oldtoc_536871750[0] == null))) { 2054 | replaceById_536871041("tocRoot", oldtoc_536871750[0]); 2055 | } 2056 | } 2057 | 2058 | 2059 | } 2060 | 2061 | if (!((timer_536871751[0] == null))) { 2062 | clearTimeout(timer_536871751[0]); 2063 | } 2064 | 2065 | timer_536871751[0] = setTimeout(wrapper_536871762, 400); 2066 | 2067 | 2068 | } 2069 | 2070 | function copyToClipboard() { 2071 | 2072 | function updatePreTags() { 2073 | 2074 | const allPreTags = document.querySelectorAll("pre") 2075 | 2076 | allPreTags.forEach((e) => { 2077 | 2078 | const div = document.createElement("div") 2079 | div.classList.add("copyToClipBoard") 2080 | 2081 | const preTag = document.createElement("pre") 2082 | preTag.innerHTML = e.innerHTML 2083 | 2084 | const button = document.createElement("button") 2085 | button.value = e.textContent.replace('...', '') 2086 | button.classList.add("copyToClipBoardBtn") 2087 | button.style.cursor = "pointer" 2088 | 2089 | div.appendChild(preTag) 2090 | div.appendChild(button) 2091 | 2092 | e.outerHTML = div.outerHTML 2093 | 2094 | }) 2095 | } 2096 | 2097 | 2098 | function copyTextToClipboard(e) { 2099 | const clipBoardContent = e.target.value 2100 | navigator.clipboard.writeText(clipBoardContent).then(function() { 2101 | e.target.style.setProperty("--clipboard-image", "var(--clipboard-image-selected)") 2102 | }, function(err) { 2103 | console.error("Could not copy text: ", err); 2104 | }); 2105 | } 2106 | 2107 | window.addEventListener("click", (e) => { 2108 | if (e.target.classList.contains("copyToClipBoardBtn")) { 2109 | copyTextToClipboard(e) 2110 | } 2111 | }) 2112 | 2113 | window.addEventListener("mouseover", (e) => { 2114 | if (e.target.nodeName === "PRE") { 2115 | e.target.nextElementSibling.style.setProperty("--clipboard-image", "var(--clipboard-image-normal)") 2116 | } 2117 | }) 2118 | 2119 | window.addEventListener("DOMContentLoaded", updatePreTags) 2120 | 2121 | 2122 | 2123 | 2124 | } 2125 | copyToClipboard(); 2126 | window.addEventListener("DOMContentLoaded", onDOMLoaded, false); 2127 | -------------------------------------------------------------------------------- /docs/nimdoc.out.css: -------------------------------------------------------------------------------- 1 | /* 2 | Stylesheet for use with Docutils/rst2html. 3 | 4 | See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to 5 | customize this style sheet. 6 | 7 | Modified from Chad Skeeters' rst2html-style 8 | https://bitbucket.org/cskeeters/rst2html-style/ 9 | 10 | Modified by Boyd Greenfield and narimiran 11 | */ 12 | 13 | :root { 14 | --primary-background: #fff; 15 | --secondary-background: ghostwhite; 16 | --third-background: #e8e8e8; 17 | --info-background: #50c050; 18 | --warning-background: #c0a000; 19 | --error-background: #e04040; 20 | --border: #dde; 21 | --text: #222; 22 | --anchor: #07b; 23 | --anchor-focus: #607c9f; 24 | --input-focus: #1fa0eb; 25 | --strong: #3c3c3c; 26 | --hint: #9A9A9A; 27 | --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN4AAAA9CAYAAADCt9ebAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjAzOjQ4KzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMjoyODo0MSswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMjoyODo0MSswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozMzM0ZjAxYS0yMDExLWE1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"); 28 | 29 | --keyword: #5e8f60; 30 | --identifier: #222; 31 | --comment: #484a86; 32 | --operator: #155da4; 33 | --punctuation: black; 34 | --other: black; 35 | --escapeSequence: #c4891b; 36 | --number: #252dbe; 37 | --literal: #a4255b; 38 | --program: #6060c0; 39 | --option: #508000; 40 | --raw-data: #a4255b; 41 | 42 | --clipboard-image-normal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: black' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E %3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2' /%3E %3C/svg%3E"); 43 | --clipboard-image-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: black' viewBox='0 0 20 20' fill='currentColor'%3E %3Cpath d='M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z' /%3E %3Cpath d='M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z' /%3E %3C/svg%3E"); 44 | --clipboard-image: var(--clipboard-image-normal) 45 | } 46 | 47 | [data-theme="dark"] { 48 | --primary-background: #171921; 49 | --secondary-background: #1e202a; 50 | --third-background: #2b2e3b; 51 | --info-background: #008000; 52 | --warning-background: #807000; 53 | --error-background: #c03000; 54 | --border: #0e1014; 55 | --text: #fff; 56 | --anchor: #8be9fd; 57 | --anchor-focus: #8be9fd; 58 | --input-focus: #8be9fd; 59 | --strong: #bd93f9; 60 | --hint: #7A7C85; 61 | --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAABMCAYAAABOBlMuAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjE4OjIyKzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQy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"); 62 | 63 | --keyword: #ff79c6; 64 | --identifier: #f8f8f2; 65 | --comment: #6272a4; 66 | --operator: #ff79c6; 67 | --punctuation: #f8f8f2; 68 | --other: #f8f8f2; 69 | --escapeSequence: #bd93f9; 70 | --number: #bd93f9; 71 | --literal: #f1fa8c; 72 | --program: #9090c0; 73 | --option: #90b010; 74 | --raw-data: #8be9fd; 75 | 76 | --clipboard-image-normal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E %3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2' /%3E %3C/svg%3E"); 77 | --clipboard-image-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' viewBox='0 0 20 20' fill='currentColor'%3E %3Cpath d='M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z' /%3E %3Cpath d='M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z' /%3E %3C/svg%3E"); 78 | --clipboard-image: var(--clipboard-image-normal); 79 | } 80 | 81 | @media (prefers-color-scheme: dark) { 82 | [data-theme="auto"] { 83 | --primary-background: #171921; 84 | --secondary-background: #1e202a; 85 | --third-background: #2b2e3b; 86 | --info-background: #008000; 87 | --warning-background: #807000; 88 | --error-background: #c03000; 89 | --border: #0e1014; 90 | --text: #fff; 91 | --anchor: #8be9fd; 92 | --anchor-focus: #8be9fd; 93 | --input-focus: #8be9fd; 94 | --strong: #bd93f9; 95 | --hint: #7A7C85; 96 | --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAABMCAYAAABOBlMuAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjE4OjIyKzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQy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"); 97 | 98 | --keyword: #ff79c6; 99 | --identifier: #f8f8f2; 100 | --comment: #6272a4; 101 | --operator: #ff79c6; 102 | --punctuation: #f8f8f2; 103 | --other: #f8f8f2; 104 | --escapeSequence: #bd93f9; 105 | --number: #bd93f9; 106 | --literal: #f1fa8c; 107 | --program: #9090c0; 108 | --option: #90b010; 109 | --raw-data: #8be9fd; 110 | 111 | --clipboard-image-normal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E %3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2' /%3E %3C/svg%3E"); 112 | --clipboard-image-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' viewBox='0 0 20 20' fill='currentColor'%3E %3Cpath d='M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z' /%3E %3Cpath d='M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z' /%3E %3C/svg%3E"); 113 | --clipboard-image: var(--clipboard-image-normal); 114 | } 115 | } 116 | 117 | .theme-select-wrapper { 118 | display: flex; 119 | align-items: center; 120 | } 121 | 122 | html { 123 | font-size: 100%; 124 | -webkit-text-size-adjust: 100%; 125 | -ms-text-size-adjust: 100%; } 126 | 127 | body { 128 | font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; 129 | font-weight: 400; 130 | font-size: 1.125em; 131 | line-height: 1.5; 132 | color: var(--text); 133 | background-color: var(--primary-background); } 134 | 135 | /* Skeleton grid */ 136 | .container { 137 | position: relative; 138 | width: 100%; 139 | max-width: 1050px; 140 | margin: 0 auto; 141 | padding: 0; 142 | box-sizing: border-box; } 143 | 144 | .column, .columns { 145 | width: 100%; 146 | float: left; 147 | box-sizing: border-box; 148 | margin-left: 1%; } 149 | 150 | @media print { 151 | #global-links, .link-seesrc, .theme-switch-wrapper, #searchInputDiv, .search-groupby { 152 | display:none; 153 | } 154 | .columns { 155 | width:100% !important; 156 | } 157 | } 158 | 159 | .column:first-child, .columns:first-child { 160 | margin-left: 0; } 161 | 162 | .container .row { 163 | display: flex; } 164 | 165 | .three.columns { 166 | width: 25.0%; 167 | height: 100vh; 168 | position: sticky; 169 | top: 0px; 170 | overflow-y: auto; 171 | padding: 2px; 172 | } 173 | 174 | .nine.columns { 175 | width: 75.0%; 176 | padding-left: 1.5em; } 177 | 178 | .twelve.columns { 179 | width: 100%; 180 | margin-left: 0; } 181 | 182 | @media screen and (max-width: 860px) { 183 | .three.columns { 184 | display: none; 185 | } 186 | .nine.columns { 187 | width: 98.0%; 188 | } 189 | body { 190 | font-size: 1em; 191 | line-height: 1.35; 192 | } 193 | } 194 | 195 | cite { 196 | font-style: italic !important; } 197 | 198 | 199 | /* Nim search input */ 200 | div#searchInputDiv { 201 | margin-bottom: 1em; 202 | } 203 | input#searchInput { 204 | width: 80%; 205 | } 206 | 207 | /* 208 | * Some custom formatting for input forms. 209 | * This also fixes input form colors on Firefox with a dark system theme on Linux. 210 | */ 211 | input { 212 | -moz-appearance: none; 213 | background-color: var(--secondary-background); 214 | color: var(--text); 215 | border: 1px solid var(--border); 216 | font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; 217 | font-size: 0.9em; 218 | padding: 6px; 219 | } 220 | 221 | input:focus { 222 | border: 1px solid var(--input-focus); 223 | box-shadow: 0 0 3px var(--input-focus); 224 | } 225 | 226 | select { 227 | -moz-appearance: none; 228 | background-color: var(--secondary-background); 229 | color: var(--text); 230 | border: 1px solid var(--border); 231 | font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; 232 | font-size: 0.9em; 233 | padding: 6px; 234 | } 235 | 236 | select:focus { 237 | border: 1px solid var(--input-focus); 238 | box-shadow: 0 0 3px var(--input-focus); 239 | } 240 | 241 | /* Docgen styles */ 242 | 243 | :target { 244 | border: 2px solid #B5651D; 245 | border-style: dotted; 246 | } 247 | 248 | /* Links */ 249 | a { 250 | color: var(--anchor); 251 | text-decoration: none; 252 | } 253 | 254 | a span.Identifier { 255 | text-decoration: underline; 256 | text-decoration-color: #aab; 257 | } 258 | 259 | a.reference-toplevel { 260 | font-weight: bold; 261 | } 262 | 263 | a.nimdoc { 264 | word-spacing: 0.3em; 265 | } 266 | 267 | a.toc-backref { 268 | text-decoration: none; 269 | color: var(--text); 270 | } 271 | 272 | a.link-seesrc { 273 | color: #607c9f; 274 | font-size: 0.9em; 275 | font-style: italic; 276 | } 277 | 278 | a:hover, a:focus { 279 | color: var(--anchor-focus); 280 | text-decoration: underline; 281 | } 282 | 283 | a:hover span.Identifier { 284 | color: var(--anchor); 285 | } 286 | 287 | 288 | sub, sup { 289 | position: relative; 290 | font-size: 75%; 291 | line-height: 0; 292 | vertical-align: baseline; } 293 | 294 | sup { 295 | top: -0.5em; } 296 | 297 | sub { 298 | bottom: -0.25em; } 299 | 300 | img { 301 | width: auto; 302 | height: auto; 303 | max-width: 100%; 304 | vertical-align: middle; 305 | border: 0; 306 | -ms-interpolation-mode: bicubic; } 307 | 308 | @media print { 309 | * { 310 | color: black !important; 311 | text-shadow: none !important; 312 | background: transparent !important; 313 | box-shadow: none !important; } 314 | 315 | a, a:visited { 316 | text-decoration: underline; } 317 | 318 | a[href]:after { 319 | content: " (" attr(href) ")"; } 320 | 321 | abbr[title]:after { 322 | content: " (" attr(title) ")"; } 323 | 324 | .ir a:after, 325 | a[href^="javascript:"]:after, 326 | a[href^="#"]:after { 327 | content: ""; } 328 | 329 | pre, blockquote { 330 | border: 1px solid #999; 331 | page-break-inside: avoid; } 332 | 333 | thead { 334 | display: table-header-group; } 335 | 336 | tr, img { 337 | page-break-inside: avoid; } 338 | 339 | img { 340 | max-width: 100% !important; } 341 | 342 | @page { 343 | margin: 0.5cm; } 344 | 345 | h1 { 346 | page-break-before: always; } 347 | 348 | h1.title { 349 | page-break-before: avoid; } 350 | 351 | p, h2, h3 { 352 | orphans: 3; 353 | widows: 3; } 354 | 355 | h2, h3 { 356 | page-break-after: avoid; } 357 | } 358 | 359 | 360 | p { 361 | margin-top: 0.5em; 362 | margin-bottom: 0.5em; } 363 | 364 | small { 365 | font-size: 85%; } 366 | 367 | strong { 368 | font-weight: 600; 369 | font-size: 0.95em; 370 | color: var(--strong); } 371 | 372 | em { 373 | font-style: italic; } 374 | 375 | h1 { 376 | font-size: 1.8em; 377 | font-weight: 400; 378 | padding-bottom: .25em; 379 | border-bottom: 6px solid var(--third-background); 380 | margin-top: 2.5em; 381 | margin-bottom: 1em; 382 | line-height: 1.2em; } 383 | 384 | h1.title { 385 | padding-bottom: 1em; 386 | border-bottom: 0px; 387 | font-size: 2.5em; 388 | text-align: center; 389 | font-weight: 900; 390 | margin-top: 0.75em; 391 | margin-bottom: 0em; } 392 | 393 | h2 { 394 | font-size: 1.3em; 395 | margin-top: 2em; } 396 | 397 | h2.subtitle { 398 | margin-top: 0em; 399 | text-align: center; } 400 | 401 | h3 { 402 | font-size: 1.125em; 403 | font-style: italic; 404 | margin-top: 1.5em; } 405 | 406 | h4 { 407 | font-size: 1.125em; 408 | margin-top: 1em; } 409 | 410 | h5 { 411 | font-size: 1.125em; 412 | margin-top: 0.75em; } 413 | 414 | h6 { 415 | font-size: 1.1em; } 416 | 417 | 418 | ul, ol { 419 | padding: 0; 420 | margin-top: 0.5em; 421 | margin-left: 0.75em; } 422 | 423 | ul ul, ul ol, ol ol, ol ul { 424 | margin-bottom: 0; 425 | margin-left: 1.25em; } 426 | 427 | ul.simple > li { 428 | list-style-type: circle; } 429 | 430 | ul.simple-boot li { 431 | list-style-type: none; 432 | margin-left: 0em; 433 | margin-bottom: 0.5em; } 434 | 435 | ol.simple > li, ul.simple > li { 436 | margin-bottom: 0.2em; 437 | margin-left: 0.4em } 438 | 439 | ul.simple.simple-toc > li { 440 | margin-top: 1em; } 441 | 442 | ul.simple-toc { 443 | list-style: none; 444 | font-size: 0.9em; 445 | margin-left: -0.3em; 446 | margin-top: 1em; } 447 | 448 | ul.simple-toc > li { 449 | list-style-type: none; } 450 | 451 | ul.simple-toc-section { 452 | list-style-type: circle; 453 | margin-left: 0.8em; 454 | color: #6c9aae; } 455 | 456 | ul.nested-toc-section { 457 | list-style-type: circle; 458 | margin-left: -0.75em; 459 | color: var(--text); } 460 | 461 | ul.nested-toc-section > li { 462 | margin-left: 1.25em; } 463 | 464 | 465 | ol.arabic { 466 | list-style: decimal; } 467 | 468 | ol.loweralpha { 469 | list-style: lower-alpha; } 470 | 471 | ol.upperalpha { 472 | list-style: upper-alpha; } 473 | 474 | ol.lowerroman { 475 | list-style: lower-roman; } 476 | 477 | ol.upperroman { 478 | list-style: upper-roman; } 479 | 480 | ul.auto-toc { 481 | list-style-type: none; } 482 | 483 | 484 | dl { 485 | margin-bottom: 1.5em; } 486 | 487 | dt { 488 | margin-bottom: -0.5em; 489 | margin-left: 0.0em; } 490 | 491 | dd { 492 | margin-left: 2.0em; 493 | margin-bottom: 3.0em; 494 | margin-top: 0.5em; } 495 | 496 | 497 | hr { 498 | margin: 2em 0; 499 | border: 0; 500 | border-top: 1px solid #aaa; } 501 | 502 | hr.footnote { 503 | width: 25%; 504 | border-top: 0.15em solid #999; 505 | margin-bottom: 0.15em; 506 | margin-top: 0.15em; 507 | } 508 | div.footnote-group { 509 | margin-left: 1em; 510 | } 511 | div.footnote-label { 512 | display: inline-block; 513 | min-width: 1.7em; 514 | } 515 | 516 | div.option-list { 517 | border: 0.1em solid var(--border); 518 | } 519 | div.option-list-item { 520 | padding-left: 12em; 521 | padding-right: 0; 522 | padding-bottom: 0.3em; 523 | padding-top: 0.3em; 524 | } 525 | div.odd { 526 | background-color: var(--secondary-background); 527 | } 528 | div.option-list-label { 529 | margin-left: -11.5em; 530 | margin-right: 0em; 531 | min-width: 11.5em; 532 | display: inline-block; 533 | vertical-align: top; 534 | } 535 | div.option-list-description { 536 | width: calc(100% - 1em); 537 | padding-left: 1em; 538 | padding-right: 0; 539 | display: inline-block; 540 | } 541 | 542 | blockquote { 543 | font-size: 0.9em; 544 | font-style: italic; 545 | padding-left: 0.5em; 546 | margin-left: 0; 547 | border-left: 5px solid #bbc; 548 | } 549 | 550 | blockquote.markdown-quote { 551 | font-size: 0.9rem; /* use rem to avoid recursion */ 552 | font-style: normal; 553 | } 554 | 555 | .pre, span.tok { 556 | font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace; 557 | font-weight: 500; 558 | font-size: 0.85em; 559 | color: var(--text); 560 | background-color: var(--third-background); 561 | padding-left: 3px; 562 | padding-right: 3px; 563 | border-radius: 4px; 564 | } 565 | 566 | span.tok { 567 | border: 1px solid #808080; 568 | padding-bottom: 0.1em; 569 | margin-right: 0.2em; 570 | } 571 | 572 | .copyToClipBoard { 573 | position: relative; 574 | } 575 | 576 | pre { 577 | font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace; 578 | color: var(--text); 579 | font-weight: 500; 580 | display: inline-block; 581 | box-sizing: border-box; 582 | min-width: 100%; 583 | padding: 0.5em; 584 | margin-top: 0.5em; 585 | margin-bottom: 0.5em; 586 | font-size: 0.85em; 587 | white-space: pre !important; 588 | overflow-y: hidden; 589 | overflow-x: visible; 590 | background-color: var(--secondary-background); 591 | border: 1px solid var(--border); 592 | -webkit-border-radius: 6px; 593 | -moz-border-radius: 6px; 594 | border-radius: 6px; 595 | } 596 | 597 | .copyToClipBoardBtn { 598 | visibility: hidden; 599 | position: absolute; 600 | width: 24px; 601 | border-radius: 4px; 602 | background-image: var(--clipboard-image); 603 | right: 5px; 604 | top: 13px; 605 | background-color: var(--secondary-background); 606 | padding: 11px; 607 | border: 0; 608 | } 609 | 610 | .copyToClipBoard:hover .copyToClipBoardBtn { 611 | visibility: visible; 612 | } 613 | 614 | .pre-scrollable { 615 | max-height: 340px; 616 | overflow-y: scroll; } 617 | 618 | 619 | /* Nim line-numbered tables */ 620 | .line-nums-table { 621 | width: 100%; 622 | table-layout: fixed; } 623 | 624 | table.line-nums-table { 625 | border-radius: 4px; 626 | border: 1px solid #cccccc; 627 | background-color: ghostwhite; 628 | border-collapse: separate; 629 | margin-top: 15px; 630 | margin-bottom: 25px; } 631 | 632 | .line-nums-table tbody { 633 | border: none; } 634 | 635 | .line-nums-table td pre { 636 | border: none; 637 | background-color: transparent; } 638 | 639 | .line-nums-table td.blob-line-nums { 640 | width: 28px; } 641 | 642 | .line-nums-table td.blob-line-nums pre { 643 | color: #b0b0b0; 644 | -webkit-filter: opacity(75%); 645 | filter: opacity(75%); 646 | text-align: right; 647 | border-color: transparent; 648 | background-color: transparent; 649 | padding-left: 0px; 650 | margin-left: 0px; 651 | padding-right: 0px; 652 | margin-right: 0px; } 653 | 654 | 655 | table { 656 | max-width: 100%; 657 | background-color: transparent; 658 | margin-top: 0.5em; 659 | margin-bottom: 1.5em; 660 | border-collapse: collapse; 661 | border-color: var(--third-background); 662 | border-spacing: 0; 663 | font-size: 0.9em; 664 | } 665 | 666 | table th, table td { 667 | padding: 0px 0.5em 0px; 668 | border-color: var(--third-background); 669 | } 670 | 671 | table th { 672 | background-color: var(--third-background); 673 | border-color: var(--third-background); 674 | font-weight: bold; } 675 | 676 | table th.docinfo-name { 677 | background-color: transparent; 678 | text-align: right; 679 | } 680 | 681 | table tr:hover { 682 | background-color: var(--third-background); } 683 | 684 | 685 | /* rst2html default used to remove borders from tables and images */ 686 | .borderless, table.borderless td, table.borderless th { 687 | border: 0; } 688 | 689 | table.borderless td, table.borderless th { 690 | /* Override padding for "table.docutils td" with "! important". 691 | The right padding separates the table cells. */ 692 | padding: 0 0.5em 0 0 !important; } 693 | 694 | .admonition { 695 | padding: 0.3em; 696 | background-color: var(--secondary-background); 697 | border-left: 0.4em solid #7f7f84; 698 | margin-bottom: 0.5em; 699 | -webkit-box-shadow: 0 5px 8px -6px rgba(0,0,0,.2); 700 | -moz-box-shadow: 0 5px 8px -6px rgba(0,0,0,.2); 701 | box-shadow: 0 5px 8px -6px rgba(0,0,0,.2); 702 | } 703 | .admonition-info { 704 | border-color: var(--info-background); 705 | } 706 | .admonition-info-text { 707 | color: var(--info-background); 708 | } 709 | .admonition-warning { 710 | border-color: var(--warning-background); 711 | } 712 | .admonition-warning-text { 713 | color: var(--warning-background); 714 | } 715 | .admonition-error { 716 | border-color: var(--error-background); 717 | } 718 | .admonition-error-text { 719 | color: var(--error-background); 720 | } 721 | 722 | .first { 723 | /* Override more specific margin styles with "! important". */ 724 | margin-top: 0 !important; } 725 | 726 | .last, .with-subtitle { 727 | margin-bottom: 0 !important; } 728 | 729 | .hidden { 730 | display: none; } 731 | 732 | blockquote.epigraph { 733 | margin: 2em 5em; } 734 | 735 | dl.docutils dd { 736 | margin-bottom: 0.5em; } 737 | 738 | object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] { 739 | overflow: hidden; } 740 | 741 | 742 | div.figure { 743 | margin-left: 2em; 744 | margin-right: 2em; } 745 | 746 | div.footer, div.header { 747 | clear: both; 748 | text-align: center; 749 | color: #666; 750 | font-size: smaller; } 751 | 752 | div.footer { 753 | padding-top: 5em; } 754 | 755 | div.line-block { 756 | display: block; 757 | margin-top: 1em; 758 | margin-bottom: 1em; } 759 | 760 | div.line-block div.line-block { 761 | margin-top: 0; 762 | margin-bottom: 0; 763 | margin-left: 1.5em; } 764 | 765 | div.topic { 766 | margin: 2em; } 767 | 768 | div.search_results { 769 | background-color: var(--third-background); 770 | margin: 3em; 771 | padding: 1em; 772 | border: 1px solid #4d4d4d; } 773 | 774 | div#global-links ul { 775 | margin-left: 0; 776 | list-style-type: none; } 777 | 778 | div#global-links > simple-boot { 779 | margin-left: 3em; } 780 | 781 | hr.docutils { 782 | width: 75%; } 783 | 784 | img.align-left, .figure.align-left, object.align-left { 785 | clear: left; 786 | float: left; 787 | margin-right: 1em; } 788 | 789 | img.align-right, .figure.align-right, object.align-right { 790 | clear: right; 791 | float: right; 792 | margin-left: 1em; } 793 | 794 | img.align-center, .figure.align-center, object.align-center { 795 | display: block; 796 | margin-left: auto; 797 | margin-right: auto; } 798 | 799 | .align-left { 800 | text-align: left; } 801 | 802 | .align-center { 803 | clear: both; 804 | text-align: center; } 805 | 806 | .align-right { 807 | text-align: right; } 808 | 809 | /* reset inner alignment in figures */ 810 | div.align-right { 811 | text-align: inherit; } 812 | 813 | p.attribution { 814 | text-align: right; 815 | margin-left: 50%; } 816 | 817 | p.caption { 818 | font-style: italic; } 819 | 820 | p.credits { 821 | font-style: italic; 822 | font-size: smaller; } 823 | 824 | p.label { 825 | white-space: nowrap; } 826 | 827 | p.rubric { 828 | font-weight: bold; 829 | font-size: larger; 830 | color: maroon; 831 | text-align: center; } 832 | 833 | p.topic-title { 834 | font-weight: bold; } 835 | 836 | pre.address { 837 | margin-bottom: 0; 838 | margin-top: 0; 839 | font: inherit; } 840 | 841 | pre.literal-block, pre.doctest-block, pre.math, pre.code { 842 | margin-left: 2em; 843 | margin-right: 2em; } 844 | 845 | pre.code .ln { 846 | color: grey; } 847 | 848 | /* line numbers */ 849 | pre.code, code { 850 | background-color: #eeeeee; } 851 | 852 | pre.code .comment, code .comment { 853 | color: #5c6576; } 854 | 855 | pre.code .keyword, code .keyword { 856 | color: #3B0D06; 857 | font-weight: bold; } 858 | 859 | pre.code .literal.string, code .literal.string { 860 | color: #0c5404; } 861 | 862 | pre.code .name.builtin, code .name.builtin { 863 | color: #352b84; } 864 | 865 | pre.code .deleted, code .deleted { 866 | background-color: #DEB0A1; } 867 | 868 | pre.code .inserted, code .inserted { 869 | background-color: #A3D289; } 870 | 871 | span.classifier { 872 | font-style: oblique; } 873 | 874 | span.classifier-delimiter { 875 | font-weight: bold; } 876 | 877 | span.problematic { 878 | color: #b30000; } 879 | 880 | span.section-subtitle { 881 | /* font-size relative to parent (h1..h6 element) */ 882 | font-size: 80%; } 883 | 884 | span.DecNumber { 885 | color: var(--number); } 886 | 887 | span.BinNumber { 888 | color: var(--number); } 889 | 890 | span.HexNumber { 891 | color: var(--number); } 892 | 893 | span.OctNumber { 894 | color: var(--number); } 895 | 896 | span.FloatNumber { 897 | color: var(--number); } 898 | 899 | span.Identifier { 900 | color: var(--identifier); } 901 | 902 | span.Keyword { 903 | font-weight: 600; 904 | color: var(--keyword); } 905 | 906 | span.StringLit { 907 | color: var(--literal); } 908 | 909 | span.LongStringLit { 910 | color: var(--literal); } 911 | 912 | span.CharLit { 913 | color: var(--literal); } 914 | 915 | span.EscapeSequence { 916 | color: var(--escapeSequence); } 917 | 918 | span.Operator { 919 | color: var(--operator); } 920 | 921 | span.Punctuation { 922 | color: var(--punctuation); } 923 | 924 | span.Comment, span.LongComment { 925 | font-style: italic; 926 | font-weight: 400; 927 | color: var(--comment); } 928 | 929 | span.RegularExpression { 930 | color: darkviolet; } 931 | 932 | span.TagStart { 933 | color: darkviolet; } 934 | 935 | span.TagEnd { 936 | color: darkviolet; } 937 | 938 | span.Key { 939 | color: #252dbe; } 940 | 941 | span.Value { 942 | color: #252dbe; } 943 | 944 | span.RawData { 945 | color: var(--raw-data); } 946 | 947 | span.Assembler { 948 | color: #252dbe; } 949 | 950 | span.Preprocessor { 951 | color: #252dbe; } 952 | 953 | span.Directive { 954 | color: #252dbe; } 955 | 956 | span.option { 957 | font-weight: bold; 958 | font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace; 959 | color: var(--option); } 960 | 961 | span.Prompt { 962 | font-weight: bold; 963 | color: red; } 964 | 965 | span.ProgramOutput { 966 | font-weight: bold; 967 | color: #808080; } 968 | 969 | span.program { 970 | font-weight: bold; 971 | color: var(--program); 972 | text-decoration: underline; 973 | text-decoration-color: var(--hint); 974 | text-decoration-thickness: 0.05em; 975 | text-underline-offset: 0.15em; } 976 | 977 | span.Command, span.Rule, span.Hyperlink, 978 | span.Label, span.Reference, span.Other { 979 | color: var(--other); } 980 | 981 | /* Pop type, const, proc, and iterator defs in nim def blocks */ 982 | dt pre > span.Identifier, dt pre > span.Operator { 983 | color: var(--identifier); 984 | font-weight: 700; } 985 | 986 | dt pre > span.Keyword ~ span.Identifier, dt pre > span.Identifier ~ span.Identifier, 987 | dt pre > span.Operator ~ span.Identifier, dt pre > span.Other ~ span.Identifier { 988 | color: var(--identifier); 989 | font-weight: inherit; } 990 | 991 | /* Nim sprite for the footer (taken from main page favicon) */ 992 | .nim-sprite { 993 | display: inline-block; 994 | width: 51px; 995 | height: 14px; 996 | background-position: 0 0; 997 | background-size: 51px 14px; 998 | -webkit-filter: opacity(50%); 999 | filter: opacity(50%); 1000 | background-repeat: no-repeat; 1001 | background-image: var(--nim-sprite-base64); 1002 | margin-bottom: 5px; } 1003 | 1004 | span.pragmadots { 1005 | /* Position: relative frees us up to make the dots 1006 | look really nice without fucking up the layout and 1007 | causing bulging in the parent container */ 1008 | position: relative; 1009 | /* 1px down looks slightly nicer */ 1010 | top: 1px; 1011 | padding: 2px; 1012 | background-color: var(--third-background); 1013 | border-radius: 4px; 1014 | margin: 0 2px; 1015 | cursor: pointer; 1016 | font-size: 0.8em; } 1017 | 1018 | span.pragmadots:hover { 1019 | background-color: var(--hint); } 1020 | 1021 | span.pragmawrap { 1022 | display: none; } 1023 | 1024 | span.attachedType { 1025 | display: none; 1026 | visibility: hidden; } 1027 | -------------------------------------------------------------------------------- /docs/patgraph.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | patgraph 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 |
23 |

patgraph

24 |
25 |
26 |
27 | 28 | 33 |
34 | 39 |
40 | Search: 41 |
42 |
43 | Group by: 44 | 48 |
49 | 131 | 132 |
133 |
134 | Source   135 | Edit   136 | 137 |
138 | 139 |

140 |
141 |

Types

142 |
143 |
144 |
Direction = enum
145 |   Outgoing, Incoming
146 |
147 | 148 | 149 | Source   150 | Edit   151 | 152 |
153 |
154 |
155 |
Graph[N; E] = object
156 |   
157 |
158 | 159 | A graph datastructure using an adjacency list representation 160 | Source   161 | Edit   162 | 163 |
164 |
165 | 166 |
167 |
168 |
169 |

Consts

170 |
171 |
172 |
invalid = 2147483647'i32
173 |
174 | 175 | An invalid index used to denote absence of an edge, for example to end an adjacency list. 176 | Source   177 | Edit   178 | 179 |
180 |
181 | 182 |
183 |
184 |
185 |

Procs

186 |
187 |
188 |
189 |
proc `[]`[N, E](self: Graph[N, E]; a: Natural): N
190 |
191 | 192 | Access the weight for node a. 193 | Source   194 | Edit   195 | 196 |
197 |
198 |
199 |
proc `[]`[N, E](self: var Graph[N, E]; a: Natural): var N
200 |
201 | 202 | Access the weight for node a, mutably. 203 | Source   204 | Edit   205 | 206 |
207 |
208 | 209 |
210 |
211 |
212 |
proc `[]=`[N, E](self: var Graph[N, E]; a: Natural; v: N)
213 |
214 | 215 | Set the weight for node a. 216 | Source   217 | Edit   218 | 219 |
220 |
221 | 222 |
223 |
224 |
225 |
proc addEdge[N, E](self: var Graph[N, E]; a, b: Natural; weight: E)
226 |
227 | 228 | Add an edge from a to b to the graph, with its associated data weight. 229 | Source   230 | Edit   231 | 232 |
233 |
234 | 235 |
236 |
237 |
238 |
proc addNode[N, E](self: var Graph[N, E]; weight: N): int
239 |
240 | 241 | Add a node (also called vertex) with associated data weight to the graph. Return the index of the new node. 242 | Source   243 | Edit   244 | 245 |
246 |
247 | 248 |
249 |
250 |
251 |
proc extendWithEdges[N, E](self: var Graph[N, E];
252 |                            iterable: openArray[(int, int)])
253 |
254 | 255 | 256 | Source   257 | Edit   258 | 259 |
260 |
261 |
262 |
proc extendWithEdges[N, E](self: var Graph[N, E];
263 |                            iterable: openArray[(int, int, E)])
264 |
265 | 266 |

Extend the graph from an iterable of edges.

267 |

Node weights N are set to default values. Edge weights E may either be specified in the list, or they are filled with default values.

268 |

Nodes are inserted automatically to match the edges.

269 | 270 | Source   271 | Edit   272 | 273 |
274 |
275 | 276 |
277 |
278 |
279 |
proc graphFromEdges[N, E](iterable: openArray[(int, int)]): Graph[N, E]
280 |
281 | 282 | 283 | Source   284 | Edit   285 | 286 |
287 |
288 |
289 |
proc graphFromEdges[N, E](iterable: openArray[(int, int, E)]): Graph[N, E]
290 |
291 | 292 |

Create a new Graph from an iterable of edges.

293 |

Node weights N are set to default values. Edge weights E may either be specified in the list, or they are filled with default values.

294 |

Nodes are inserted automatically to match the edges.

295 |
import graph
296 | 
297 | let graph2 = graphFromEdges[int, int](@[
298 |    (0, 1), (0, 2), (0, 3),
299 |    (1, 2), (1, 3),
300 |    (2, 3)])
301 | Source   302 | Edit   303 | 304 |
305 |
306 | 307 |
308 |
309 |
310 |
proc len[N, E](self: Graph[N, E]): int
311 |
312 | 313 | Return the number of nodes (vertices) in the graph. 314 | Source   315 | Edit   316 | 317 |
318 |
319 | 320 |
321 |
322 |
323 |
proc updateEdge[N, E](self: var Graph[N, E]; a, b: Natural; weight: E)
324 |
325 | 326 |

Add or update an edge from a to b. If the edge already exists, its weight is updated.

327 |

Return the index of the affected edge.

328 |

Computes in O(e') time, where e' is the number of edges connected to a.

329 | 330 | Source   331 | Edit   332 | 333 |
334 |
335 | 336 |
337 | 338 |
339 |
340 |
341 |

Iterators

342 |
343 |
344 |
345 |
iterator edges[N, E](self: Graph[N, E]; a: Natural; dir = Outgoing): (int, E)
346 |
347 | 348 |

Return all neighbors that have an edge between them and a, in the specified direction.

349 |

Neighbors are listed in reverse order of their addition to the graph, so the most recently added edge's neighbor is listed first.

350 | 351 | Source   352 | Edit   353 | 354 |
355 |
356 | 357 |
358 |
359 |
360 |
iterator neighbors[N, E](self: Graph[N, E]; a: Natural; dir = Outgoing): int
361 |
362 | 363 |

Return all neighbors that have an edge between them and a, in the specified direction.

364 |

Neighbors are listed in reverse order of their addition to the graph, so the most recently added edge's neighbor is listed first.

365 | 366 | Source   367 | Edit   368 | 369 |
370 |
371 | 372 |
373 | 374 |
375 |
376 | 377 |
378 |
379 | 380 | 385 |
386 |
387 | 388 | 389 | 390 | 391 | 392 | 393 | -------------------------------------------------------------------------------- /patgraph.nim: -------------------------------------------------------------------------------- 1 | type 2 | Direction* = enum 3 | Outgoing, Incoming 4 | 5 | Node[N] = object ## The graph's node type. 6 | weight: N ## Associated node data. 7 | next: array[2, int32] ## Next edge in outgoing and incoming edge lists. 8 | 9 | Edge[E] = object ## The graph's edge type. 10 | weight: E ## Associated edge data. 11 | next: array[2, int32] ## Next edge in outgoing and incoming edge lists. 12 | node: array[2, int32] ## Start and End node index 13 | 14 | Graph*[N, E] = object ## A graph datastructure using an adjacency list representation 15 | nodes: seq[Node[N]] 16 | edges: seq[Edge[E]] 17 | 18 | const 19 | invalid* = high(int32) ## An invalid index used to denote absence of an edge, for example 20 | ## to end an adjacency list. 21 | 22 | proc len*[N, E](self: Graph[N, E]): int = 23 | ## Return the number of nodes (vertices) in the graph. 24 | self.nodes.len 25 | 26 | proc addNode*[N, E](self: var Graph[N, E], weight: N): int = 27 | ## Add a node (also called vertex) with associated data `weight` to the graph. 28 | ## Return the index of the new node. 29 | let node = Node[N](weight: weight, next: [invalid, invalid]) 30 | result = self.nodes.len 31 | self.nodes.add(node) 32 | 33 | proc `[]`*[N, E](self: Graph[N, E], a: Natural): N = 34 | ## Access the weight for node `a`. 35 | self.nodes[a].weight 36 | 37 | proc `[]`*[N, E](self: var Graph[N, E], a: Natural): var N = 38 | ## Access the weight for node `a`, mutably. 39 | self.nodes[a].weight 40 | 41 | proc `[]=`*[N, E](self: var Graph[N, E], a: Natural, v: N) = 42 | ## Set the weight for node `a`. 43 | self.nodes[a].weight = v 44 | 45 | proc addEdge*[N, E](self: var Graph[N, E], a, b: Natural, weight: E) = 46 | ## Add an edge from `a` to `b` to the graph, with its associated 47 | ## data `weight`. 48 | assert(max(a, b) < self.nodes.len, "node indices out of bounds") 49 | let result = self.edges.len 50 | var edge = Edge[E]( 51 | weight: weight, 52 | node: [a.int32, b.int32], 53 | next: [invalid, invalid]) 54 | template an: untyped = self.nodes[a] 55 | template bn: untyped = self.nodes[b] 56 | if a == b: # disallow self-loops? 57 | edge.next = an.next 58 | an.next[0] = result.int32 59 | an.next[1] = result.int32 60 | else: 61 | # a and b are different indices 62 | edge.next = [an.next[0], bn.next[1]] 63 | an.next[0] = result.int32 64 | bn.next[1] = result.int32 65 | self.edges.add(edge) 66 | 67 | proc findEdge[N, E](self: Graph[N, E], a, b: Natural): int = 68 | ## Lookup an edge from `a` to `b`. 69 | ## 70 | ## Computes in **O(e')** time, where **e'** is the number of edges 71 | ## connected to `a`. 72 | assert(max(a, b) < self.nodes.len, "node indices out of bounds") 73 | let node = self.nodes[a] 74 | var edix = node.next[0] 75 | while edix < self.edges.len: 76 | let edge = self.edges[int(edix)] 77 | if edge.node[1] == b: 78 | return edix 79 | edix = edge.next[0] 80 | result = invalid 81 | 82 | proc updateEdge*[N, E](self: var Graph[N, E], a, b: Natural, weight: E) = 83 | ## Add or update an edge from `a` to `b`. 84 | ## If the edge already exists, its weight is updated. 85 | ## 86 | ## Return the index of the affected edge. 87 | ## 88 | ## Computes in **O(e')** time, where **e'** is the number of edges 89 | ## connected to `a`. 90 | assert(max(a, b) < self.nodes.len, "node indices out of bounds") 91 | let ix = self.findEdge(a, b) 92 | if ix < self.nodes.len: 93 | self.edges[int(ix)] = weight 94 | else: 95 | self.addEdge(a, b, weight) 96 | 97 | proc extendWithEdges*[N, E](self: var Graph[N, E], iterable: openArray[(int, 98 | int, E)]) = 99 | ## Extend the graph from an iterable of edges. 100 | ## 101 | ## Node weights `N` are set to default values. 102 | ## Edge weights `E` may either be specified in the list, 103 | ## or they are filled with default values. 104 | ## 105 | ## Nodes are inserted automatically to match the edges. 106 | for (source, target, weight) in iterable.items: 107 | let nx = max(source, target) 108 | while nx >= self.nodes.len: 109 | discard self.addNode(default(N)) 110 | self.addEdge(source, target, weight) 111 | 112 | proc extendWithEdges*[N, E](self: var Graph[N, E], iterable: openArray[(int, int)]) = 113 | for (source, target) in iterable.items: 114 | let nx = max(source, target) 115 | while nx >= self.nodes.len: 116 | discard self.addNode(default(N)) 117 | self.addEdge(source, target, default(E)) 118 | 119 | proc graphFromEdges*[N, E](iterable: openArray[(int, int, E)]): Graph[N, E] = 120 | ## Create a new `Graph` from an iterable of edges. 121 | ## 122 | ## Node weights `N` are set to default values. 123 | ## Edge weights `E` may either be specified in the list, 124 | ## or they are filled with default values. 125 | ## 126 | ## Nodes are inserted automatically to match the edges. 127 | ## 128 | ## .. code-block:: Nim 129 | ## import graph 130 | ## 131 | ## let graph2 = graphFromEdges[int, int](@[ 132 | ## (0, 1), (0, 2), (0, 3), 133 | ## (1, 2), (1, 3), 134 | ## (2, 3)]) 135 | ## 136 | result = Graph[N, E](nodes: @[], edges: @[]) 137 | result.extendWithEdges(iterable) 138 | 139 | proc graphFromEdges*[N, E](iterable: openArray[(int, int)]): Graph[N, E] = 140 | result = Graph[N, E](nodes: @[], edges: @[]) 141 | result.extendWithEdges(iterable) 142 | 143 | iterator neighbors*[N, E](self: Graph[N, E], a: Natural, dir = Outgoing): int = 144 | ## Return all neighbors that have an edge between them and 145 | ## `a`, in the specified direction. 146 | ## 147 | ## Neighbors are listed in reverse order of their 148 | ## addition to the graph, so the most recently added edge's neighbor is 149 | ## listed first. 150 | assert(a < self.nodes.len, "node index out of bounds") 151 | var edix = self.nodes[a].next[dir.ord] 152 | while edix < self.edges.len: 153 | let edge = self.edges[int(edix)] 154 | yield edge.node[1 - dir.ord].int 155 | edix = edge.next[dir.ord] 156 | 157 | iterator edges*[N, E](self: Graph[N, E], a: Natural, dir = Outgoing): (int, E) = 158 | ## Return all neighbors that have an edge between them and 159 | ## `a`, in the specified direction. 160 | ## 161 | ## Neighbors are listed in reverse order of their 162 | ## addition to the graph, so the most recently added edge's neighbor is 163 | ## listed first. 164 | assert(a < self.nodes.len, "node index out of bounds") 165 | var edix = self.nodes[a].next[dir.ord] 166 | while edix < self.edges.len: 167 | let edge = self.edges[int(edix)] 168 | yield (edge.node[1 - dir.ord].int, edge.weight) 169 | edix = edge.next[dir.ord] 170 | 171 | proc `$`[N, E](self: Graph[N, E]): string = 172 | for i in 0 ..< len(self): 173 | if result.len > 0: result.add("\n") 174 | var row = "" 175 | for (j, w) in edges(self, i): 176 | if row.len > 0: row.add(", ") 177 | row.add($self[j] & ": " & $w) 178 | result.add($self[i] & " -> [" & row & "]") 179 | 180 | when isMainModule: 181 | var graph: Graph[string, float] 182 | 183 | let nodeA = graph.addNode("a") 184 | let nodeB = graph.addNode("b") 185 | let nodeC = graph.addNode("c") 186 | let nodeD = graph.addNode("d") 187 | let nodeE = graph.addNode("e") 188 | let nodeF = graph.addNode("f") 189 | let nodeG = graph.addNode("g") 190 | let nodeH = graph.addNode("h") 191 | 192 | graph.extendWithEdges([ 193 | (nodeA, nodeB, 0.0), 194 | (nodeA, nodeC, 0.25), 195 | (nodeB, nodeD, 0.5), 196 | (nodeB, nodeE, 0.75), 197 | (nodeC, nodeF, 1.0), 198 | (nodeC, nodeG, 1.25), 199 | (nodeE, nodeF, 1.5), 200 | (nodeE, nodeH, 1.75), 201 | (nodeF, nodeG, 2.0)]) 202 | 203 | block: #a 204 | var nodes: seq[int] 205 | for node in graph.neighbors(nodeA): 206 | nodes.add node 207 | assert nodes == @[nodeC, nodeB] 208 | block: #b 209 | var nodes: seq[int] 210 | for node in graph.neighbors(nodeB): 211 | nodes.add node 212 | assert nodes == @[nodeE, nodeD] 213 | block: #c 214 | var nodes: seq[int] 215 | for node in graph.neighbors(nodeC): 216 | nodes.add node 217 | assert nodes == @[nodeG, nodeF] 218 | block: #e 219 | var edges: seq[(int, float)] 220 | for edge in edges(graph, nodeE): 221 | edges.add edge 222 | assert edges == @[(nodeH, 1.75), (nodeF, 1.5)] 223 | block: #f 224 | var edges: seq[(int, float)] 225 | for edge in edges(graph, nodeF, Incoming): 226 | edges.add edge 227 | assert edges == @[(nodeE, 1.5), (nodeC, 1.0)] 228 | 229 | #echo graph 230 | 231 | const graph2 = graphFromEdges[string, float]({ 232 | 0: 1, 0: 2, 1: 3, 1: 4, 233 | 2: 5, 2: 6, 4: 5, 234 | 4: 7, 5: 6}) 235 | 236 | #[ 237 | (nodes: @[ 238 | 0: (weight: "a", next: [1, 2147483647]), 239 | 1: (weight: "b", next: [3, 0]), 240 | 2: (weight: "c", next: [5, 1]), 241 | 3: (weight: "d", next: [2147483647, 2]), 242 | 4: (weight: "e", next: [7, 3]), 243 | 5: (weight: "f", next: [8, 7]), 244 | 6: (weight: "g", next: [2147483647, 8]), 245 | 7: (weight: "h", next: [2147483647, 6])], 246 | edges: @[ 247 | 0: (weight: 1.0, next: [2147483647, 2147483647], node: [0, 1]), 248 | 1: (weight: 1.0, next: [0, 2147483647], node: [0, 2]), 249 | 2: (weight: 1.0, next: [2147483647, 2147483647], node: [1, 3]), 250 | 3: (weight: 1.0, next: [2, 2147483647], node: [1, 4]), 251 | 4: (weight: 1.0, next: [2147483647, 2147483647], node: [2, 5]), 252 | 5: (weight: 1.0, next: [4, 2147483647], node: [2, 6]), 253 | 6: (weight: 1.0, next: [2147483647, 2147483647], node: [4, 7]), 254 | 7: (weight: 1.0, next: [6, 4], node: [4, 5]), 255 | 8: (weight: 1.0, next: [2147483647, 5], node: [5, 6])]) 256 | ]# 257 | -------------------------------------------------------------------------------- /patgraph.nimble: -------------------------------------------------------------------------------- 1 | # Package 2 | 3 | version = "0.2.0" 4 | author = "Antonis" 5 | description = "graph data structure library" 6 | license = "MIT" 7 | 8 | # Dependencies 9 | 10 | requires "nim >= 1.0.9" 11 | 12 | import os 13 | 14 | const 15 | ProjectUrl = "https://github.com/planetis-m/patgraph" 16 | PkgDir = thisDir().quoteShell 17 | DocsDir = PkgDir / "docs" 18 | 19 | task docs, "Generate documentation": 20 | # https://nim-lang.github.io/Nim/docgen.html 21 | withDir(PkgDir): 22 | let tmp = "patgraph" 23 | let doc = DocsDir / (tmp & ".html") 24 | let src = tmp & ".nim" 25 | # Generate the docs for {src} 26 | exec("nim doc --verbosity:0 --git.url:" & ProjectUrl & 27 | " --git.devel:master --git.commit:master --out:" & doc & " " & src) 28 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | 2 | # Patgraph — graph data structure library for Nim 3 | 4 | ## About 5 | This nimble package contains a ``Graph[N, E]`` graph datastructure using an adjacency list representation. 6 | It is based on [petgraph's](https://github.com/petgraph/petgraph/blob/master/src/graph_impl/mod.rs) library. 7 | 8 | [Documentation](https://planetis-m.github.io/patgraph/patgraph.html) 9 | 10 | ### Example 11 | 12 | ```nim 13 | import patgraph 14 | 15 | var graph: Graph[string, float] 16 | 17 | let nodeA = graph.addNode("a") 18 | let nodeB = graph.addNode("b") 19 | let nodeC = graph.addNode("c") 20 | let nodeD = graph.addNode("d") 21 | let nodeE = graph.addNode("e") 22 | let nodeF = graph.addNode("f") 23 | let nodeG = graph.addNode("g") 24 | let nodeH = graph.addNode("h") 25 | 26 | graph.extendWithEdges([ 27 | (nodeA, nodeB, 0.0), 28 | (nodeA, nodeC, 0.25), 29 | (nodeB, nodeD, 0.5), 30 | (nodeB, nodeE, 0.75), 31 | (nodeC, nodeF, 1.0), 32 | (nodeC, nodeG, 1.25), 33 | (nodeE, nodeF, 1.5), 34 | (nodeE, nodeH, 1.75), 35 | (nodeF, nodeG, 2.0)]) 36 | 37 | echo graph 38 | # a -> [c: 0.25, b: 0.0] 39 | # b -> [e: 0.75, d: 0.5] 40 | # c -> [g: 1.25, f: 1.0] 41 | # d -> [] 42 | # e -> [h: 1.75, f: 1.5] 43 | # f -> [g: 2.0] 44 | # g -> [] 45 | # h -> [] 46 | 47 | for n in graph.neighbors(nodeC): 48 | echo graph[n] 49 | # g 50 | # f 51 | ``` 52 | 53 | ### License 54 | 55 | This library is distributed under the MIT license. For more information see `LICENSE`. 56 | --------------------------------------------------------------------------------