mirror of
https://github.com/expressjs/express.git
synced 2026-02-26 17:15:03 +00:00
Compare commits
3984 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bc38d896ea | ||
|
|
b2518fe135 | ||
|
|
63286e1192 | ||
|
|
c00f2f8596 | ||
|
|
91891e3aee | ||
|
|
728917164c | ||
|
|
bf1980f1b4 | ||
|
|
3c1a964362 | ||
|
|
947fb8b274 | ||
|
|
c5193536e5 | ||
|
|
d08fd64190 | ||
|
|
2470ae6c72 | ||
|
|
916a75cf19 | ||
|
|
daacb749c1 | ||
|
|
f29399c4e1 | ||
|
|
f6ac068ab0 | ||
|
|
7eb65eeca2 | ||
|
|
178fe15091 | ||
|
|
381f278d0a | ||
|
|
534fa181c6 | ||
|
|
80847d8c82 | ||
|
|
bb8abf1f90 | ||
|
|
cf41a8f254 | ||
|
|
1716e3b067 | ||
|
|
12f92a50dc | ||
|
|
51d33edb79 | ||
|
|
2a0c35a108 | ||
|
|
d4de82b853 | ||
|
|
e2102263ce | ||
|
|
d2b1a89b4a | ||
|
|
d9937c628a | ||
|
|
276db8c49a | ||
|
|
1768d94a1a | ||
|
|
6bc7574ab5 | ||
|
|
3dca534995 | ||
|
|
4b1b8e420f | ||
|
|
70767b19ac | ||
|
|
7d277c1c15 | ||
|
|
fa1fcd9fec | ||
|
|
2de6514b4b | ||
|
|
d07c06363f | ||
|
|
4e97533fd2 | ||
|
|
d7d6219a1e | ||
|
|
9b18461bbc | ||
|
|
b77aa38c98 | ||
|
|
cbb251377e | ||
|
|
d6ed469de3 | ||
|
|
49284c236b | ||
|
|
be18487f7d | ||
|
|
094ff11949 | ||
|
|
d2d0afff64 | ||
|
|
33bb8fc4b6 | ||
|
|
b97f6eb506 | ||
|
|
621d074bd8 | ||
|
|
d7e7b2e7d7 | ||
|
|
2d6b735b4f | ||
|
|
a3115882d4 | ||
|
|
3d188fe13e | ||
|
|
8327708ec2 | ||
|
|
c8640b3465 | ||
|
|
3ce5f9b493 | ||
|
|
46f0bfc65f | ||
|
|
0b49e7f1fd | ||
|
|
f6f47f428c | ||
|
|
20635d03fc | ||
|
|
4d032cda05 | ||
|
|
4127ba10b0 | ||
|
|
b6ae091bdf | ||
|
|
a206b4e273 | ||
|
|
2b2733c235 | ||
|
|
7fb7bcc0f7 | ||
|
|
0299bee8fa | ||
|
|
6a581c9961 | ||
|
|
4986b1cb4c | ||
|
|
3de4e4276d | ||
|
|
27f195374d | ||
|
|
ff0de5eb27 | ||
|
|
f4ddef1570 | ||
|
|
9eafaa23d8 | ||
|
|
0b12cc0cac | ||
|
|
fdd0ccabe8 | ||
|
|
8c36eab679 | ||
|
|
5c145b5490 | ||
|
|
d7bef52591 | ||
|
|
1576a95e87 | ||
|
|
7f92fe66e0 | ||
|
|
0cf02d4667 | ||
|
|
ef52b80d75 | ||
|
|
1ca01c0c47 | ||
|
|
fbceae2716 | ||
|
|
ad3ca25c58 | ||
|
|
666ffc62d8 | ||
|
|
6680132392 | ||
|
|
f13f4652da | ||
|
|
059c068c7b | ||
|
|
49947f1476 | ||
|
|
0dddd772c0 | ||
|
|
0f87c6f392 | ||
|
|
1643ae442c | ||
|
|
2594f3103b | ||
|
|
8473b3c338 | ||
|
|
59cb99e9be | ||
|
|
7119f2b16d | ||
|
|
a57efea173 | ||
|
|
4a4ca7347a | ||
|
|
570f60d36e | ||
|
|
d13e613584 | ||
|
|
9204e1f42a | ||
|
|
22ca953e96 | ||
|
|
7989c883fe | ||
|
|
e05a52078a | ||
|
|
ddac571fdf | ||
|
|
982d24b475 | ||
|
|
552b441f8a | ||
|
|
e8f8ea7e05 | ||
|
|
4f5b27dd81 | ||
|
|
cca88a7c47 | ||
|
|
ea427c1bb4 | ||
|
|
0bd6c311cf | ||
|
|
7f606ebf29 | ||
|
|
a3b5adcf4a | ||
|
|
1150ca7264 | ||
|
|
4aea02310a | ||
|
|
17cea29013 | ||
|
|
8449f23f0d | ||
|
|
2cb029f896 | ||
|
|
7e32fa1be6 | ||
|
|
1168d0bb8b | ||
|
|
7d0f1c3db9 | ||
|
|
19abf7684b | ||
|
|
c652cf7eed | ||
|
|
19fd6f85b0 | ||
|
|
b6c5b0511f | ||
|
|
0e42a37edd | ||
|
|
b24ed15878 | ||
|
|
12e070e39a | ||
|
|
b886eb52cf | ||
|
|
d8237b976b | ||
|
|
15590d75b2 | ||
|
|
e8b471ff4f | ||
|
|
767db01b79 | ||
|
|
df413a41f3 | ||
|
|
52775a52ad | ||
|
|
112bc92d78 | ||
|
|
d8df26680f | ||
|
|
1854a5d35f | ||
|
|
54d3ffa9a0 | ||
|
|
0ee4dd82b5 | ||
|
|
454c4b2350 | ||
|
|
696e150f0a | ||
|
|
819265c7ae | ||
|
|
baf8b14a71 | ||
|
|
06e7685d65 | ||
|
|
8858f20d93 | ||
|
|
65f67e2ec0 | ||
|
|
8e63521f68 | ||
|
|
9f4968aaa3 | ||
|
|
afea3c0ae8 | ||
|
|
edaabe66cf | ||
|
|
f724730e1a | ||
|
|
e49d0dc9e3 | ||
|
|
e7a3fbaf48 | ||
|
|
1a9a837c45 | ||
|
|
ab8d116f42 | ||
|
|
d0b6b3dfcf | ||
|
|
f34944c539 | ||
|
|
11c74d72eb | ||
|
|
035685918c | ||
|
|
88cffadcaa | ||
|
|
3b7ca43170 | ||
|
|
7cd86a01da | ||
|
|
dc054d190a | ||
|
|
9019424725 | ||
|
|
928952e7f0 | ||
|
|
a28b7a85cf | ||
|
|
3fc8dc54ee | ||
|
|
0d77305a1a | ||
|
|
323c185079 | ||
|
|
1d0da9036b | ||
|
|
683ba1cd75 | ||
|
|
e4ff5281c9 | ||
|
|
7414a1f463 | ||
|
|
fd3b40533b | ||
|
|
21bb2ef30e | ||
|
|
da4c639954 | ||
|
|
d046208ca2 | ||
|
|
04f383087f | ||
|
|
fd86ab8da2 | ||
|
|
e29fa25bb4 | ||
|
|
b43205ca98 | ||
|
|
112dbb2ab4 | ||
|
|
3e32721e24 | ||
|
|
8ba3f39b33 | ||
|
|
82bdbad5e0 | ||
|
|
d29cf4d5e3 | ||
|
|
1623936a25 | ||
|
|
fa6a40526a | ||
|
|
c6e6203020 | ||
|
|
997a558a73 | ||
|
|
a01326adac | ||
|
|
76e8bfa1dc | ||
|
|
8dc67af606 | ||
|
|
996d319263 | ||
|
|
1c3bd36be6 | ||
|
|
4ea6f21b02 | ||
|
|
916c53737d | ||
|
|
ec5b9f5c61 | ||
|
|
b2382a7336 | ||
|
|
f684a64df7 | ||
|
|
5d03d0eac8 | ||
|
|
544c6665f5 | ||
|
|
cf8005e63f | ||
|
|
25ef8425d2 | ||
|
|
577cc1d1a0 | ||
|
|
3c87a6aede | ||
|
|
7c1f90bf16 | ||
|
|
7bcf5f5085 | ||
|
|
4fe1073f10 | ||
|
|
968b00c3d7 | ||
|
|
ef497fdae4 | ||
|
|
bcdeee2df5 | ||
|
|
23a49ff61e | ||
|
|
b4b2efee0f | ||
|
|
92c45199bd | ||
|
|
bd6908516d | ||
|
|
e6eeec3f03 | ||
|
|
269dc5323f | ||
|
|
efbc3f95ee | ||
|
|
99e839a274 | ||
|
|
32dbda1460 | ||
|
|
bcee730354 | ||
|
|
abe0ffa311 | ||
|
|
b601d64203 | ||
|
|
f381f2d9b6 | ||
|
|
12507cfcd0 | ||
|
|
185e327e29 | ||
|
|
c468f5ff20 | ||
|
|
ce3d1fe07e | ||
|
|
3136e98dce | ||
|
|
d1b1dfd472 | ||
|
|
ca306eace1 | ||
|
|
fd35351594 | ||
|
|
8a15f83d72 | ||
|
|
d91bf81c31 | ||
|
|
fd27f1f4e1 | ||
|
|
f0ad557987 | ||
|
|
9bb47fba30 | ||
|
|
78d489d730 | ||
|
|
8ffb9f9477 | ||
|
|
9cb147370e | ||
|
|
81036aa639 | ||
|
|
e7caaf6757 | ||
|
|
a525252690 | ||
|
|
0ebfc6b7bf | ||
|
|
381b3b0f77 | ||
|
|
ba8a4c5a8d | ||
|
|
2cccbc186e | ||
|
|
83bbf0902d | ||
|
|
10618ced22 | ||
|
|
7f26cfca91 | ||
|
|
b89a597029 | ||
|
|
746044b6c2 | ||
|
|
bdfd288eec | ||
|
|
7e01531e50 | ||
|
|
3ffceff3ed | ||
|
|
75422c16bf | ||
|
|
e66667e465 | ||
|
|
7d6208e0af | ||
|
|
f498b660da | ||
|
|
e606d99dc8 | ||
|
|
6aba1b4c49 | ||
|
|
6ee9433f29 | ||
|
|
ffe663aedf | ||
|
|
2a105df9f2 | ||
|
|
9c731f1883 | ||
|
|
5a4e9125de | ||
|
|
9db1367c2d | ||
|
|
8258ce14f4 | ||
|
|
ac573cf830 | ||
|
|
e799c0fb7b | ||
|
|
73c5533e66 | ||
|
|
3b1f747f96 | ||
|
|
9e9827d236 | ||
|
|
a76d508424 | ||
|
|
c361a06bd4 | ||
|
|
3428543bb8 | ||
|
|
9cdbc80522 | ||
|
|
6775658ed5 | ||
|
|
7df7f7a575 | ||
|
|
7daae1912b | ||
|
|
3205f68510 | ||
|
|
898dcfac8b | ||
|
|
b1efa19f97 | ||
|
|
b45fd70f99 | ||
|
|
7f6c7a19c6 | ||
|
|
142462d539 | ||
|
|
f881784e9b | ||
|
|
5af625903f | ||
|
|
dc94f305cc | ||
|
|
8060a49c6c | ||
|
|
4d3e0d88a2 | ||
|
|
253ce4837a | ||
|
|
ad05eb8222 | ||
|
|
21393c244c | ||
|
|
4279e6ef45 | ||
|
|
3db6dd752f | ||
|
|
fcbe68eeb5 | ||
|
|
5019f38e29 | ||
|
|
9bf1247716 | ||
|
|
2fd31f6ea6 | ||
|
|
9cf7bba8f0 | ||
|
|
2e257d1cf7 | ||
|
|
980a15d847 | ||
|
|
56831d7799 | ||
|
|
6d65ae5ba6 | ||
|
|
c919b4a573 | ||
|
|
fe6f392c2d | ||
|
|
bffb71d4c8 | ||
|
|
3b34a537ee | ||
|
|
ad79ce9c4b | ||
|
|
721f6388c3 | ||
|
|
402ec83157 | ||
|
|
298ac11018 | ||
|
|
bb6e207336 | ||
|
|
f433b7c7cf | ||
|
|
a94278abd1 | ||
|
|
f9ec70edd0 | ||
|
|
9e5a758e7c | ||
|
|
492e933796 | ||
|
|
8ccd9d0eb5 | ||
|
|
16fdc11ccb | ||
|
|
a7cd5a2553 | ||
|
|
9e6b881f85 | ||
|
|
95fa49147b | ||
|
|
f665c57c5c | ||
|
|
9024d24e81 | ||
|
|
f92a7ad0a3 | ||
|
|
db4448dda8 | ||
|
|
0dc5836d5e | ||
|
|
8751d7ecf8 | ||
|
|
c21226aa7c | ||
|
|
3e358458f4 | ||
|
|
766b3aecf7 | ||
|
|
8ab96ab80d | ||
|
|
1f2e00ef8d | ||
|
|
b49453cf0d | ||
|
|
faffcb889c | ||
|
|
311e83e591 | ||
|
|
3c0ec59432 | ||
|
|
d4a2843500 | ||
|
|
fb2d918056 | ||
|
|
e7ad49bbbe | ||
|
|
ad9a414fae | ||
|
|
c18c2a8e68 | ||
|
|
1d54868c12 | ||
|
|
dfefea5e9d | ||
|
|
3fbab91231 | ||
|
|
f7e73e2da0 | ||
|
|
867728b5ab | ||
|
|
87e02c30e7 | ||
|
|
c3470c9c96 | ||
|
|
7f049164b7 | ||
|
|
4e12a72873 | ||
|
|
91e0c27252 | ||
|
|
db4a061ed6 | ||
|
|
f6bbeafd26 | ||
|
|
f14e39d451 | ||
|
|
084f5d891b | ||
|
|
b0f72e13d9 | ||
|
|
8d7d80ef9d | ||
|
|
cf5de082b5 | ||
|
|
1944451082 | ||
|
|
602e5a8200 | ||
|
|
83b8b7acb7 | ||
|
|
e660f19507 | ||
|
|
ff412b927d | ||
|
|
392ef1eb06 | ||
|
|
dcecdc9be6 | ||
|
|
ed69b68892 | ||
|
|
42b982e13c | ||
|
|
e7e2592357 | ||
|
|
739586f96a | ||
|
|
4c0f1f53d3 | ||
|
|
359f12791a | ||
|
|
9354ab62dd | ||
|
|
23ff74bb3f | ||
|
|
98d17e2293 | ||
|
|
ababa6ae5b | ||
|
|
097cd0c242 | ||
|
|
b91cd66fc5 | ||
|
|
787d630157 | ||
|
|
1f938c560a | ||
|
|
a96924a555 | ||
|
|
33dc6629ff | ||
|
|
1b3fb0af8c | ||
|
|
12da523ff7 | ||
|
|
0f49d80623 | ||
|
|
1717516a78 | ||
|
|
328c6d3060 | ||
|
|
566720be15 | ||
|
|
65f13c3cc6 | ||
|
|
31b2e2d7b4 | ||
|
|
8fe8d74056 | ||
|
|
fcc4742056 | ||
|
|
d98e2e7498 | ||
|
|
d37ffa1149 | ||
|
|
cf709f3021 | ||
|
|
7515ee6a78 | ||
|
|
b8d6d258b0 | ||
|
|
35c50601bd | ||
|
|
f7be983a77 | ||
|
|
bc9bcb0317 | ||
|
|
a2553126dd | ||
|
|
0639c45acd | ||
|
|
e4302b2120 | ||
|
|
3d6b4ba013 | ||
|
|
920f46ad65 | ||
|
|
35a66d8a14 | ||
|
|
4e1e252e17 | ||
|
|
0461e55380 | ||
|
|
8dc4ff26f9 | ||
|
|
6f9e927633 | ||
|
|
40a43eb753 | ||
|
|
a8bb4bab2b | ||
|
|
417999884b | ||
|
|
17a739e35f | ||
|
|
555ffe37b2 | ||
|
|
165578a1da | ||
|
|
0bbbc84959 | ||
|
|
92d37671c5 | ||
|
|
2901bd6916 | ||
|
|
66b38b58bc | ||
|
|
dc31ea34b8 | ||
|
|
d58ca520c8 | ||
|
|
4b646c2f8d | ||
|
|
35757ed1f5 | ||
|
|
fed0d5df5c | ||
|
|
c99fa6a192 | ||
|
|
0d468cbe6c | ||
|
|
f92ba6d0cf | ||
|
|
0408e3727e | ||
|
|
be997fd654 | ||
|
|
5c3852b91c | ||
|
|
3c7310ebcb | ||
|
|
61f2929a35 | ||
|
|
c054581370 | ||
|
|
dbea8312bb | ||
|
|
1536a2196e | ||
|
|
374e6c3789 | ||
|
|
203fb05d3e | ||
|
|
ce8555c690 | ||
|
|
9863fa0903 | ||
|
|
2fd3e72a19 | ||
|
|
8ccceacf91 | ||
|
|
d5815922ca | ||
|
|
972c01afc9 | ||
|
|
8894e30869 | ||
|
|
5d8dba5fe0 | ||
|
|
90fbc1a33e | ||
|
|
55dea47b94 | ||
|
|
c7791a207b | ||
|
|
30d18888b9 | ||
|
|
6ac6305b53 | ||
|
|
29e8ccef4e | ||
|
|
ce17efd95b | ||
|
|
5480cb9571 | ||
|
|
b38ffd7376 | ||
|
|
8d8f44f352 | ||
|
|
af5f21b2e2 | ||
|
|
4ac7474e4e | ||
|
|
bdb3bb98f6 | ||
|
|
896609c859 | ||
|
|
50158b851c | ||
|
|
56b672e657 | ||
|
|
b9e9576083 | ||
|
|
79cc5a4d27 | ||
|
|
5f1d57704e | ||
|
|
19983272f3 | ||
|
|
e1ab302234 | ||
|
|
6b1c443212 | ||
|
|
b79a271553 | ||
|
|
260141ee08 | ||
|
|
fb1232043d | ||
|
|
2377fc8bcf | ||
|
|
c610902b67 | ||
|
|
a802405e19 | ||
|
|
0dbaacfe12 | ||
|
|
b8dd60dec7 | ||
|
|
147c2507c3 | ||
|
|
d72f27909f | ||
|
|
1ee5329b1c | ||
|
|
ba0b046a95 | ||
|
|
412eb2a9ce | ||
|
|
dd8e279cac | ||
|
|
642432cb5e | ||
|
|
001c9380be | ||
|
|
2e830fff99 | ||
|
|
06dcb22ae2 | ||
|
|
0120874b8e | ||
|
|
13475977af | ||
|
|
df50669092 | ||
|
|
abd6b7c5c3 | ||
|
|
e36746363a | ||
|
|
1eba854f23 | ||
|
|
6b19e3dc0a | ||
|
|
cb1fbce46b | ||
|
|
cc38cccae1 | ||
|
|
efbe1779e3 | ||
|
|
8e3d0a6569 | ||
|
|
8bd5d54b0e | ||
|
|
4867cf1e7b | ||
|
|
3ea3250dbe | ||
|
|
3bbcbfdcf9 | ||
|
|
c7e84d8044 | ||
|
|
9ae1d0d22d | ||
|
|
51e80ffd48 | ||
|
|
be52dbbaa1 | ||
|
|
76147c78a1 | ||
|
|
59da745d6c | ||
|
|
68996d7561 | ||
|
|
5e12bab5cc | ||
|
|
7693aa5464 | ||
|
|
110f471efa | ||
|
|
2064f412cb | ||
|
|
3228fd3cbc | ||
|
|
bad55f7977 | ||
|
|
3cf7b2e39e | ||
|
|
b443da410a | ||
|
|
87912103c9 | ||
|
|
4ce1ee458e | ||
|
|
b0351a08de | ||
|
|
3321055025 | ||
|
|
5572897998 | ||
|
|
3112f92d08 | ||
|
|
74f55a863a | ||
|
|
9ea18e10c9 | ||
|
|
d84457b9c2 | ||
|
|
643397ed21 | ||
|
|
85bf9ab76a | ||
|
|
6ec1904aac | ||
|
|
f1315b9efa | ||
|
|
a0e6bb5cb2 | ||
|
|
eaf63d94f0 | ||
|
|
45500fba74 | ||
|
|
8472effab3 | ||
|
|
d368aed150 | ||
|
|
e3b60e80c0 | ||
|
|
9df10674f0 | ||
|
|
e3617fb8ab | ||
|
|
0fbfce58c6 | ||
|
|
f8b954bcd9 | ||
|
|
caa25b506d | ||
|
|
6911815171 | ||
|
|
0719e5f402 | ||
|
|
07b731add0 | ||
|
|
d42d8f5b07 | ||
|
|
143e72dd85 | ||
|
|
6835289564 | ||
|
|
1396e0855d | ||
|
|
6a7363e4ae | ||
|
|
9bc63d92a0 | ||
|
|
6b05f60bad | ||
|
|
25e6629bcc | ||
|
|
0796c1d2d2 | ||
|
|
aac1d52c4f | ||
|
|
f41d09a3cf | ||
|
|
8aff64f89a | ||
|
|
4bf9cfd477 | ||
|
|
08cbc442f5 | ||
|
|
a02dd201e6 | ||
|
|
a5f7dcee04 | ||
|
|
0ddd761904 | ||
|
|
991c2a9d05 | ||
|
|
4983c38298 | ||
|
|
337ab24899 | ||
|
|
63c6a9c5ad | ||
|
|
718e68ffae | ||
|
|
f56a5f01c4 | ||
|
|
b77ffe0228 | ||
|
|
fd6439bb36 | ||
|
|
121f8d02f3 | ||
|
|
ff23423d34 | ||
|
|
1d97599f8b | ||
|
|
e465624fd0 | ||
|
|
5ddbb6965f | ||
|
|
a3b5f6d07f | ||
|
|
ac2cbef8be | ||
|
|
dff22e9d09 | ||
|
|
7282b50ad0 | ||
|
|
8c059469fd | ||
|
|
8c3f153dd4 | ||
|
|
185b526e60 | ||
|
|
38996b30b1 | ||
|
|
827dfed7c2 | ||
|
|
28af21baeb | ||
|
|
951c70496b | ||
|
|
a36eeb96f3 | ||
|
|
7018d3d0e6 | ||
|
|
3f14b4de1f | ||
|
|
26c0be4c4e | ||
|
|
cec0c06a70 | ||
|
|
476f8deb07 | ||
|
|
dc5932d177 | ||
|
|
cfd93b7529 | ||
|
|
8b2208f394 | ||
|
|
00a3b01f39 | ||
|
|
3baca251f0 | ||
|
|
72daae1d92 | ||
|
|
fcbe53ddb5 | ||
|
|
e9851672eb | ||
|
|
9a45f7bd3d | ||
|
|
85834fd146 | ||
|
|
a0c1ac7b45 | ||
|
|
7b0dca0f9c | ||
|
|
34c83d7d29 | ||
|
|
7c6882234e | ||
|
|
2e68ddbae9 | ||
|
|
7724fc6af7 | ||
|
|
2939075f03 | ||
|
|
606f68de02 | ||
|
|
c6c71abf4d | ||
|
|
863160ae49 | ||
|
|
edd39fb194 | ||
|
|
a71d264d45 | ||
|
|
8a7a695836 | ||
|
|
de54af4061 | ||
|
|
2f2a652bc9 | ||
|
|
1e638663de | ||
|
|
1684a8792a | ||
|
|
f47c0d9774 | ||
|
|
89e7264e53 | ||
|
|
cada9f61c8 | ||
|
|
373fa55981 | ||
|
|
2bc703cfc2 | ||
|
|
c9865b821d | ||
|
|
9c0de23645 | ||
|
|
b7a38af41d | ||
|
|
661914781e | ||
|
|
6e3f3887e9 | ||
|
|
a66d6bb034 | ||
|
|
2e197e2b98 | ||
|
|
55d1a4f964 | ||
|
|
82a7d7a977 | ||
|
|
dae54b456f | ||
|
|
1b7a044f33 | ||
|
|
18264403b1 | ||
|
|
04d43b7039 | ||
|
|
2dfecfb661 | ||
|
|
250f1f5f6e | ||
|
|
3ac718763f | ||
|
|
05e1555c0d | ||
|
|
855d1e2bf5 | ||
|
|
f0bfb3b2b2 | ||
|
|
4b4db0f7fb | ||
|
|
9bed2b80ee | ||
|
|
bb157c0cbf | ||
|
|
1ef05d4a28 | ||
|
|
0b88208022 | ||
|
|
c9d9ed3493 | ||
|
|
bd8b9f5781 | ||
|
|
9cbcf23df0 | ||
|
|
36e42db05b | ||
|
|
2bf6a1d813 | ||
|
|
e8373d3564 | ||
|
|
e218377a3d | ||
|
|
7d1aed4955 | ||
|
|
b4acbcf1fe | ||
|
|
50cb62c5d2 | ||
|
|
4cf868bd74 | ||
|
|
baa5a7c3e9 | ||
|
|
ee228f7aea | ||
|
|
d5b11c7d1b | ||
|
|
ed7db34bab | ||
|
|
57e45e3af8 | ||
|
|
1dc46478cb | ||
|
|
113ed0927d | ||
|
|
ab8be2d741 | ||
|
|
3b53b11fcd | ||
|
|
9fb661559b | ||
|
|
04882cf72c | ||
|
|
288176bbc9 | ||
|
|
5638a4fc62 | ||
|
|
3b4ce91fa3 | ||
|
|
1c87e5e9a8 | ||
|
|
a887e6a881 | ||
|
|
69290cad6f | ||
|
|
b66c7da05f | ||
|
|
92ddf77453 | ||
|
|
8e2f538983 | ||
|
|
2817d8caf2 | ||
|
|
b7f08fb159 | ||
|
|
0c2768f5bd | ||
|
|
09bede1a92 | ||
|
|
7059d3b71e | ||
|
|
e5de08faa1 | ||
|
|
e43ff076fd | ||
|
|
3ea7381dea | ||
|
|
f1c46f51e5 | ||
|
|
297fb4e0b0 | ||
|
|
9e406dfee2 | ||
|
|
30b7aa8a17 | ||
|
|
c1d16e0016 | ||
|
|
929ffb8d77 | ||
|
|
197a2e3b54 | ||
|
|
6cf6c8b918 | ||
|
|
058d7ec2ea | ||
|
|
752b5f705e | ||
|
|
e7fa579637 | ||
|
|
97781d4112 | ||
|
|
3ddd8e66a7 | ||
|
|
8a1e865e37 | ||
|
|
e850cb3ea3 | ||
|
|
13d3efe8df | ||
|
|
d6ecf785a2 | ||
|
|
19cb39869f | ||
|
|
a38bdf6758 | ||
|
|
bdbdab7fcc | ||
|
|
5aa9670120 | ||
|
|
8ad8cb93cc | ||
|
|
610e172fcf | ||
|
|
6942070a21 | ||
|
|
e283200511 | ||
|
|
54a192a5c5 | ||
|
|
c3bd65eda2 | ||
|
|
7c2ed1d2d6 | ||
|
|
3de81e0147 | ||
|
|
8fe1e2a5b4 | ||
|
|
909dbb81d5 | ||
|
|
26802a689c | ||
|
|
37239fb67f | ||
|
|
018dc40b32 | ||
|
|
52440955e6 | ||
|
|
c2f3d6ce2b | ||
|
|
be858f5d07 | ||
|
|
1f14734f91 | ||
|
|
6d1d694dbb | ||
|
|
ba5c48aa86 | ||
|
|
320d7807a9 | ||
|
|
6650a312b7 | ||
|
|
832c3b3744 | ||
|
|
76691bfd6b | ||
|
|
29fe5ea785 | ||
|
|
7a31a1d311 | ||
|
|
52a820113f | ||
|
|
aec3428489 | ||
|
|
a10f695b6f | ||
|
|
a3c9eacaf1 | ||
|
|
19d685b152 | ||
|
|
8ab44081d4 | ||
|
|
0431d22822 | ||
|
|
138d74aefa | ||
|
|
28562b2cf8 | ||
|
|
e0afda444f | ||
|
|
5a4cac58af | ||
|
|
545dca6c4d | ||
|
|
e59a882389 | ||
|
|
ccd9828535 | ||
|
|
41f0d32355 | ||
|
|
2f19b4fefc | ||
|
|
cd31cecfd1 | ||
|
|
2fe46b3905 | ||
|
|
24974f1f8f | ||
|
|
fd73bd006e | ||
|
|
7388c2c223 | ||
|
|
e2210b0b92 | ||
|
|
30919be2a0 | ||
|
|
10b21b41f7 | ||
|
|
28b8a3b5f7 | ||
|
|
8b2f1bba95 | ||
|
|
c805d80a9b | ||
|
|
d876778d22 | ||
|
|
412e571600 | ||
|
|
3296ed9cb3 | ||
|
|
91835e6816 | ||
|
|
f976625281 | ||
|
|
028d9d8a0c | ||
|
|
8559c0e2a4 | ||
|
|
06ead58240 | ||
|
|
28ca1b5221 | ||
|
|
6d872e6693 | ||
|
|
0b09c8981f | ||
|
|
a1d5676ecb | ||
|
|
f862ad29f5 | ||
|
|
15496da8fd | ||
|
|
802fb1632c | ||
|
|
69453ff889 | ||
|
|
28752cc3c0 | ||
|
|
9f06d9b03f | ||
|
|
3fb7c4e1db | ||
|
|
5fa685b602 | ||
|
|
eb1bbb92c0 | ||
|
|
d0e49f1a8a | ||
|
|
ea2664a4b8 | ||
|
|
da6524bd06 | ||
|
|
a231406931 | ||
|
|
6d39ed8ef7 | ||
|
|
f2563f4dde | ||
|
|
3df265b36a | ||
|
|
e382e6adc7 | ||
|
|
91c71d6c2e | ||
|
|
0d40c65b7f | ||
|
|
58f2057ba7 | ||
|
|
37179109db | ||
|
|
579857cfaa | ||
|
|
0b4e2df480 | ||
|
|
49cc1a70b1 | ||
|
|
f8a33d137a | ||
|
|
2db135dfc7 | ||
|
|
99bc628ad1 | ||
|
|
5ba6c301d7 | ||
|
|
88273a59f8 | ||
|
|
2e53cb72ec | ||
|
|
3b1597d79e | ||
|
|
776ee26bc3 | ||
|
|
ed273448b9 | ||
|
|
4bb91b3f67 | ||
|
|
c5f866098e | ||
|
|
6cfd01be6b | ||
|
|
53b8e25731 | ||
|
|
9e684d45bc | ||
|
|
09d9201787 | ||
|
|
a732d6d471 | ||
|
|
ee9d50c128 | ||
|
|
d1bafa0685 | ||
|
|
2604be5491 | ||
|
|
c52d9cdfbe | ||
|
|
aab6b7e721 | ||
|
|
d13cea46d5 | ||
|
|
82731dae6e | ||
|
|
476fba3e8b | ||
|
|
a566624f2d | ||
|
|
c6d7352f5c | ||
|
|
771573be30 | ||
|
|
b7afa4f0f4 | ||
|
|
4a1fa58704 | ||
|
|
6654b7162c | ||
|
|
f26a3cc806 | ||
|
|
57e48c4767 | ||
|
|
66d9a4ad43 | ||
|
|
78d9c98187 | ||
|
|
b686ec1182 | ||
|
|
158f452b50 | ||
|
|
916acd1dd3 | ||
|
|
b4f612474b | ||
|
|
9a884aa9ee | ||
|
|
db5636199e | ||
|
|
8211562cf6 | ||
|
|
9df93d6dec | ||
|
|
1e251af8d3 | ||
|
|
eed0f598a0 | ||
|
|
ec4d4a792a | ||
|
|
84e745f67c | ||
|
|
97edb23dba | ||
|
|
856782c81c | ||
|
|
a7266392f9 | ||
|
|
04b0c44bdf | ||
|
|
99c9eecde5 | ||
|
|
4d65bbf612 | ||
|
|
956aa0cfff | ||
|
|
d874476f0b | ||
|
|
30f9805539 | ||
|
|
46536dee39 | ||
|
|
24087d94df | ||
|
|
d02df2ebd5 | ||
|
|
16ba1f62a3 | ||
|
|
684dd1a3c6 | ||
|
|
8bcdcfeedd | ||
|
|
3bc372aa33 | ||
|
|
fc1c024041 | ||
|
|
89427228d1 | ||
|
|
420225f370 | ||
|
|
44a3fa6359 | ||
|
|
d853c833f0 | ||
|
|
03a796c460 | ||
|
|
75e47f2883 | ||
|
|
a4b2e48dfe | ||
|
|
57cda1578d | ||
|
|
6b1d7a94ff | ||
|
|
49abd7bec1 | ||
|
|
0ebebd80fe | ||
|
|
d157d47c6e | ||
|
|
e3ac2c5b02 | ||
|
|
cd54faa4af | ||
|
|
5beb1c4e30 | ||
|
|
4031aaa591 | ||
|
|
ba00e23630 | ||
|
|
8beb1f21ef | ||
|
|
fa8eec449b | ||
|
|
ab75fa048e | ||
|
|
bb29da5980 | ||
|
|
a4d7b75129 | ||
|
|
0fdceb3de3 | ||
|
|
480d0064e1 | ||
|
|
17bf04d1ef | ||
|
|
3ab30210a2 | ||
|
|
14fcfdee7e | ||
|
|
d4e56c1fa2 | ||
|
|
39ee6f8e79 | ||
|
|
8d21f1e45c | ||
|
|
618484a4fe | ||
|
|
64a234958a | ||
|
|
e4907ce8e8 | ||
|
|
33eaa8329c | ||
|
|
3c4fd57e51 | ||
|
|
a1e42ac33f | ||
|
|
ce7d7bfd8d | ||
|
|
9bd86cdddc | ||
|
|
0117464ac2 | ||
|
|
6f6eec7d8d | ||
|
|
a4e93c0fb8 | ||
|
|
e2ad0d3d6e | ||
|
|
763be5e631 | ||
|
|
c8526932f3 | ||
|
|
5cf29a3d29 | ||
|
|
18a3cc03ee | ||
|
|
ea5e254c7d | ||
|
|
060653bd4c | ||
|
|
b709009bc9 | ||
|
|
b80d7ec257 | ||
|
|
ff0384e610 | ||
|
|
ab9c275bde | ||
|
|
c70db96b06 | ||
|
|
1c616e29e2 | ||
|
|
cb7518435f | ||
|
|
79f81c0a25 | ||
|
|
72b9e48331 | ||
|
|
eba6aa1767 | ||
|
|
534fbdb307 | ||
|
|
6b309a4457 | ||
|
|
af5e38c31a | ||
|
|
4283f38698 | ||
|
|
2d49c0d1f3 | ||
|
|
a7ca3817db | ||
|
|
1f044547ee | ||
|
|
612fc47044 | ||
|
|
8959ff155b | ||
|
|
dadf57cc8b | ||
|
|
764b6c61d9 | ||
|
|
582dadf787 | ||
|
|
12d97169d7 | ||
|
|
c29cfa823d | ||
|
|
e183a9694e | ||
|
|
d6cb449011 | ||
|
|
7bf4ad30fc | ||
|
|
b3936b96e5 | ||
|
|
44d0625e91 | ||
|
|
c492cde048 | ||
|
|
c2fa6cc94d | ||
|
|
464608025b | ||
|
|
d653d2308b | ||
|
|
a52b1f121c | ||
|
|
9edd8be520 | ||
|
|
aa1d47600a | ||
|
|
be7ec8b40e | ||
|
|
8e12dd9c17 | ||
|
|
fee0f0dce0 | ||
|
|
0dd80e7b50 | ||
|
|
78d5b72081 | ||
|
|
e0df865401 | ||
|
|
2abcbed67a | ||
|
|
02b9d0b2e6 | ||
|
|
927e181db7 | ||
|
|
dc411b3175 | ||
|
|
1e870f0f0d | ||
|
|
3cd01598a5 | ||
|
|
3b6d683b7f | ||
|
|
eeef763f6d | ||
|
|
76d3ec583d | ||
|
|
077d8b9247 | ||
|
|
92840b9f68 | ||
|
|
bf60d5a041 | ||
|
|
56ffab045e | ||
|
|
496ee401d7 | ||
|
|
f0d5b3b368 | ||
|
|
88072a56ea | ||
|
|
0d3a637389 | ||
|
|
dc44f3c226 | ||
|
|
1029b0b97f | ||
|
|
84f8228b8c | ||
|
|
968e8f0121 | ||
|
|
9eb1da4568 | ||
|
|
315e79e9f0 | ||
|
|
363d0d4f41 | ||
|
|
5ac631a270 | ||
|
|
75fc882001 | ||
|
|
d7cb213eeb | ||
|
|
568e0d297a | ||
|
|
8edf358739 | ||
|
|
40be3ed05d | ||
|
|
2c174d6b3b | ||
|
|
60ee465bf7 | ||
|
|
51210d6b95 | ||
|
|
a6caa267bd | ||
|
|
cdb3e9dc0d | ||
|
|
f2f09767fb | ||
|
|
eec31d7126 | ||
|
|
3c5ad753b6 | ||
|
|
dd338b5567 | ||
|
|
1b15af713c | ||
|
|
89c5affc3b | ||
|
|
2bba69f633 | ||
|
|
4403f136b7 | ||
|
|
f7c1c638bb | ||
|
|
f2d7bbe0e9 | ||
|
|
87468cffce | ||
|
|
3f7e3a714e | ||
|
|
38a9caf159 | ||
|
|
500c8ab4b3 | ||
|
|
c4ad97d555 | ||
|
|
b96401ac83 | ||
|
|
32a5c9cba5 | ||
|
|
0217e6ce96 | ||
|
|
6bebe0837f | ||
|
|
ff1c6f0cfa | ||
|
|
8ac3e80bf0 | ||
|
|
3923ec89f7 | ||
|
|
fd8ca32ab2 | ||
|
|
ba2f66d765 | ||
|
|
056c840a06 | ||
|
|
20e8f08cb2 | ||
|
|
bac0c64633 | ||
|
|
48923055eb | ||
|
|
0f20a5e06a | ||
|
|
56bfb9249f | ||
|
|
5ed1544cab | ||
|
|
e5c7be9364 | ||
|
|
73ce9d028c | ||
|
|
75debbe5bc | ||
|
|
5f33d89ea5 | ||
|
|
42fd29efe8 | ||
|
|
2d91eac811 | ||
|
|
a50f02e87d | ||
|
|
214f913b0c | ||
|
|
1021c86300 | ||
|
|
386516815a | ||
|
|
d5e5647bba | ||
|
|
a861ea7eaf | ||
|
|
cb844132e6 | ||
|
|
8050308706 | ||
|
|
e79f72bf88 | ||
|
|
07b6c9f563 | ||
|
|
8f4e61a474 | ||
|
|
54d37c60f5 | ||
|
|
a93d375acc | ||
|
|
d66f0e5eb9 | ||
|
|
e84db12783 | ||
|
|
1ad2ecefe8 | ||
|
|
08b68ec8cd | ||
|
|
48be9233d8 | ||
|
|
a512d9b47d | ||
|
|
62234cc106 | ||
|
|
ab61837885 | ||
|
|
7a5041bf9c | ||
|
|
4d219135b2 | ||
|
|
26eeb64640 | ||
|
|
5426eb0b62 | ||
|
|
b9e32ec2c4 | ||
|
|
32b8613708 | ||
|
|
90eddb3439 | ||
|
|
accd6180c1 | ||
|
|
e770b674ff | ||
|
|
4f7c4d1051 | ||
|
|
78845e7d23 | ||
|
|
93f1cecc92 | ||
|
|
8ccd89f6ad | ||
|
|
0a210cce7a | ||
|
|
f110248462 | ||
|
|
96e4014a70 | ||
|
|
2173d00829 | ||
|
|
3827f5ef8b | ||
|
|
73bed61afa | ||
|
|
ee89ff5026 | ||
|
|
8df9e745d5 | ||
|
|
c76e954504 | ||
|
|
136f054614 | ||
|
|
e9a4b4f8ff | ||
|
|
5415c98ff9 | ||
|
|
39efa452fc | ||
|
|
bddcdee3fe | ||
|
|
2e8d44b444 | ||
|
|
70d68419b0 | ||
|
|
26fab2a27d | ||
|
|
0f5560eebd | ||
|
|
170dcc2907 | ||
|
|
18d6c78ef4 | ||
|
|
1248f0338b | ||
|
|
b400814d00 | ||
|
|
a934929bb3 | ||
|
|
140efb574c | ||
|
|
3c0c96114f | ||
|
|
362c96c8c1 | ||
|
|
5db3d0f9fc | ||
|
|
80c814c393 | ||
|
|
bf66465937 | ||
|
|
72eea7e6cd | ||
|
|
8f4cd13c89 | ||
|
|
6556cefc71 | ||
|
|
7bfb58920a | ||
|
|
2e324ccf5f | ||
|
|
1a10ee76b3 | ||
|
|
619e6349f6 | ||
|
|
b1ff68548f | ||
|
|
376b6c3bad | ||
|
|
f4c8a59b17 | ||
|
|
e6129d8ba5 | ||
|
|
d2baf11b8a | ||
|
|
82b5b12ca7 | ||
|
|
c145ab9b81 | ||
|
|
c10223b803 | ||
|
|
1e09b54ad2 | ||
|
|
d073e0aeb5 | ||
|
|
ce7293de13 | ||
|
|
108e66c24b | ||
|
|
f90401b8c0 | ||
|
|
a32e705d49 | ||
|
|
640cf4ca21 | ||
|
|
442e782692 | ||
|
|
0a874ad8b3 | ||
|
|
18083f0c13 | ||
|
|
f25aaf11e9 | ||
|
|
9b09257b28 | ||
|
|
f895516a2c | ||
|
|
76aa718b75 | ||
|
|
0acee67339 | ||
|
|
4475e335ef | ||
|
|
895673141d | ||
|
|
e4cd99ae1c | ||
|
|
c39a398d83 | ||
|
|
2787bd5bf0 | ||
|
|
6aaa7dc26d | ||
|
|
ebf60d2340 | ||
|
|
02d43846f6 | ||
|
|
8930cd563c | ||
|
|
2b90cd7d51 | ||
|
|
d5fde6a4b9 | ||
|
|
99b2e0fa08 | ||
|
|
ebcb1ca90e | ||
|
|
1763b073f9 | ||
|
|
908e467548 | ||
|
|
3c6ad5350b | ||
|
|
0ff3aa4b20 | ||
|
|
fd42b5c42c | ||
|
|
1311f2ac25 | ||
|
|
82a9817061 | ||
|
|
685eec0149 | ||
|
|
910dae16ab | ||
|
|
fd53197b46 | ||
|
|
d84d0b69ef | ||
|
|
b694ba27be | ||
|
|
e3cbac2d77 | ||
|
|
bbaa295ee2 | ||
|
|
1150a88001 | ||
|
|
58cfd60000 | ||
|
|
fcf268742d | ||
|
|
30d71c8f8f | ||
|
|
c3f9398b12 | ||
|
|
f1ac6ab764 | ||
|
|
d6ca5f71bc | ||
|
|
cdca9cf88f | ||
|
|
5840b42f4a | ||
|
|
a5be68b5b2 | ||
|
|
9fda13bc25 | ||
|
|
125dd7a594 | ||
|
|
df2584cc3b | ||
|
|
4de95c0e7b | ||
|
|
9ed1f2a446 | ||
|
|
833a4873a4 | ||
|
|
6ca1807372 | ||
|
|
9da3e9ccc7 | ||
|
|
5f65c36171 | ||
|
|
d64bb2f886 | ||
|
|
fc179c8fc3 | ||
|
|
8235af47fe | ||
|
|
908f3da3da | ||
|
|
64aac199de | ||
|
|
503c45840f | ||
|
|
6f102ff40f | ||
|
|
6e26a8d366 | ||
|
|
d9aea70ccc | ||
|
|
dd33ef2eb6 | ||
|
|
f3a32f2e29 | ||
|
|
1a3e40d818 | ||
|
|
18cdb3d845 | ||
|
|
0fca62c037 | ||
|
|
e9cd82b72d | ||
|
|
4d9ad21047 | ||
|
|
1cc2dc7150 | ||
|
|
3dc88b2c0c | ||
|
|
53f1ffb4e7 | ||
|
|
579a1be7c8 | ||
|
|
c0a68fcd0d | ||
|
|
b79853e9bd | ||
|
|
f86838ceab | ||
|
|
809e0b8c92 | ||
|
|
a58e3deac2 | ||
|
|
430699c082 | ||
|
|
b04233981f | ||
|
|
de10194f33 | ||
|
|
7c2e1ad0ed | ||
|
|
67ddb429e3 | ||
|
|
a169cc7119 | ||
|
|
9719b58575 | ||
|
|
13c18fa363 | ||
|
|
c17ad6ef65 | ||
|
|
2c14d0c966 | ||
|
|
2cd1783613 | ||
|
|
06db11cd61 | ||
|
|
125421ec45 | ||
|
|
cc84f40d61 | ||
|
|
c130918135 | ||
|
|
babeb4633e | ||
|
|
30167356f2 | ||
|
|
441b309959 | ||
|
|
b7b032f8e0 | ||
|
|
50f43462ae | ||
|
|
bd2a972dba | ||
|
|
3c162ae030 | ||
|
|
3c12757d9e | ||
|
|
fa746cc027 | ||
|
|
1e85178c73 | ||
|
|
d0bc0ad2ca | ||
|
|
c33f1bac08 | ||
|
|
58d522d824 | ||
|
|
858e4dccdc | ||
|
|
c2054077f4 | ||
|
|
754dd320ff | ||
|
|
a376980a69 | ||
|
|
cf7d710bc1 | ||
|
|
8f8740028c | ||
|
|
b0e03eb8a8 | ||
|
|
929dc703ca | ||
|
|
18a6bbfd80 | ||
|
|
73092c9898 | ||
|
|
b739126707 | ||
|
|
c39cf1ef84 | ||
|
|
861f6baa66 | ||
|
|
25fe426266 | ||
|
|
85fc586ee5 | ||
|
|
2a951e961b | ||
|
|
42aeab500b | ||
|
|
808a8a314a | ||
|
|
b809041894 | ||
|
|
1ddf0c8a42 | ||
|
|
d8caf209e3 | ||
|
|
22668555ad | ||
|
|
0f585931a4 | ||
|
|
d03386571d | ||
|
|
72948068e2 | ||
|
|
97808383ed | ||
|
|
de6f30042f | ||
|
|
b5cee82604 | ||
|
|
fab3e91973 | ||
|
|
c937c797c2 | ||
|
|
0ddc40ad7f | ||
|
|
e3f6faa350 | ||
|
|
cc69d50c60 | ||
|
|
b55eb5acf5 | ||
|
|
ebabce9982 | ||
|
|
037d3490ca | ||
|
|
ba7bcbb0d6 | ||
|
|
79ce6eda6f | ||
|
|
9f7c9cfc4c | ||
|
|
5dcc4f46db | ||
|
|
2f54201774 | ||
|
|
e8eef64601 | ||
|
|
27b1b5e3b3 | ||
|
|
5fa2f89542 | ||
|
|
c998b91c09 | ||
|
|
5be2395170 | ||
|
|
b4cd6bb8f0 | ||
|
|
7e81cad0bf | ||
|
|
856f3b3be6 | ||
|
|
785ac87846 | ||
|
|
75c29bd42a | ||
|
|
221a46a396 | ||
|
|
abe5cc7184 | ||
|
|
12ada75cad | ||
|
|
5a74d94558 | ||
|
|
d1d3f310e9 | ||
|
|
089a83363f | ||
|
|
c28e6db428 | ||
|
|
05253272cb | ||
|
|
12e087820c | ||
|
|
8dc001567b | ||
|
|
9af3256f72 | ||
|
|
cdd333a2e0 | ||
|
|
aa4ec8f3e2 | ||
|
|
5ea78cf259 | ||
|
|
600eaea2d1 | ||
|
|
81b15833f7 | ||
|
|
9abc221559 | ||
|
|
7048be2830 | ||
|
|
91eb27513a | ||
|
|
04f0682439 | ||
|
|
36bab5408d | ||
|
|
c483dab4b8 | ||
|
|
f1d759f279 | ||
|
|
4c1afb2984 | ||
|
|
db9b2bfbe1 | ||
|
|
377677cf30 | ||
|
|
24a4e95ffe | ||
|
|
8fdd9e967a | ||
|
|
acfa6a692e | ||
|
|
67ca22b6e4 | ||
|
|
ba413ee98d | ||
|
|
acc0e934cb | ||
|
|
1d485840fd | ||
|
|
dcb147608a | ||
|
|
ddf24d1fd6 | ||
|
|
886d7e6903 | ||
|
|
2079ccbf42 | ||
|
|
5ec88b0f6c | ||
|
|
b0bcd27124 | ||
|
|
4dfee21e91 | ||
|
|
18fa2c9c7d | ||
|
|
04d43d60b7 | ||
|
|
419731ec41 | ||
|
|
082ba88084 | ||
|
|
09a8474521 | ||
|
|
6d323d3ff7 | ||
|
|
c4e003518a | ||
|
|
9e251d14af | ||
|
|
9abba7d69a | ||
|
|
0377540e2d | ||
|
|
e6a15f66fc | ||
|
|
1787fd1b52 | ||
|
|
54c3d5c113 | ||
|
|
6d0f9a37a2 | ||
|
|
60dac4d2ff | ||
|
|
dd468fbe9a | ||
|
|
04ecf04832 | ||
|
|
6d45616a7a | ||
|
|
06d2016ee7 | ||
|
|
984bfadcdd | ||
|
|
f79f3f8b22 | ||
|
|
ba570a9842 | ||
|
|
365a98d00f | ||
|
|
4e2677fe2c | ||
|
|
d6d16b7899 | ||
|
|
86a9e0803a | ||
|
|
fdf96922b5 | ||
|
|
d396761f76 | ||
|
|
711519361c | ||
|
|
e4827b8d89 | ||
|
|
7ec7cb94f9 | ||
|
|
298899d02c | ||
|
|
43b35a4ae0 | ||
|
|
a7a8dcd617 | ||
|
|
bdf0b26a12 | ||
|
|
73e87b6a2e | ||
|
|
ac3d002cb2 | ||
|
|
ada2d0c627 | ||
|
|
286d3a1ff8 | ||
|
|
937f01a225 | ||
|
|
c9559e03da | ||
|
|
d115798d5b | ||
|
|
b6ee5fafd0 | ||
|
|
533b31237c | ||
|
|
812a470122 | ||
|
|
eb3105ef25 | ||
|
|
ffcaa04d2c | ||
|
|
a47660ba67 | ||
|
|
e2291184dc | ||
|
|
4e332452b7 | ||
|
|
e2f43df5e9 | ||
|
|
141929cd6e | ||
|
|
ec03968bd4 | ||
|
|
a21435cb05 | ||
|
|
bdfa6d1fe7 | ||
|
|
b565e258cb | ||
|
|
892b605ab5 | ||
|
|
4d99352526 | ||
|
|
cbf0eaa429 | ||
|
|
80e16c8ca3 | ||
|
|
0ae024afa8 | ||
|
|
73caacbd42 | ||
|
|
b667bda8f2 | ||
|
|
463e38cf67 | ||
|
|
83c8d65e3d | ||
|
|
9548e7d1e2 | ||
|
|
ee290d82d1 | ||
|
|
b75bb003bd | ||
|
|
6c2194fdb4 | ||
|
|
da61d8b639 | ||
|
|
863ba199f6 | ||
|
|
161ebb354f | ||
|
|
1516ebf7f9 | ||
|
|
2820f2227d | ||
|
|
a078f5f5c1 | ||
|
|
d0a83053d3 | ||
|
|
b6bc01abde | ||
|
|
196a1eb6ad | ||
|
|
593271f536 | ||
|
|
0f24f715ba | ||
|
|
bb9bfa5618 | ||
|
|
8120a06cd6 | ||
|
|
a153082120 | ||
|
|
970031e267 | ||
|
|
a819856f3f | ||
|
|
4dbaaa2855 | ||
|
|
0593cf4379 | ||
|
|
cd0e5dbb4c | ||
|
|
7cb1c3cabb | ||
|
|
550b9101b8 | ||
|
|
9d9564568b | ||
|
|
7ea7a53e7c | ||
|
|
ac387caf21 | ||
|
|
ad3f1e84aa | ||
|
|
2432a0dda5 | ||
|
|
03e5919910 | ||
|
|
277e35f8c8 | ||
|
|
0dd5836f3f | ||
|
|
9290f0d407 | ||
|
|
9bd3ad846e | ||
|
|
a8c73649ce | ||
|
|
6368ab49b4 | ||
|
|
16b6a64ef9 | ||
|
|
e46431ee0e | ||
|
|
2e4cf0aa5c | ||
|
|
3f8a7f05e8 | ||
|
|
3360613bcd | ||
|
|
f8a9cbe074 | ||
|
|
15f2e0c899 | ||
|
|
6518e746c1 | ||
|
|
38b046d6ad | ||
|
|
28d7750eda | ||
|
|
e5fc85bddc | ||
|
|
2a40571118 | ||
|
|
f1aa57c57e | ||
|
|
0b876ece41 | ||
|
|
ca0bd1a0b5 | ||
|
|
2d31b5df34 | ||
|
|
10f7ca0ebf | ||
|
|
85d6964874 | ||
|
|
76fd462bcc | ||
|
|
c44f01879f | ||
|
|
fe27989a69 | ||
|
|
b04f3eeede | ||
|
|
6ab61d023f | ||
|
|
4d87efc771 | ||
|
|
e47d368239 | ||
|
|
5b1235addc | ||
|
|
8c2c1240e1 | ||
|
|
27e696b7b1 | ||
|
|
bfba98f532 | ||
|
|
8de3ad50b2 | ||
|
|
2ba343d2b5 | ||
|
|
ff92afa557 | ||
|
|
c3c0fb95a8 | ||
|
|
bb56a094bb | ||
|
|
2211943170 | ||
|
|
4eb8bc0857 | ||
|
|
fa51cb8d63 | ||
|
|
706dec93a4 | ||
|
|
7a32920448 | ||
|
|
57a3899c1d | ||
|
|
374d159e0e | ||
|
|
4f5a41b84f | ||
|
|
a2f380fdd6 | ||
|
|
301085e510 | ||
|
|
af5b64a434 | ||
|
|
fa088e37bc | ||
|
|
613bdc91e5 | ||
|
|
edfe50e713 | ||
|
|
26fb403ced | ||
|
|
014fb46449 | ||
|
|
144a88b109 | ||
|
|
34c0d2509a | ||
|
|
a12a9e3fd9 | ||
|
|
8df73f3d83 | ||
|
|
6dac874ff4 | ||
|
|
81d25f6861 | ||
|
|
c0c1975da6 | ||
|
|
dd7af29103 | ||
|
|
85ea5f67f4 | ||
|
|
8e3cb6174d | ||
|
|
6c01e9a43a | ||
|
|
6061670161 | ||
|
|
7c66db2c45 | ||
|
|
05e95ae55a | ||
|
|
416ad564d0 | ||
|
|
55f8f9bc42 | ||
|
|
386a9e88b4 | ||
|
|
f6ca25edbe | ||
|
|
1ea221aa4e | ||
|
|
d72a6666a1 | ||
|
|
b69199f884 | ||
|
|
65042c86a6 | ||
|
|
d7dccfd56d | ||
|
|
e60f4a5e1e | ||
|
|
fa3d4cbb23 | ||
|
|
56d303ec09 | ||
|
|
4600548b4d | ||
|
|
7d24c2ba40 | ||
|
|
b4ce57caec | ||
|
|
43c09b2eaa | ||
|
|
b32fd0bee4 | ||
|
|
3b6e96efa9 | ||
|
|
29ef828b9c | ||
|
|
39ae443433 | ||
|
|
c30c2f8d38 | ||
|
|
5757f875f2 | ||
|
|
e49c482a3f | ||
|
|
a592d6c1aa | ||
|
|
88f154fecd | ||
|
|
d7dfe3e812 | ||
|
|
489265e3ca | ||
|
|
3212a70a0c | ||
|
|
1cda0a96ca | ||
|
|
83fb9f7548 | ||
|
|
43295289bf | ||
|
|
0f72ca823b | ||
|
|
41786bc776 | ||
|
|
cca5d7ebbf | ||
|
|
43c8764465 | ||
|
|
a1e325a2d9 | ||
|
|
17a831e32f | ||
|
|
2a13db3bb8 | ||
|
|
eb5a73538a | ||
|
|
006a6c787b | ||
|
|
c3d96df0f0 | ||
|
|
15e7218bc4 | ||
|
|
28f32b9b8e | ||
|
|
1d0a56b673 | ||
|
|
ad1424681b | ||
|
|
87b991c076 | ||
|
|
5d593f26af | ||
|
|
853c270fce | ||
|
|
fcf34e0587 | ||
|
|
b6611c8a3b | ||
|
|
aab08d774b | ||
|
|
321aa52384 | ||
|
|
1334a74ef1 | ||
|
|
19e3384bb1 | ||
|
|
6ae32fd596 | ||
|
|
4c316ba4ce | ||
|
|
f2719411b7 | ||
|
|
11faf6684e | ||
|
|
547d18ce46 | ||
|
|
f183a81289 | ||
|
|
e44c874cab | ||
|
|
9c7380efe4 | ||
|
|
5e071a2e4b | ||
|
|
ff9b82c4f6 | ||
|
|
a0d0ac6cff | ||
|
|
b605a5de87 | ||
|
|
36be2b0688 | ||
|
|
376a5da705 | ||
|
|
c25258b75c | ||
|
|
c685f3a294 | ||
|
|
f63767af0e | ||
|
|
4fa9a2e54b | ||
|
|
68bc592a05 | ||
|
|
543fe2f2a4 | ||
|
|
be52f38d8f | ||
|
|
722a92f374 | ||
|
|
d771d06e19 | ||
|
|
a5227191b5 | ||
|
|
499d3d6d78 | ||
|
|
2adf020753 | ||
|
|
e8c373694c | ||
|
|
a8fd8cb645 | ||
|
|
fd06084106 | ||
|
|
285500488d | ||
|
|
29d4ffd089 | ||
|
|
fe5efa597b | ||
|
|
b93629a903 | ||
|
|
0c72940933 | ||
|
|
96f5279e3e | ||
|
|
821fa10203 | ||
|
|
9082e74971 | ||
|
|
7a7d77e7bd | ||
|
|
ce2ec94e96 | ||
|
|
d56e5d6923 | ||
|
|
5221ecc055 | ||
|
|
6ac2c6f578 | ||
|
|
772b752fa5 | ||
|
|
3c002d08c2 | ||
|
|
2876424240 | ||
|
|
74a0177ec9 | ||
|
|
da96844e9a | ||
|
|
81652c8244 | ||
|
|
f17434c95b | ||
|
|
01e854b5d2 | ||
|
|
42953c7c44 | ||
|
|
5e56446d26 | ||
|
|
61652f4ad9 | ||
|
|
fc1e84941d | ||
|
|
953eba0376 | ||
|
|
5c032269e3 | ||
|
|
1322d5a2c1 | ||
|
|
114f272906 | ||
|
|
1286bbb982 | ||
|
|
9141c649e7 | ||
|
|
ff2242da31 | ||
|
|
730a419984 | ||
|
|
25bd7d7997 | ||
|
|
77c9d9207d | ||
|
|
1e77629f1f | ||
|
|
76f65456ab | ||
|
|
26e20e7ae5 | ||
|
|
96217cf3fe | ||
|
|
e9c96d8ccd | ||
|
|
7ae2b968bb | ||
|
|
83ea42afe5 | ||
|
|
16587fcce1 | ||
|
|
ffded44f32 | ||
|
|
92c5284b80 | ||
|
|
f96102224c | ||
|
|
bf87d626eb | ||
|
|
e21a79dc61 | ||
|
|
caec590fe1 | ||
|
|
61ce6c59c2 | ||
|
|
205a1a14c7 | ||
|
|
6709ab5f27 | ||
|
|
2d77279c94 | ||
|
|
e9d7b6fbad | ||
|
|
3e6171c7ff | ||
|
|
04389fd6ff | ||
|
|
a47b599048 | ||
|
|
58eddd5ab4 | ||
|
|
7ac857acef | ||
|
|
e27b224933 | ||
|
|
4f087df286 | ||
|
|
87f6f6a3e3 | ||
|
|
94d1e94cf2 | ||
|
|
d249868e07 | ||
|
|
429e48d873 | ||
|
|
abb414c702 | ||
|
|
8f45dd4190 | ||
|
|
d9098c5fcd | ||
|
|
b9dee730a8 | ||
|
|
26c62a667f | ||
|
|
7d42ad00ff | ||
|
|
4a5776b513 | ||
|
|
f68ba2ef35 | ||
|
|
a95a0ab5f9 | ||
|
|
30911f4a75 | ||
|
|
c9f184c8d5 | ||
|
|
545f1fd07d | ||
|
|
2f762265a8 | ||
|
|
7e6d8f39b4 | ||
|
|
bea74b7711 | ||
|
|
10e8dc57eb | ||
|
|
f7b6dde086 | ||
|
|
2fa36fa721 | ||
|
|
40f8202402 | ||
|
|
4b0b55c1b7 | ||
|
|
0e395973c9 | ||
|
|
1f53cdb62d | ||
|
|
c32023d8ed | ||
|
|
d2f98940d8 | ||
|
|
536b16c7a9 | ||
|
|
9bfeae2df1 | ||
|
|
4d450ea25e | ||
|
|
84f01d1e30 | ||
|
|
1a5636b199 | ||
|
|
af46df7eae | ||
|
|
801a1791d6 | ||
|
|
333cf0b280 | ||
|
|
52e26697a9 | ||
|
|
fdf620b688 | ||
|
|
66f8ca52d6 | ||
|
|
f98c1127a6 | ||
|
|
7e352fe28d | ||
|
|
d3b48e2fd5 | ||
|
|
23159c094d | ||
|
|
2e22887f71 | ||
|
|
c9b04b8be7 | ||
|
|
2c0e13b513 | ||
|
|
2937309f00 | ||
|
|
377056a33c | ||
|
|
f42ce5be2b | ||
|
|
ddeee9b6db | ||
|
|
6bee32c174 | ||
|
|
11f55a06dd | ||
|
|
6a2d6b872b | ||
|
|
d8787867c4 | ||
|
|
43d9f6ea17 | ||
|
|
1faba1302f | ||
|
|
55ee0a0934 | ||
|
|
0653f73779 | ||
|
|
7a24021dc9 | ||
|
|
9f2fe94484 | ||
|
|
a3950b5638 | ||
|
|
8c03428279 | ||
|
|
f4d7ea386d | ||
|
|
bee0496cb1 | ||
|
|
5960b90efe | ||
|
|
0f2f3d4e29 | ||
|
|
bc673bef79 | ||
|
|
3fb7391b97 | ||
|
|
442cd7515d | ||
|
|
a013ffe547 | ||
|
|
835558229f | ||
|
|
dce23c79a1 | ||
|
|
4106bae79e | ||
|
|
b756474d9d | ||
|
|
b0c9209726 | ||
|
|
c96b778771 | ||
|
|
d0d721d80b | ||
|
|
7b50a78662 | ||
|
|
aa869c637a | ||
|
|
f467fe1cbf | ||
|
|
15fd639cd9 | ||
|
|
f96f2cf56e | ||
|
|
b0f6278cea | ||
|
|
ae7bac9a6b | ||
|
|
c8997204d4 | ||
|
|
a2c51984a8 | ||
|
|
ed93e33d59 | ||
|
|
6e15b1cd20 | ||
|
|
cc2513facf | ||
|
|
e303dcc915 | ||
|
|
8ad17abb7b | ||
|
|
5b296b5257 | ||
|
|
1a5c32f3ef | ||
|
|
a15e745d42 | ||
|
|
d17dd3e3d8 | ||
|
|
51a5c829bb | ||
|
|
8a91749e12 | ||
|
|
42fc0f9ee8 | ||
|
|
17ccd55d11 | ||
|
|
b8a589d76f | ||
|
|
becf6d9413 | ||
|
|
9efc4b23dc | ||
|
|
6b1dc31759 | ||
|
|
9205d632cc | ||
|
|
a751346b20 | ||
|
|
8111a19307 | ||
|
|
860b4f1a3b | ||
|
|
a5b1aa9ca7 | ||
|
|
62257bce18 | ||
|
|
0ed74aa68b | ||
|
|
e0bd0d6470 | ||
|
|
b433550556 | ||
|
|
04ebd8875b | ||
|
|
1a1ed0ae45 | ||
|
|
d6fabb6f8e | ||
|
|
08e8194db1 | ||
|
|
0e4e050b21 | ||
|
|
de17b285b1 | ||
|
|
f640d0973d | ||
|
|
47ff0dc0cc | ||
|
|
965e1d63dc | ||
|
|
73f1da2ff7 | ||
|
|
0f6ad43e91 | ||
|
|
8d804a6c4a | ||
|
|
02f48aabbf | ||
|
|
d4b08e9566 | ||
|
|
9f1f58fd4b | ||
|
|
4ed92d50e0 | ||
|
|
8848004cb7 | ||
|
|
371b381074 | ||
|
|
6d47011dcf | ||
|
|
705cdb6368 | ||
|
|
90fc80fd87 | ||
|
|
041974ee01 | ||
|
|
7369d861ca | ||
|
|
e1da383aed | ||
|
|
6bcf29152f | ||
|
|
8a38211bd9 | ||
|
|
cb2b9feb5f | ||
|
|
c2d5d5619b | ||
|
|
76b7d6975f | ||
|
|
7e9186d1ae | ||
|
|
d1ce4c9923 | ||
|
|
fed7fa4cd2 | ||
|
|
0d0125fc29 | ||
|
|
98e2c0522f | ||
|
|
294bc8c1d7 | ||
|
|
ae11d83684 | ||
|
|
aab9b08ec2 | ||
|
|
31ff7db019 | ||
|
|
c40c54fbee | ||
|
|
cecbaf2efe | ||
|
|
e90413243e | ||
|
|
a9396efeaf | ||
|
|
60353c6d05 | ||
|
|
7b5ed50786 | ||
|
|
02baa2b17c | ||
|
|
d0585bd910 | ||
|
|
adf7124446 | ||
|
|
7710db4591 | ||
|
|
ce03cf49d8 | ||
|
|
65c0d14a4e | ||
|
|
667ed6fcf5 | ||
|
|
d7da40642d | ||
|
|
d6b5047511 | ||
|
|
3b5a751b25 | ||
|
|
8a7491c97a | ||
|
|
b3cab31cf7 | ||
|
|
021655a10a | ||
|
|
e301d43704 | ||
|
|
54c1a208c3 | ||
|
|
ad9bbda708 | ||
|
|
341e167eab | ||
|
|
fb031d1ad5 | ||
|
|
d3937b9a61 | ||
|
|
2c734e2e4c | ||
|
|
77d8823261 | ||
|
|
6f85c14738 | ||
|
|
edb1dc067a | ||
|
|
6b161d5389 | ||
|
|
c21e3feaa6 | ||
|
|
a25ef01da3 | ||
|
|
0534266490 | ||
|
|
71aca3c199 | ||
|
|
72fab80a74 | ||
|
|
c8ab058842 | ||
|
|
b166fd7d6e | ||
|
|
9545face97 | ||
|
|
6dacd51b81 | ||
|
|
571a182712 | ||
|
|
e3aabdc2bc | ||
|
|
4d8d5b12f2 | ||
|
|
5785e7e2e5 | ||
|
|
81f311105c | ||
|
|
ad3679fcb8 | ||
|
|
29508f1cc7 | ||
|
|
426ba62348 | ||
|
|
d2df055abe | ||
|
|
d3ccdbcf72 | ||
|
|
7a476fc964 | ||
|
|
5da28be2b2 | ||
|
|
0932bdea30 | ||
|
|
75054e17cf | ||
|
|
664907f02e | ||
|
|
f977272732 | ||
|
|
d10b7b43ea | ||
|
|
e9abe1b846 | ||
|
|
cc21f38664 | ||
|
|
34606c26f0 | ||
|
|
be9d66a574 | ||
|
|
ed9fcde499 | ||
|
|
3c2139b0c3 | ||
|
|
7eeec91ab5 | ||
|
|
fdd43ee448 | ||
|
|
ca75492512 | ||
|
|
a2a7644794 | ||
|
|
91aebc758c | ||
|
|
ca0d29d811 | ||
|
|
c8c6aa2a1f | ||
|
|
19a1a22e63 | ||
|
|
c729d62f89 | ||
|
|
1793b50e6b | ||
|
|
23dbe6a5f0 | ||
|
|
509601e617 | ||
|
|
d58beed752 | ||
|
|
fd5d1076dc | ||
|
|
05b76a1f93 | ||
|
|
f84ec803a4 | ||
|
|
c35cd7fcb7 | ||
|
|
bb9d50579b | ||
|
|
54d37512f5 | ||
|
|
c516be8c4b | ||
|
|
82c78ec8f9 | ||
|
|
b1d4b71609 | ||
|
|
7440c7ddc7 | ||
|
|
624dad5a78 | ||
|
|
f4080210bd | ||
|
|
c631eb43e3 | ||
|
|
376bedf624 | ||
|
|
36e9c02f6f | ||
|
|
8f798569a8 | ||
|
|
8c0e47baf9 | ||
|
|
461473e48e | ||
|
|
8b1f109c1d | ||
|
|
e005cb31d8 | ||
|
|
579836e221 | ||
|
|
b977ee6160 | ||
|
|
ddce65b9dd | ||
|
|
e0e1105965 | ||
|
|
1f520f9f99 | ||
|
|
05a929deb6 | ||
|
|
5ac5352e33 | ||
|
|
787a555253 | ||
|
|
388b84e858 | ||
|
|
7ffd17254a | ||
|
|
00affe187c | ||
|
|
05844efbd6 | ||
|
|
3ab37028fc | ||
|
|
3a04888c5f | ||
|
|
6bd518241a | ||
|
|
a3cddb856f | ||
|
|
4b8e08d202 | ||
|
|
9413d30396 | ||
|
|
5982fa63c6 | ||
|
|
a4621a6418 | ||
|
|
7eec21a5e6 | ||
|
|
96b72fe2f7 | ||
|
|
c7c9606e87 | ||
|
|
772c135d98 | ||
|
|
365b3a76ba | ||
|
|
41568b7f2a | ||
|
|
d853f6cf0e | ||
|
|
bcfcce32d3 | ||
|
|
986916cf3e | ||
|
|
d689656775 | ||
|
|
8c56df7322 | ||
|
|
1dc87761a0 | ||
|
|
cd88b92587 | ||
|
|
eab03fdfc4 | ||
|
|
9a8b86872d | ||
|
|
04ce039ba4 | ||
|
|
9605cbda45 | ||
|
|
3ec2739925 | ||
|
|
d250bf9b56 | ||
|
|
6ebccb0518 | ||
|
|
b30efe4e2f | ||
|
|
c275d279fc | ||
|
|
7237a3c3b6 | ||
|
|
f98896f6d7 | ||
|
|
bcb2cdae4c | ||
|
|
08159211a3 | ||
|
|
232b6ab7ef | ||
|
|
3d2676d013 | ||
|
|
477d06f990 | ||
|
|
ed19885ba1 | ||
|
|
297ae6fdb4 | ||
|
|
456a985666 | ||
|
|
261203d6c1 | ||
|
|
31262d2ea9 | ||
|
|
c72abc5293 | ||
|
|
93189ad0b6 | ||
|
|
a8930b161e | ||
|
|
fa31d45285 | ||
|
|
914e4a4cf7 | ||
|
|
f36d079f28 | ||
|
|
17ddeef3ba | ||
|
|
f0c90ce668 | ||
|
|
f19b312c48 | ||
|
|
e899a54ba7 | ||
|
|
a4db994c2f | ||
|
|
f98f46c836 | ||
|
|
336aaaec9a | ||
|
|
b13ec8526e | ||
|
|
541020ff1b | ||
|
|
9c153737b4 | ||
|
|
7d53bb4064 | ||
|
|
4670751479 | ||
|
|
8e058f16e4 | ||
|
|
f519f0a5b3 | ||
|
|
bb61304a49 | ||
|
|
781d991eac | ||
|
|
d04c1f93a3 | ||
|
|
c0aab36187 | ||
|
|
5ae994ee8f | ||
|
|
60d16eab77 | ||
|
|
fc60dfc1a6 | ||
|
|
45d149c146 | ||
|
|
4dfc1a69c3 | ||
|
|
0ae18bca60 | ||
|
|
2aaf0defe7 | ||
|
|
73ea5cd7ee | ||
|
|
e7f2d229ec | ||
|
|
87bc265817 | ||
|
|
796aaff295 | ||
|
|
8f87c50320 | ||
|
|
ee4471b345 | ||
|
|
6815feb8cf | ||
|
|
dbbe7be891 | ||
|
|
09c9452e5c | ||
|
|
b0e669ba00 | ||
|
|
f46ae9f3b2 | ||
|
|
9f2b344be8 | ||
|
|
6b47271679 | ||
|
|
6f7075be74 | ||
|
|
4b9cc3d698 | ||
|
|
3faa790b53 | ||
|
|
9477c9b516 | ||
|
|
b04be51848 | ||
|
|
9e4020efd3 | ||
|
|
6db19db665 | ||
|
|
1386f80ae5 | ||
|
|
e4342a7097 | ||
|
|
fda31b75f9 | ||
|
|
8ca0a45b33 | ||
|
|
ce2bcaef68 | ||
|
|
0db7f26ad3 | ||
|
|
35370da458 | ||
|
|
fe6c5832c2 | ||
|
|
e8c32df79c | ||
|
|
652e166462 | ||
|
|
af6385f8e4 | ||
|
|
f0277d3777 | ||
|
|
6bb100d7fa | ||
|
|
f13ea34de3 | ||
|
|
48a14a443a | ||
|
|
1820ea6f59 | ||
|
|
4d9647923e | ||
|
|
943e9b3a28 | ||
|
|
6b2ec50a0b | ||
|
|
7b813b95b6 | ||
|
|
cdaa2e78d7 | ||
|
|
add53d3222 | ||
|
|
f4f79d2217 | ||
|
|
aa36bc4516 | ||
|
|
9028cacfd1 | ||
|
|
40ccb595cd | ||
|
|
5606d08ecb | ||
|
|
1888d6fca1 | ||
|
|
5d16e6b302 | ||
|
|
96f7574bc1 | ||
|
|
490584c8bc | ||
|
|
0cbb1f661c | ||
|
|
3dc53e105a | ||
|
|
e2cdd760d8 | ||
|
|
4169202a41 | ||
|
|
835982c561 | ||
|
|
b67bacea18 | ||
|
|
3205ee7d75 | ||
|
|
ff7d5ff4e5 | ||
|
|
723774af27 | ||
|
|
c3fbd3fe10 | ||
|
|
d1d3871550 | ||
|
|
5462c8c7ec | ||
|
|
9536341e30 | ||
|
|
1bb798d963 | ||
|
|
91997e9c53 | ||
|
|
1393187040 | ||
|
|
6e69c880d9 | ||
|
|
59dcd03972 | ||
|
|
11482546a2 | ||
|
|
1ce43dd347 | ||
|
|
d1bfe137d4 | ||
|
|
9d7452cdc2 | ||
|
|
d9cee90efc | ||
|
|
175aa08500 | ||
|
|
c9ff6198d3 | ||
|
|
f026218c82 | ||
|
|
5bc86b9e29 | ||
|
|
5830ac9936 | ||
|
|
d7c6c9a9f9 | ||
|
|
9c87eed60e | ||
|
|
f15eb6d5ef | ||
|
|
5b33788359 | ||
|
|
11ec3ccd48 | ||
|
|
9d498ba3f1 | ||
|
|
15d4047180 | ||
|
|
44eae73843 | ||
|
|
d5b1c70731 | ||
|
|
e78dc18cfd | ||
|
|
4d122923e9 | ||
|
|
b1a7310263 | ||
|
|
d6ef90d98d | ||
|
|
85df59ac31 | ||
|
|
b789a28581 | ||
|
|
4068e7f444 | ||
|
|
80e9ffbf5d | ||
|
|
610fc92ca3 | ||
|
|
0f5dc9bdb2 | ||
|
|
c24b2faec5 | ||
|
|
c407f58dc2 | ||
|
|
380da0e202 | ||
|
|
9e5e7a1526 | ||
|
|
9016b5aaae | ||
|
|
45f168e873 | ||
|
|
799938683d | ||
|
|
7128f2d11f | ||
|
|
0634bf0b0d | ||
|
|
f9e48c2972 | ||
|
|
909960c0b3 | ||
|
|
8a7876f4d1 | ||
|
|
286c92b13b | ||
|
|
b9872a278f | ||
|
|
1b34fd7efa | ||
|
|
f05c351762 | ||
|
|
8323f19e96 | ||
|
|
565eda9ee5 | ||
|
|
7aea7194d1 | ||
|
|
2f68957c8c | ||
|
|
4ca848e526 | ||
|
|
31a8c7c19c | ||
|
|
f1c435e050 | ||
|
|
fac75a9bff | ||
|
|
4fe03ab223 | ||
|
|
c6122da59b | ||
|
|
131f658779 | ||
|
|
127f77964e | ||
|
|
9f2bd30dc7 | ||
|
|
6e633b31b4 | ||
|
|
1c65643488 | ||
|
|
388ad9067a | ||
|
|
f470f0bdc5 | ||
|
|
72384b0523 | ||
|
|
1b199b7d98 | ||
|
|
09b384ea44 | ||
|
|
56ae55f987 | ||
|
|
1c360a89ba | ||
|
|
8636dee13e | ||
|
|
70e6baf6fc | ||
|
|
3588c1eedc | ||
|
|
8d6f167a81 | ||
|
|
6106188347 | ||
|
|
eeb77541cd | ||
|
|
99b244b47c | ||
|
|
3043672448 | ||
|
|
0477a53c9f | ||
|
|
d9aa7c3bc9 | ||
|
|
986fac583b | ||
|
|
c6d76086e2 | ||
|
|
e2771364eb | ||
|
|
0d5a63798b | ||
|
|
7d15e2bf52 | ||
|
|
31fef407b6 | ||
|
|
6bef3ef891 | ||
|
|
b806846049 | ||
|
|
bc16020976 | ||
|
|
8afb905a43 | ||
|
|
53667728a8 | ||
|
|
5f0a854e29 | ||
|
|
e9ef3dd9cd | ||
|
|
f702884704 | ||
|
|
0cb866845d | ||
|
|
26483029db | ||
|
|
d2adcbdf67 | ||
|
|
d2f963db2a | ||
|
|
fc2bc1362f | ||
|
|
6ae45d0fd3 | ||
|
|
cc185a8c0e | ||
|
|
ae1078944c | ||
|
|
385a05dd10 | ||
|
|
2572a78648 | ||
|
|
470774cfba | ||
|
|
351f6abe4c | ||
|
|
53a16e1795 | ||
|
|
ff77c8b205 | ||
|
|
b33f38b109 | ||
|
|
b9596d7ce8 | ||
|
|
251175c025 | ||
|
|
fda1bc4630 | ||
|
|
83c2c176a9 | ||
|
|
9be5992f22 | ||
|
|
d8d23c0bf8 | ||
|
|
b2689fc40e | ||
|
|
a4cfde350f | ||
|
|
7374027457 | ||
|
|
63328c2177 | ||
|
|
c4e2ce23e5 | ||
|
|
dacad53b2e | ||
|
|
4ffd5280a7 | ||
|
|
74310fb464 | ||
|
|
8b2268cf38 | ||
|
|
fb655f4981 | ||
|
|
7208c33d72 | ||
|
|
4efb25d048 | ||
|
|
a3678cd7f6 | ||
|
|
393d38f1ab | ||
|
|
805b9ac3a9 | ||
|
|
379b9812be | ||
|
|
a9992b5647 | ||
|
|
b6c0a9b1b5 | ||
|
|
1d2dd2a375 | ||
|
|
63db694aa2 | ||
|
|
b6aca36ad9 | ||
|
|
8420ae93fd | ||
|
|
6722716fa7 | ||
|
|
658e064220 | ||
|
|
66b472e567 | ||
|
|
3d242a607e | ||
|
|
bc68e5e7a3 | ||
|
|
aa6858189c | ||
|
|
06fda62c9e | ||
|
|
5688ea650d | ||
|
|
f5c4e9d612 | ||
|
|
b9eda2a59d | ||
|
|
8c168b0971 | ||
|
|
9c20a50ee2 | ||
|
|
eac666574e | ||
|
|
e4c840f6b8 | ||
|
|
3afbcd0acf | ||
|
|
8f054dbcaf | ||
|
|
ccc39e5aa2 | ||
|
|
53d4da2a9c | ||
|
|
d9e7153fc9 | ||
|
|
dc02b0d5ae | ||
|
|
e0bc5711b8 | ||
|
|
957cf45fa1 | ||
|
|
f4487343df | ||
|
|
ca1bdb31e3 | ||
|
|
236a412459 | ||
|
|
759a57bdb6 | ||
|
|
1abb674a07 | ||
|
|
961146a287 | ||
|
|
573f940985 | ||
|
|
882916bb2e | ||
|
|
47d1c62732 | ||
|
|
d39293c025 | ||
|
|
2942dafdfd | ||
|
|
4e1aefa5b5 | ||
|
|
89383ecc57 | ||
|
|
08046f7692 | ||
|
|
885fb1fa92 | ||
|
|
6a58c71528 | ||
|
|
371d66ba2a | ||
|
|
25bddf3fb5 | ||
|
|
f6e9fb13f8 | ||
|
|
f0df8434e7 | ||
|
|
e4d3f239e5 | ||
|
|
bcc22dfa6f | ||
|
|
f614709a01 | ||
|
|
11250d22c9 | ||
|
|
4b4de29725 | ||
|
|
99b49d2718 | ||
|
|
6230ec55be | ||
|
|
0733d3c585 | ||
|
|
6f8370ff0e | ||
|
|
bc244ed07e | ||
|
|
41266aa8e4 | ||
|
|
45faee3e5b | ||
|
|
74ff735e10 | ||
|
|
97879f2b16 | ||
|
|
1a338251ad | ||
|
|
354dc768c1 | ||
|
|
8a0796cd94 | ||
|
|
cbc3b26584 | ||
|
|
d628583db8 | ||
|
|
058777be1e | ||
|
|
260d03a0c4 | ||
|
|
6dcf6f41cc | ||
|
|
799f790886 | ||
|
|
cb3c4b0ea9 | ||
|
|
798d255ba6 | ||
|
|
28ba9e8ac5 | ||
|
|
7888cb0506 | ||
|
|
5e284a20cc | ||
|
|
770357e727 | ||
|
|
673ba22555 | ||
|
|
fb38d9cfb7 | ||
|
|
dda89a57ec | ||
|
|
62df63d3a0 | ||
|
|
e71696cf34 | ||
|
|
b5d8d58670 | ||
|
|
14e6a667f5 | ||
|
|
0c324783ae | ||
|
|
5d6ce251ca | ||
|
|
92c04cee1d | ||
|
|
7fdf587a7b | ||
|
|
1e46218b09 | ||
|
|
c56fcd8fb9 | ||
|
|
319fbf7f64 | ||
|
|
bf06d9077c | ||
|
|
9d2bd29ee1 | ||
|
|
d11fa1f74e | ||
|
|
c824da0dab | ||
|
|
9362c83a33 | ||
|
|
0c38098f02 | ||
|
|
be7068f569 | ||
|
|
b122bf22e3 | ||
|
|
b7232f38f3 | ||
|
|
c1b72ac1b7 | ||
|
|
b9e0d15878 | ||
|
|
cf26cf7afc | ||
|
|
a75e60ae47 | ||
|
|
187dc5dd03 | ||
|
|
9c9e2afade | ||
|
|
fae1ba98c1 | ||
|
|
c3e632620a | ||
|
|
dd7158ac46 | ||
|
|
eefe51c7a7 | ||
|
|
bf596dc023 | ||
|
|
220d88d654 | ||
|
|
a254e64bdb | ||
|
|
1555b92fb8 | ||
|
|
d5b7a40b39 | ||
|
|
bd1ab7ab96 | ||
|
|
2ff991bfcf | ||
|
|
0b1378a539 | ||
|
|
723c908bd7 | ||
|
|
4874404701 | ||
|
|
4c1374840a | ||
|
|
5da01633fd | ||
|
|
cdbd8af527 | ||
|
|
a6fdc1bfd2 | ||
|
|
20b8facb05 | ||
|
|
909914f7af | ||
|
|
3f31ebc676 | ||
|
|
f3c068a90c | ||
|
|
90d7e193d1 | ||
|
|
c9f5bb6f17 | ||
|
|
9865a4c4f2 | ||
|
|
f12baf32d4 | ||
|
|
80f4d08e8b | ||
|
|
07c9cae923 | ||
|
|
d867cc9271 | ||
|
|
3a1fe1e295 | ||
|
|
3cacf050df | ||
|
|
1536d73d1b | ||
|
|
55143a9d44 | ||
|
|
c92e193916 | ||
|
|
d12452fc49 | ||
|
|
3d8400a40c | ||
|
|
1fe0aea0b0 | ||
|
|
5df2544883 | ||
|
|
acbf224277 | ||
|
|
d0d17a0d35 | ||
|
|
f7b53d33bc | ||
|
|
92be06874b | ||
|
|
f327455d9d | ||
|
|
54415bf2af | ||
|
|
bac62dfcd9 | ||
|
|
820b43c1f3 | ||
|
|
a5b69290d5 | ||
|
|
5c7a9c86f6 | ||
|
|
7f83f916f6 | ||
|
|
c15a949cc3 | ||
|
|
ce47f96570 | ||
|
|
57b035cd94 | ||
|
|
f1f126171c | ||
|
|
71e1bcd855 | ||
|
|
b5579b6307 | ||
|
|
110b0fe14a | ||
|
|
d7488bbb62 | ||
|
|
2007407e7b | ||
|
|
d152e7e780 | ||
|
|
d4f4b6682d | ||
|
|
7f4a12f4cd | ||
|
|
07d06adf86 | ||
|
|
47dc188d57 | ||
|
|
85d22541d2 | ||
|
|
90ec1031f9 | ||
|
|
9bc9ad13a4 | ||
|
|
1782c7d778 | ||
|
|
e85752c527 | ||
|
|
dfdbbb514f | ||
|
|
976f5ca93e | ||
|
|
2086f8d34c | ||
|
|
6873a68216 | ||
|
|
9eb2c61760 | ||
|
|
543e791206 | ||
|
|
b6e8b3fa84 | ||
|
|
6f8e406b7b | ||
|
|
93bc54b65c | ||
|
|
3bf0ac4a36 | ||
|
|
bc01bfff21 | ||
|
|
0d4eaf03fc | ||
|
|
2bb0412473 | ||
|
|
07ce5d3158 | ||
|
|
131970b3e5 | ||
|
|
00e1dbfbd9 | ||
|
|
4c274c524d | ||
|
|
5581ca2751 | ||
|
|
5cd9a9540f | ||
|
|
1db2efa75a | ||
|
|
c1a82bf3ea | ||
|
|
7705042cac | ||
|
|
b9e311e893 | ||
|
|
460998497d | ||
|
|
022c5e1411 | ||
|
|
60daf0d6c7 | ||
|
|
0b6a941624 | ||
|
|
1fc520b45a | ||
|
|
cbbee38be8 | ||
|
|
2dae6d8285 | ||
|
|
65c8a956f1 | ||
|
|
2b907e9a8c | ||
|
|
25e520c243 | ||
|
|
2124c8465a | ||
|
|
a49e1f4f3d | ||
|
|
32be4a7812 | ||
|
|
92967d3457 | ||
|
|
d70fee7432 | ||
|
|
97b8e75932 | ||
|
|
8a62f8cef0 | ||
|
|
10f4f523fa | ||
|
|
1e392d2628 | ||
|
|
eb6ff62113 | ||
|
|
64da2621da | ||
|
|
61aec6e961 | ||
|
|
42f3ad436d | ||
|
|
2f7b78c03a | ||
|
|
402d37d613 | ||
|
|
96327c979c | ||
|
|
9d1b3f59d5 | ||
|
|
14bd50efe4 | ||
|
|
631c1f95e7 | ||
|
|
50006f7e43 | ||
|
|
4c9503158b | ||
|
|
6c8e461db5 | ||
|
|
aaa8415169 | ||
|
|
51e964498c | ||
|
|
0cddc70ff5 | ||
|
|
99dcf7508f | ||
|
|
7822d1f148 | ||
|
|
a572a7126c | ||
|
|
a1609faba0 | ||
|
|
9bf823d893 | ||
|
|
ca184e7725 | ||
|
|
5054507487 | ||
|
|
ab93be0178 | ||
|
|
8b0993bb10 | ||
|
|
0a034bb3ea | ||
|
|
4ce815a3ed | ||
|
|
4da860eae1 | ||
|
|
27e4bdb814 | ||
|
|
dd9406cd52 | ||
|
|
509312773d | ||
|
|
42d2758c36 | ||
|
|
ef1c858ffc | ||
|
|
7fd47c0ac6 | ||
|
|
a63b232ef1 | ||
|
|
acb502e5e3 | ||
|
|
3661922bb0 | ||
|
|
0704f149be | ||
|
|
334604de5d | ||
|
|
530328ac15 | ||
|
|
9914a1eb3f | ||
|
|
5db5710d3f | ||
|
|
9e9f55a8e3 | ||
|
|
0800141a9d | ||
|
|
dc6d469f0c | ||
|
|
89299d77e4 | ||
|
|
27d8bf6311 | ||
|
|
8c229a8560 | ||
|
|
29eed65a67 | ||
|
|
f0e0073a09 | ||
|
|
b70bde58be | ||
|
|
635fac776d | ||
|
|
7753d4e91d | ||
|
|
66a6214216 | ||
|
|
6cae1f09f1 | ||
|
|
c4432ee827 | ||
|
|
80a5bf2063 | ||
|
|
5b3d5fc431 | ||
|
|
cd38fb4177 | ||
|
|
9b1cc75b36 | ||
|
|
db8b2883e2 | ||
|
|
59a74ecce4 | ||
|
|
9099c61df9 | ||
|
|
50521281ce | ||
|
|
0cc6abf741 | ||
|
|
fe266ae4fe | ||
|
|
7c15cdeb69 | ||
|
|
848086947c | ||
|
|
5ec4ea754c | ||
|
|
41467d54df | ||
|
|
8261437764 | ||
|
|
54eac368d0 | ||
|
|
72511ea1e9 | ||
|
|
da7921f2c6 | ||
|
|
cd519e97e7 | ||
|
|
2a7a5aeefe | ||
|
|
bdbacb41da | ||
|
|
2dd736a201 | ||
|
|
ec3c797105 | ||
|
|
770f05c060 | ||
|
|
6993a27d8e | ||
|
|
68fd658536 | ||
|
|
9fc349965d | ||
|
|
0a667ff741 | ||
|
|
d37ad85f72 | ||
|
|
2b63568611 | ||
|
|
fcf9f93825 | ||
|
|
07efc0b73b | ||
|
|
6813b48c7e | ||
|
|
d58444c6d2 | ||
|
|
dd8a0bd30f | ||
|
|
b65b0636aa | ||
|
|
9ec6321261 | ||
|
|
07eb66c205 | ||
|
|
0e790e6fb5 | ||
|
|
08186924a4 | ||
|
|
e9faf5cf94 | ||
|
|
8c0efe09e5 | ||
|
|
32d2c96d22 | ||
|
|
e958988989 | ||
|
|
131f10bd80 | ||
|
|
a61615a196 | ||
|
|
4fdb6910a5 | ||
|
|
67c4c90351 | ||
|
|
16f7288b19 | ||
|
|
36a7e87ae4 | ||
|
|
16badda118 | ||
|
|
99820e7edc | ||
|
|
6a03a92f5f | ||
|
|
80c3b98a84 | ||
|
|
afd2b4b387 | ||
|
|
df49769f3d | ||
|
|
05c2946322 | ||
|
|
2ed392edbf | ||
|
|
3d597a554d | ||
|
|
42af4e40ae | ||
|
|
242efc7219 | ||
|
|
a6bacb857d | ||
|
|
eab54724a1 | ||
|
|
49885cfeff | ||
|
|
4330f49011 | ||
|
|
7687299275 | ||
|
|
79ba787b03 | ||
|
|
5a184a205f | ||
|
|
4b5a6b597a | ||
|
|
9e9c3eeb79 | ||
|
|
cd996f9dbf | ||
|
|
ab4c91158a | ||
|
|
1130a23e5b | ||
|
|
9ac6943220 | ||
|
|
0f55284b77 | ||
|
|
c75046de3f | ||
|
|
e7df82f110 | ||
|
|
ee4c7d3007 | ||
|
|
2895303421 | ||
|
|
3f16f05525 | ||
|
|
fb33671923 | ||
|
|
482fb5b6e2 | ||
|
|
b1004b61f9 | ||
|
|
27af9b2605 | ||
|
|
e28ac866f8 | ||
|
|
5e0a80f227 | ||
|
|
ec0982ca1f | ||
|
|
e7c442d21c | ||
|
|
a9db47fdd3 | ||
|
|
b856a72886 | ||
|
|
03da0d31f9 | ||
|
|
1c40e4374b | ||
|
|
d7df1426f2 | ||
|
|
5035e86f59 | ||
|
|
0af91265ab | ||
|
|
8e63d04e66 | ||
|
|
5ac0c6deb0 | ||
|
|
6b0d82fb0c | ||
|
|
2bfdfe366c | ||
|
|
898fb0f320 | ||
|
|
f53686a2f3 | ||
|
|
eae1670f54 | ||
|
|
544d68833c | ||
|
|
c24a6b2359 | ||
|
|
b720b57d1d | ||
|
|
365b7fe90a | ||
|
|
c7ab833e66 | ||
|
|
9536f288e9 | ||
|
|
e64d4039d0 | ||
|
|
5f077e56f0 | ||
|
|
a9253a24e0 | ||
|
|
749136b526 | ||
|
|
36a8b7b7f3 | ||
|
|
a29908c865 | ||
|
|
57d87c27cd | ||
|
|
1c2e9a476c | ||
|
|
5d87133df0 | ||
|
|
fd2f67b73f | ||
|
|
d3abcaf67b | ||
|
|
14dce5ac2b | ||
|
|
abd002071a | ||
|
|
77add42eeb | ||
|
|
bba049b4bf | ||
|
|
4e41c3520c | ||
|
|
4144af3351 | ||
|
|
30f749a2a2 | ||
|
|
6e9f282af7 | ||
|
|
4491be01dd | ||
|
|
8c163fd980 | ||
|
|
9f6a158fc2 | ||
|
|
19965fa3c8 | ||
|
|
6bb42ffafc | ||
|
|
4a1edc0720 | ||
|
|
a5a016bf33 | ||
|
|
4be4f597a3 | ||
|
|
dfbbd4f784 | ||
|
|
2662dae560 | ||
|
|
6f6f9f08f8 | ||
|
|
a76fba57c4 | ||
|
|
680766f29b | ||
|
|
adcfd4ca4d | ||
|
|
e276a49a91 | ||
|
|
5995f763b1 | ||
|
|
a123639b5c | ||
|
|
8a118d53c8 | ||
|
|
d572391532 | ||
|
|
58ae7a0402 | ||
|
|
f843093a8c | ||
|
|
3e06586f81 | ||
|
|
60f148326a | ||
|
|
02e1413ca5 | ||
|
|
7b4b85ee54 | ||
|
|
6c0a416f16 | ||
|
|
23cc88bf92 | ||
|
|
5528f0ddf2 | ||
|
|
8d3296fb1b | ||
|
|
136f9209a3 | ||
|
|
a290134fd2 | ||
|
|
a54e59666a | ||
|
|
42ea6af1eb | ||
|
|
f9b741766b | ||
|
|
09359329a0 | ||
|
|
647bb41ddf | ||
|
|
f25c14d48d | ||
|
|
81a3d559f5 | ||
|
|
4e0ee7a5da | ||
|
|
1c80a258d2 | ||
|
|
129ed6a07b | ||
|
|
df09a0c73b | ||
|
|
ff5c958354 | ||
|
|
4f90c89db6 | ||
|
|
524b515fdb | ||
|
|
163256b001 | ||
|
|
05bbc65dcc | ||
|
|
6624f6b7f9 | ||
|
|
f32279dec5 | ||
|
|
a90fd85907 | ||
|
|
9815b27e94 | ||
|
|
ebbe481fe7 | ||
|
|
9e337faa33 | ||
|
|
37826e0261 | ||
|
|
20e4342796 | ||
|
|
51be16950d | ||
|
|
be866a78ff | ||
|
|
f9d2432c69 | ||
|
|
6543a3d75a | ||
|
|
a77936981e | ||
|
|
6f2120bb59 | ||
|
|
98e18239fd | ||
|
|
3d159015be | ||
|
|
f5af66a1ab | ||
|
|
540192ff96 | ||
|
|
c1cfd4a8c6 | ||
|
|
322300c329 | ||
|
|
1ac18f7903 | ||
|
|
4f4987e9ea | ||
|
|
65bf562ff4 | ||
|
|
f47032e7e9 | ||
|
|
379f3ec8dd | ||
|
|
8d7e35b723 | ||
|
|
1349eea0d0 | ||
|
|
bed5157f32 | ||
|
|
12c7f51a1e | ||
|
|
7e32c8de4d | ||
|
|
3a42350c21 | ||
|
|
1a54597202 | ||
|
|
39f4eb9940 | ||
|
|
4b996651af | ||
|
|
884d40f321 | ||
|
|
3d2b41da08 | ||
|
|
1bf2dbb7df | ||
|
|
e0dfb77dd1 | ||
|
|
578fddc1b7 | ||
|
|
089355d706 | ||
|
|
6b2c3caf03 | ||
|
|
065c37cb28 | ||
|
|
3a40025fd3 | ||
|
|
8dc341d868 | ||
|
|
0ed121ddbd | ||
|
|
969f4229dc | ||
|
|
27a940184e | ||
|
|
77fa09a506 | ||
|
|
8836104ab2 | ||
|
|
396837517d | ||
|
|
38b3f1bde2 | ||
|
|
4780168ba8 | ||
|
|
d1a790d103 | ||
|
|
3ad6ab8c6a | ||
|
|
1e189da85e | ||
|
|
a094c50873 | ||
|
|
ad324410c6 | ||
|
|
9f4b7368a0 | ||
|
|
c8ddedb8d0 | ||
|
|
7deab2826b | ||
|
|
643879f779 | ||
|
|
ce2a18f483 | ||
|
|
487d067f75 | ||
|
|
c4d5e1b4f3 | ||
|
|
0e0cc30039 | ||
|
|
a766cc791b | ||
|
|
d017c3e248 | ||
|
|
cc27ee04a8 | ||
|
|
87459bf24b | ||
|
|
5091c9e10f | ||
|
|
14a22d9033 | ||
|
|
7ded5a2de5 | ||
|
|
6b436a0192 | ||
|
|
52343686f5 | ||
|
|
eec9d05b19 | ||
|
|
89703fd430 | ||
|
|
dc246946a7 | ||
|
|
944e1120cb | ||
|
|
cccda60df8 | ||
|
|
e338e748eb | ||
|
|
0526a24cf3 | ||
|
|
c4ba1b025a | ||
|
|
252f330658 | ||
|
|
45590415a6 | ||
|
|
e562adc752 | ||
|
|
1e2fd44a6b | ||
|
|
1c903320be | ||
|
|
74eaf3a268 | ||
|
|
6fcd74c713 | ||
|
|
33136c6553 | ||
|
|
cb225db203 | ||
|
|
0dbd5006ea | ||
|
|
08b3677ce8 | ||
|
|
b08549a25b | ||
|
|
221bc4cb5d | ||
|
|
b655b8e97b | ||
|
|
03e7b5dcc6 | ||
|
|
5f09e829df | ||
|
|
e6759919dc | ||
|
|
6c65a3fc74 | ||
|
|
e0ffd31123 | ||
|
|
4c1597113a | ||
|
|
4006506b64 | ||
|
|
14facdbcd2 | ||
|
|
726ace49d8 | ||
|
|
f45d383367 | ||
|
|
3a32e2b53a | ||
|
|
dc45e93cea | ||
|
|
c0f9642719 | ||
|
|
da8d036997 | ||
|
|
3c911cc785 | ||
|
|
4071f15f27 | ||
|
|
90de7923db | ||
|
|
c28f1535a3 | ||
|
|
704e9c132e | ||
|
|
713d6f5f76 | ||
|
|
1a6d245eae | ||
|
|
d909dd2a32 | ||
|
|
7bb466dd86 | ||
|
|
e09bf5cc40 | ||
|
|
129e21e7c3 | ||
|
|
87dcd2909d | ||
|
|
e47ec4f551 | ||
|
|
d6cfcbe149 | ||
|
|
7a713807e9 | ||
|
|
6e49b5bc30 | ||
|
|
adbc5b86f5 | ||
|
|
071ea955af | ||
|
|
806aefa966 | ||
|
|
5b7d23186d | ||
|
|
0cb4677e80 | ||
|
|
bd65ecf17b | ||
|
|
9da2adff4c | ||
|
|
a2a1aad109 | ||
|
|
dcc530a389 | ||
|
|
97037a87f3 | ||
|
|
4e67efc0d6 | ||
|
|
7cbb73719e | ||
|
|
d3f139c31e | ||
|
|
8940b6e5a3 | ||
|
|
1c9831a9f4 | ||
|
|
7da27435cc | ||
|
|
bd18f86517 | ||
|
|
41f66b435b | ||
|
|
48481a7230 | ||
|
|
dde6bc1f80 | ||
|
|
e39fd1de0e | ||
|
|
2fc9a81e9e | ||
|
|
f65874d751 | ||
|
|
3914895784 | ||
|
|
0bc7e24d0a | ||
|
|
2a40ceced7 | ||
|
|
d4868f2cc2 | ||
|
|
e87d63779d | ||
|
|
6672d65018 | ||
|
|
1f78c520f5 | ||
|
|
687e435a38 | ||
|
|
b3222dc107 | ||
|
|
ebba6caa3d | ||
|
|
88bbef9003 | ||
|
|
712771a139 | ||
|
|
9033b0ded7 | ||
|
|
877cfe9393 | ||
|
|
347aa56acb | ||
|
|
0fc410139c | ||
|
|
51528235db | ||
|
|
003599cbda | ||
|
|
bacfad37a9 | ||
|
|
6ef6ba7b8a | ||
|
|
93c0da0367 | ||
|
|
268d19e8a3 | ||
|
|
a383b302c2 | ||
|
|
95ebbf2608 | ||
|
|
f880574c78 | ||
|
|
350c310906 | ||
|
|
5026f7686e | ||
|
|
ab3337ddf5 | ||
|
|
c9268f2e3d | ||
|
|
fa01388f97 | ||
|
|
d8dc89ac7b | ||
|
|
a659fd1fa9 | ||
|
|
27fa3ba34c | ||
|
|
663f42948e | ||
|
|
baca8f0cdb | ||
|
|
c5c3a82b23 | ||
|
|
c0617864e1 | ||
|
|
d9ef9ab497 | ||
|
|
65d9f783e1 | ||
|
|
f70232d1b0 | ||
|
|
b083aed245 | ||
|
|
0faac20d53 | ||
|
|
cef14ca7cd | ||
|
|
090debe0df | ||
|
|
296f1270ee | ||
|
|
334a18a114 | ||
|
|
dd4ddae082 | ||
|
|
4983e967bc | ||
|
|
0b5e2f14ed | ||
|
|
70102aecb5 | ||
|
|
ae75153561 | ||
|
|
dd23d60513 | ||
|
|
db95481b76 | ||
|
|
3e0da535b9 | ||
|
|
c74602551e | ||
|
|
1722e2c7a5 | ||
|
|
8a845e2951 | ||
|
|
72765bada0 | ||
|
|
b380f180cc | ||
|
|
f1799799a1 | ||
|
|
4bc8a8673d | ||
|
|
cbdd907393 | ||
|
|
aa7ff3ef47 | ||
|
|
ebdf6434eb | ||
|
|
9b7470d204 | ||
|
|
9f3ab8683c | ||
|
|
fa464aca90 | ||
|
|
2724ce368a | ||
|
|
89f7cbe877 | ||
|
|
fab9af2206 | ||
|
|
4d01b4fa59 | ||
|
|
c3365aa37e | ||
|
|
426e80d4c3 | ||
|
|
30a282d126 | ||
|
|
0a96621e3e | ||
|
|
d9d30abe7a | ||
|
|
03b56d8140 | ||
|
|
1f79ce4e96 | ||
|
|
8d80f23a0f | ||
|
|
d89b951451 | ||
|
|
1906a38ec8 | ||
|
|
8d91a3e3b8 | ||
|
|
3324259977 | ||
|
|
ec2db2d541 | ||
|
|
5cf248c7f3 | ||
|
|
3876a566ff | ||
|
|
334e6cc618 | ||
|
|
64033fcfc2 | ||
|
|
fbe3af4719 | ||
|
|
699ed4ee85 | ||
|
|
903f67a154 | ||
|
|
9a89dab9e0 | ||
|
|
435a2565b8 | ||
|
|
8267b8da57 | ||
|
|
8b5773c246 | ||
|
|
fd4c88d202 | ||
|
|
9b26623aa5 | ||
|
|
b115ec7c14 | ||
|
|
a2e6e2a06a | ||
|
|
f0eab06a8b | ||
|
|
b6c839d693 | ||
|
|
177a724d58 | ||
|
|
949803dcf6 | ||
|
|
b763a88e60 | ||
|
|
18c7f164a8 | ||
|
|
e037ff6bba | ||
|
|
95bfda1ff0 | ||
|
|
b9992e0b45 | ||
|
|
f6ba793885 | ||
|
|
bbe65a8ea3 | ||
|
|
20af7371d0 | ||
|
|
a33fb0c439 | ||
|
|
87003c8b5b | ||
|
|
ddd48ee79f | ||
|
|
a9819df3ee | ||
|
|
15dffb22aa | ||
|
|
6ef5f1ff62 | ||
|
|
acc28c68a4 | ||
|
|
6c2da60eb0 | ||
|
|
490081077d | ||
|
|
f4a08092da | ||
|
|
0116efd4a3 | ||
|
|
9719a24f8a | ||
|
|
3a7d5a099b | ||
|
|
27dba655fc | ||
|
|
a25dd387bf | ||
|
|
a89767cc16 | ||
|
|
a13df5b68d | ||
|
|
6a689504ff | ||
|
|
6521d2bcfb | ||
|
|
26d55b15de | ||
|
|
041b7e8a29 | ||
|
|
6eeb425e7a | ||
|
|
d2d0eb829e | ||
|
|
058505b664 | ||
|
|
8adecedb40 | ||
|
|
838a51db21 | ||
|
|
4d4dfc27fc | ||
|
|
1444439cf3 | ||
|
|
e64fc8d5ab | ||
|
|
9a31f772d9 | ||
|
|
12876ee4ce | ||
|
|
a4a349da45 | ||
|
|
ecbc3cae71 | ||
|
|
57609c87fb | ||
|
|
bb2e24e028 | ||
|
|
5cafb26e93 | ||
|
|
f74ef7b293 | ||
|
|
7ef8f531e7 | ||
|
|
afb65c7b19 | ||
|
|
74a0673663 | ||
|
|
20fae6e512 | ||
|
|
509cd242f7 | ||
|
|
f01ec516eb | ||
|
|
394b1000d2 | ||
|
|
e0b9fba788 | ||
|
|
378ee29cc2 | ||
|
|
02bcef71dd | ||
|
|
248e7c8003 | ||
|
|
a2e93ebd56 | ||
|
|
21a9454de1 | ||
|
|
ec286eed08 | ||
|
|
f16978d1fe | ||
|
|
fa3adc7606 | ||
|
|
192144fc5d | ||
|
|
a4d155c5e4 | ||
|
|
6c56e9d199 | ||
|
|
bb18f87a98 | ||
|
|
dda6a31381 | ||
|
|
6e25e18e98 | ||
|
|
ffd978c24f | ||
|
|
4c4af03a5a | ||
|
|
c0739bb8b7 | ||
|
|
5add7cb0b1 | ||
|
|
99f49f1061 | ||
|
|
401eaca9ab | ||
|
|
da784fe02b | ||
|
|
d507b29559 | ||
|
|
35ca13b38d | ||
|
|
04b92a31a8 | ||
|
|
dd311d759d | ||
|
|
b504ca9f0a | ||
|
|
bd61c5c721 | ||
|
|
24694b0047 | ||
|
|
5258154285 | ||
|
|
221f993b46 | ||
|
|
ae5ea70b93 | ||
|
|
f59ffbeb63 | ||
|
|
ce55275634 | ||
|
|
20c5892f9a | ||
|
|
9231245a3f | ||
|
|
cbfed20e6f | ||
|
|
640274ed52 | ||
|
|
1507a39a2b | ||
|
|
e6405653d8 | ||
|
|
be1541a646 | ||
|
|
f37f9bf5e3 | ||
|
|
a5c39ca8c8 | ||
|
|
cb7e7b2a74 | ||
|
|
2e8e705bab | ||
|
|
ab3812432b | ||
|
|
d2acb36e3b | ||
|
|
601743ff7a | ||
|
|
7eca74ac05 | ||
|
|
02b4ec04bb | ||
|
|
8ead9014d0 | ||
|
|
4920e82dd6 | ||
|
|
3150253661 | ||
|
|
baa423b45a | ||
|
|
77e5d8ea96 | ||
|
|
9a8166d649 | ||
|
|
da8c0cd2db | ||
|
|
fc2711b543 | ||
|
|
b4327bd36c | ||
|
|
f7f75923aa | ||
|
|
0b4388bc5b | ||
|
|
f08883071f | ||
|
|
bb8a2ee3a6 | ||
|
|
6bfa7595d8 | ||
|
|
8308e501cd | ||
|
|
25909c0d9d | ||
|
|
2844b1ac38 | ||
|
|
6fd62b1cee | ||
|
|
1579f53a61 | ||
|
|
7af7851952 | ||
|
|
5dbd1a6dcc | ||
|
|
24881537a1 | ||
|
|
631c29b26b | ||
|
|
ab249d4032 | ||
|
|
5bfa3f6274 | ||
|
|
82ee25dfaa | ||
|
|
fd9a24553f | ||
|
|
ae1c20fad9 | ||
|
|
734f777ff9 | ||
|
|
498115d5d9 | ||
|
|
033ff06b68 | ||
|
|
c145a8e1a1 | ||
|
|
ae5b0dbc29 | ||
|
|
95aa957c80 | ||
|
|
7dff9ddeeb | ||
|
|
b4e755747f | ||
|
|
348fa402be | ||
|
|
344218ff3d | ||
|
|
90a1a2febf | ||
|
|
e234a24894 | ||
|
|
d9beb75bd6 | ||
|
|
dadea8c83d | ||
|
|
31d40e5509 | ||
|
|
a917e84b51 | ||
|
|
f30b497206 | ||
|
|
706e32c20b | ||
|
|
4d98552c37 | ||
|
|
5311bd3f4e | ||
|
|
8d716fb7ba | ||
|
|
01b3caaf49 | ||
|
|
cd73c0b9ca | ||
|
|
7ec5230402 | ||
|
|
9dbe026f83 | ||
|
|
3fae10da3e | ||
|
|
d775154b92 | ||
|
|
6c306b3542 | ||
|
|
58b46ffeac | ||
|
|
0bb7b7c60e | ||
|
|
58adf9a385 | ||
|
|
d6ba968ace | ||
|
|
1706721a62 | ||
|
|
7f88bd2eaf | ||
|
|
b819366265 | ||
|
|
47ff7d9dba | ||
|
|
e5f5254877 | ||
|
|
4778f728f9 | ||
|
|
e80e4573be | ||
|
|
fdf0f3f282 | ||
|
|
a81fce47d0 | ||
|
|
2cd6989b11 | ||
|
|
21abb0d205 | ||
|
|
5e1a271ca2 | ||
|
|
868e4c41e1 | ||
|
|
a6e23bb713 | ||
|
|
446406dd62 | ||
|
|
091f9f7eae | ||
|
|
10b1e06263 | ||
|
|
a8865a51fd | ||
|
|
32343297fc | ||
|
|
aaa5deb0c0 | ||
|
|
808c519a1f | ||
|
|
262b110f9f | ||
|
|
d0fe19f996 | ||
|
|
8e6675677f | ||
|
|
82dbae6185 | ||
|
|
943f1df325 | ||
|
|
018abcfe5f | ||
|
|
6b4f716508 | ||
|
|
82b6ff0c28 | ||
|
|
d0c3132a63 | ||
|
|
02f0252dea | ||
|
|
74b3921eee | ||
|
|
1695c79021 | ||
|
|
a3b0534b86 | ||
|
|
a13f94d40f | ||
|
|
73288420a8 | ||
|
|
e224387eb4 | ||
|
|
626d322639 | ||
|
|
7dce7a84c7 | ||
|
|
6234268f10 | ||
|
|
7a1525c568 | ||
|
|
fe99eb7147 | ||
|
|
d691ecbea3 | ||
|
|
f60bcca893 | ||
|
|
75661a2266 | ||
|
|
1026f361ef | ||
|
|
69fe203006 | ||
|
|
f8ccaa3a81 | ||
|
|
c10a0a0cdf | ||
|
|
aceb6ab666 | ||
|
|
c3a2aff9d3 | ||
|
|
c9e41db826 | ||
|
|
1e7a12fff5 | ||
|
|
ba88e48f6a | ||
|
|
52979662c5 | ||
|
|
50e6d80065 | ||
|
|
16a24cfeac | ||
|
|
bab095e5b5 | ||
|
|
b1a3b078e9 | ||
|
|
baae44610a | ||
|
|
8d2dffe5b4 | ||
|
|
7b3eb23af8 | ||
|
|
fb526846fe | ||
|
|
6bd1371283 | ||
|
|
3c8c7af196 | ||
|
|
929b43ed48 | ||
|
|
a947064b7d | ||
|
|
5bc9866f43 | ||
|
|
61d82e210a | ||
|
|
a876ac9386 | ||
|
|
da1502c463 | ||
|
|
76bb782f64 | ||
|
|
e6f4b043cb | ||
|
|
d651ffaf2e | ||
|
|
e554378b5e | ||
|
|
b463bd797e | ||
|
|
699e6e16c9 | ||
|
|
f8477c41e1 | ||
|
|
9a63333aec | ||
|
|
6e40914258 | ||
|
|
56a1dd931e | ||
|
|
57fd2e6a52 | ||
|
|
113db06cdd | ||
|
|
4ee5c59cfd | ||
|
|
15812678a3 | ||
|
|
ee0379b321 | ||
|
|
dcf279177d | ||
|
|
01115824f7 | ||
|
|
b68473ae11 | ||
|
|
a65c203c9b | ||
|
|
0a848240d4 | ||
|
|
d03821b88a | ||
|
|
4d32762899 | ||
|
|
2cb4b6d16d | ||
|
|
b770e566dd | ||
|
|
51ebc88f0c | ||
|
|
a04a75724d | ||
|
|
6e5af3d799 | ||
|
|
0283a73a32 | ||
|
|
5f593031f0 | ||
|
|
0eeef2d4bd | ||
|
|
bb6164e30b | ||
|
|
d3beae4871 | ||
|
|
8df0df32f8 | ||
|
|
b0228dd0fd | ||
|
|
ffca2dee1d | ||
|
|
cba985bfea | ||
|
|
6a10a67205 | ||
|
|
880fb5bd89 | ||
|
|
6a0ade074d | ||
|
|
6cf4629d0f | ||
|
|
ce23e5fa9e | ||
|
|
d16fb838ca | ||
|
|
6b9eb8aae3 | ||
|
|
78008d1fea | ||
|
|
69fb9bb39b | ||
|
|
92f1557235 | ||
|
|
8e487ba36d | ||
|
|
7eb088b5ed | ||
|
|
9ef8ea95b0 | ||
|
|
eedf54b485 | ||
|
|
a461815957 | ||
|
|
687c2f08f6 | ||
|
|
2294f23e5f | ||
|
|
bdfd81322b | ||
|
|
3ceb0de8d8 | ||
|
|
c4b5208867 | ||
|
|
9c3f6b0c10 | ||
|
|
0550755c7d | ||
|
|
47602f267a | ||
|
|
656e67ef90 | ||
|
|
c53883b635 | ||
|
|
c4278c81f1 | ||
|
|
c94dcf5940 | ||
|
|
08ca3eff12 | ||
|
|
b40a241b2e | ||
|
|
f86f1e83ad | ||
|
|
be85701abe | ||
|
|
190eb474a6 | ||
|
|
8db1138081 | ||
|
|
afbfd4d3fa | ||
|
|
9b8efbfdd5 | ||
|
|
cacada87f3 | ||
|
|
8a36c54318 | ||
|
|
879d411669 | ||
|
|
b38be2ce7b | ||
|
|
1810c9b61c | ||
|
|
98737f14f1 | ||
|
|
b311118a04 | ||
|
|
8a337f1faf | ||
|
|
dbc5bd4104 | ||
|
|
a9c3f566da | ||
|
|
6d9c9cd964 | ||
|
|
25c8883e49 | ||
|
|
793943fc2f | ||
|
|
e98f86c540 | ||
|
|
1c8ff48f92 | ||
|
|
1fb73e2211 | ||
|
|
5279ade0e7 | ||
|
|
984134fb9d | ||
|
|
eb8f1f24b7 | ||
|
|
e49dc8bcfa | ||
|
|
e742da24a7 | ||
|
|
203b65475c | ||
|
|
576c5f4c9e | ||
|
|
d2434b5591 | ||
|
|
634c008fcd | ||
|
|
83f1ccb8ad | ||
|
|
cea401c513 | ||
|
|
6b54c1b6d4 | ||
|
|
193c4a953e | ||
|
|
d389134036 | ||
|
|
d8b140e341 | ||
|
|
5931e1143b | ||
|
|
e6d0c4b79f | ||
|
|
44a4a18320 | ||
|
|
2f96506a6e | ||
|
|
f904606b32 | ||
|
|
99bb14680a | ||
|
|
83df3dda95 | ||
|
|
5e4d67209c | ||
|
|
2798af1668 | ||
|
|
f0e41ce4c7 | ||
|
|
300602dd32 | ||
|
|
136f6778e2 | ||
|
|
2fa7907054 | ||
|
|
f3803c4c22 | ||
|
|
5d37927b0a | ||
|
|
6227f5cfa2 | ||
|
|
9fbb9fa5e1 | ||
|
|
de81ee7ee6 | ||
|
|
5fcf971e28 | ||
|
|
492f70fc4b | ||
|
|
3ced7b7212 | ||
|
|
7b55867ea7 | ||
|
|
3e15ef1c86 | ||
|
|
0cdc836054 | ||
|
|
1aad62b95d | ||
|
|
ed1c88920e | ||
|
|
e6ca20c4a2 | ||
|
|
cfa3470df6 | ||
|
|
479f297cf6 | ||
|
|
7e1b222f90 | ||
|
|
69baa6ea1a | ||
|
|
0fce93be37 | ||
|
|
51611ec2bb | ||
|
|
228a78136d | ||
|
|
34d10ace7a | ||
|
|
57bd0a5628 | ||
|
|
42e4860855 | ||
|
|
ea1c9f70d7 | ||
|
|
d3085b0450 | ||
|
|
63d02f1d5f | ||
|
|
dfecbe5bfa | ||
|
|
bcf9f00de5 | ||
|
|
a8e8e35678 | ||
|
|
2ec4a8b4ce | ||
|
|
6c3d3dee81 | ||
|
|
40b3116ed7 | ||
|
|
df7582b138 | ||
|
|
b08dab9aa1 | ||
|
|
da5a4804df | ||
|
|
d12f43498e | ||
|
|
f9f2facd76 | ||
|
|
eaee3954c1 | ||
|
|
eb235e11b6 | ||
|
|
0c5fe61ed3 | ||
|
|
76052b443a | ||
|
|
5a48248e1e | ||
|
|
bedff3278f | ||
|
|
0bb48153a5 | ||
|
|
b75246e3ca | ||
|
|
2d31f0d7fe | ||
|
|
87cfca721e | ||
|
|
54d36f3337 | ||
|
|
a4a17d171a | ||
|
|
7c2673fc66 | ||
|
|
c77ecbb10f | ||
|
|
f0ba57ba23 | ||
|
|
893aa80361 | ||
|
|
59ac3d1d45 | ||
|
|
247a9478c8 | ||
|
|
1c64d858c2 | ||
|
|
91a1d7faaf | ||
|
|
214bbfa7b6 | ||
|
|
3ee4492b3c | ||
|
|
38c453b3c6 | ||
|
|
3d41c61991 | ||
|
|
1f9f47f97e | ||
|
|
41cc2923b1 | ||
|
|
4c180f3eed | ||
|
|
5f9a64dbea | ||
|
|
9d37bfdcf1 | ||
|
|
d738c3aca6 | ||
|
|
836c4313ab | ||
|
|
91c6478add | ||
|
|
fce527a55b | ||
|
|
9a1f62fc1f | ||
|
|
018d8656d3 | ||
|
|
2636e1ba45 | ||
|
|
caed07dfc1 | ||
|
|
373cf3328d | ||
|
|
0370c3fa01 | ||
|
|
f5143a7d63 | ||
|
|
346b2a27cb | ||
|
|
38281e6361 | ||
|
|
6e8413f568 | ||
|
|
cb04364381 | ||
|
|
83d2555123 | ||
|
|
0ace97c8d4 | ||
|
|
9e3a0c61b8 | ||
|
|
2fda5c7873 | ||
|
|
e29868c8ce | ||
|
|
ac560be870 | ||
|
|
5a29cbf4a7 | ||
|
|
dc77894f68 | ||
|
|
74432a6b9d | ||
|
|
2b2fa7e77c | ||
|
|
c3f71b33aa | ||
|
|
927aae72d1 | ||
|
|
2a674f4e8d | ||
|
|
0b86ce2bda | ||
|
|
548a0709f4 | ||
|
|
da84c0bb4d | ||
|
|
9e68a5b9ab | ||
|
|
6982bdaa28 | ||
|
|
c1809232fe | ||
|
|
3c06c82eb7 | ||
|
|
1bcccb3134 | ||
|
|
cdf49dc87e | ||
|
|
0a0fb8f803 | ||
|
|
60cfd56369 | ||
|
|
73050d38c5 | ||
|
|
c50e941972 | ||
|
|
7c59fd21e2 | ||
|
|
b095a4221c | ||
|
|
1ef39fa3b8 | ||
|
|
fcf4530d83 | ||
|
|
0515e14d27 | ||
|
|
ddbef0bd79 | ||
|
|
bc5d31f86a | ||
|
|
09147a2aab | ||
|
|
a75a119e2f | ||
|
|
c1b3546161 | ||
|
|
8338432c7b | ||
|
|
8beae065cf | ||
|
|
0e7d39aa13 | ||
|
|
74063ad735 | ||
|
|
55a29808c9 | ||
|
|
40f3de3939 | ||
|
|
5d94ab09e3 | ||
|
|
b34ff6853d | ||
|
|
e2570be957 | ||
|
|
95e6fff3da | ||
|
|
9de12b7385 | ||
|
|
beffe906e4 | ||
|
|
e850d1073d | ||
|
|
c02a2ba5ba | ||
|
|
f92bb6690b | ||
|
|
5842a3bba6 | ||
|
|
fcf691d97c | ||
|
|
a32c7d5f07 | ||
|
|
edfb18b75a | ||
|
|
5544c5d5d4 | ||
|
|
22100f7c3a | ||
|
|
8ece01ccda | ||
|
|
9b68039a62 | ||
|
|
a914326e75 | ||
|
|
2b7dd35e05 | ||
|
|
15e41169ad | ||
|
|
f8c5219c12 | ||
|
|
c570b67dda | ||
|
|
456fac1700 | ||
|
|
41e58c394b | ||
|
|
5aeda5f67b | ||
|
|
c96adf168c | ||
|
|
40c5bc01ff | ||
|
|
09dabef70c | ||
|
|
96edee806e | ||
|
|
e58f4683d1 | ||
|
|
9750817bf0 | ||
|
|
7099d730e6 | ||
|
|
13c290e99f | ||
|
|
cf37966e39 | ||
|
|
9449c4b9b5 | ||
|
|
046172e5d9 | ||
|
|
c74446e38c | ||
|
|
7897460993 | ||
|
|
4b59583bca | ||
|
|
41f73559f2 | ||
|
|
d3090c0965 | ||
|
|
dc5caebbf8 | ||
|
|
14280dfedb | ||
|
|
8fdf11135a | ||
|
|
c8baa8f349 | ||
|
|
a6e25b46af | ||
|
|
395d14ab58 | ||
|
|
0d4b57df7a | ||
|
|
416e7617b3 | ||
|
|
838c470017 | ||
|
|
f0a09665db | ||
|
|
1397fa64d5 | ||
|
|
ac17a6afcf | ||
|
|
35af1bab30 | ||
|
|
1fe7bb271a | ||
|
|
774e25d944 | ||
|
|
6770e8541d | ||
|
|
70e94e4dde | ||
|
|
0ffbc6e345 | ||
|
|
25e796753f | ||
|
|
70d9ef4f77 | ||
|
|
fd67c9a589 | ||
|
|
f0917ff774 | ||
|
|
843281dec0 | ||
|
|
3a21588429 | ||
|
|
21eeb09a3c | ||
|
|
900c5ed358 | ||
|
|
195c8a92d1 | ||
|
|
7c651e6093 | ||
|
|
860b899f0c | ||
|
|
87b7524de9 | ||
|
|
29641ae16a | ||
|
|
02e32a7a9d | ||
|
|
3056369c6e | ||
|
|
3da75726d3 | ||
|
|
b7346de47d | ||
|
|
7a69100b2f | ||
|
|
2732d2b9d3 | ||
|
|
87bb27cc4f | ||
|
|
bafa300b0f | ||
|
|
939cf4542f | ||
|
|
874975da54 | ||
|
|
f0bebd4c33 | ||
|
|
c444a11862 | ||
|
|
4c0704e338 | ||
|
|
77f4cd5d58 | ||
|
|
9858d3c5a8 | ||
|
|
414acbc9ec | ||
|
|
21f904db42 | ||
|
|
f6ca253849 | ||
|
|
3f989191e3 | ||
|
|
2bea014e89 | ||
|
|
84fc19a75f | ||
|
|
d803924ef0 | ||
|
|
889f8d9d30 | ||
|
|
1dcb7eaf1f | ||
|
|
5f9e4ace2f | ||
|
|
6386330973 | ||
|
|
fd89b9755e | ||
|
|
730f454278 | ||
|
|
e2fca29c91 | ||
|
|
f97a222cf5 | ||
|
|
c75105e977 | ||
|
|
7096471d65 | ||
|
|
cc1cee8a38 | ||
|
|
5f2680889f | ||
|
|
b3ae8bb606 | ||
|
|
72d9f37845 | ||
|
|
fdfccafd84 | ||
|
|
a784f946ba | ||
|
|
a04af6c4bd | ||
|
|
64b24a96c8 | ||
|
|
a62a5d0d7b | ||
|
|
3043d1e839 | ||
|
|
a3aefb6902 | ||
|
|
a42aaa270c | ||
|
|
f8b471c17b | ||
|
|
87adff44db | ||
|
|
767bba9c04 | ||
|
|
0c827521d0 | ||
|
|
80cec7d12f | ||
|
|
5f916357e9 | ||
|
|
ea82eea9bb | ||
|
|
22222d7db4 | ||
|
|
cebee369d1 | ||
|
|
faf809851c | ||
|
|
d05aafd76b | ||
|
|
8d52721873 | ||
|
|
66c6152cd2 | ||
|
|
32cd51d3a5 | ||
|
|
497a28401e | ||
|
|
e46912047c | ||
|
|
56b573ede5 | ||
|
|
0276be1789 | ||
|
|
7db4c60fc3 | ||
|
|
95cc01dd91 | ||
|
|
cce1dddf42 | ||
|
|
0938b57841 | ||
|
|
aef8550e2f | ||
|
|
71bf0bde32 | ||
|
|
750623b9b1 | ||
|
|
1f12c53b65 | ||
|
|
8717ea1b95 | ||
|
|
db2eb658ca | ||
|
|
70483484ce | ||
|
|
d21afc43a1 | ||
|
|
7ad0803f2e | ||
|
|
ec4bfd55f9 | ||
|
|
f65174a0db | ||
|
|
8b1fcd4dd7 | ||
|
|
9509237958 | ||
|
|
f20fd20a06 | ||
|
|
8e48120fb7 | ||
|
|
44cc5ac883 | ||
|
|
9a43cc8c4b | ||
|
|
8dfc0d54f4 | ||
|
|
77febd21de | ||
|
|
84a997c66b | ||
|
|
b900a59fc2 | ||
|
|
ca782dbc58 | ||
|
|
746cda27ec | ||
|
|
16d1651656 | ||
|
|
4735fb2377 | ||
|
|
ec6b518fd2 | ||
|
|
580ad1b192 | ||
|
|
23d8810486 | ||
|
|
d579d62eb6 | ||
|
|
529f785e3c | ||
|
|
0581ae87b4 | ||
|
|
cda1059336 | ||
|
|
1aed6b5c30 | ||
|
|
4e68705b24 | ||
|
|
216cb1ea12 | ||
|
|
8ef6a0b432 | ||
|
|
5dc152c46e | ||
|
|
c3a21437e4 | ||
|
|
32bc8dcbf9 | ||
|
|
677ca7b4aa | ||
|
|
dfc2331104 | ||
|
|
cd06bbfb8d | ||
|
|
1d596bcbac | ||
|
|
0cb7b9c13d | ||
|
|
a180efeca7 | ||
|
|
eef24ea29c | ||
|
|
458bb3d7f7 | ||
|
|
ffb23d92c0 | ||
|
|
0ce39a4cf6 | ||
|
|
a24c70e490 | ||
|
|
8d4ef6e883 | ||
|
|
54865ebdee | ||
|
|
cb8e704d5c | ||
|
|
57f4978442 | ||
|
|
b8833f4c9e | ||
|
|
5c40cbc675 | ||
|
|
a455dcc919 | ||
|
|
289487cc46 | ||
|
|
42b28d5bd6 | ||
|
|
46bee05d93 | ||
|
|
49bed5cd5f | ||
|
|
624cf93e2e | ||
|
|
6ab76cda51 | ||
|
|
15beb81368 | ||
|
|
6a6cce03b7 | ||
|
|
970ff87ef6 | ||
|
|
8b6c4d322f | ||
|
|
4467a00acd | ||
|
|
63efc61517 | ||
|
|
7aa18345c8 | ||
|
|
34149187a8 | ||
|
|
2d132cd0d5 | ||
|
|
8d741361e0 | ||
|
|
2bcea3a370 | ||
|
|
ead3cace02 | ||
|
|
7afa5c7b43 | ||
|
|
115765e1ee | ||
|
|
d712fae2d7 | ||
|
|
0dba9bd87f | ||
|
|
2fbc495088 | ||
|
|
37d490cbe4 | ||
|
|
451679c582 | ||
|
|
7270a13ef7 | ||
|
|
16f3f90ed7 | ||
|
|
9ff2f81a10 | ||
|
|
1bc9a1af6a | ||
|
|
760d9e3341 | ||
|
|
5b28abc5ed | ||
|
|
defb1596bb | ||
|
|
9c117d5875 | ||
|
|
1b09fce42a | ||
|
|
5e328830e7 | ||
|
|
606da1c45b | ||
|
|
6232c1a8f3 | ||
|
|
15a24e68d2 | ||
|
|
c12ace81db | ||
|
|
531990b516 | ||
|
|
b90a3dbffe | ||
|
|
0352b97798 | ||
|
|
e45abe60bf | ||
|
|
8077481707 | ||
|
|
4651dd33cd | ||
|
|
c93cfa0871 | ||
|
|
d57cb7d411 | ||
|
|
81088766ee | ||
|
|
ae59a50c28 | ||
|
|
4a05056393 | ||
|
|
71e97c815a | ||
|
|
8b7787aa60 | ||
|
|
e0f94b052b | ||
|
|
eb2c9ffd32 | ||
|
|
5af315c165 | ||
|
|
e9fdfc339b | ||
|
|
132730acea | ||
|
|
405097d323 | ||
|
|
c9d79f26c5 | ||
|
|
7ef13eaf0c | ||
|
|
2756aba21f | ||
|
|
c01a7f57df | ||
|
|
33a4dd3841 | ||
|
|
3c150db4a2 | ||
|
|
e31f5d2325 | ||
|
|
f8a61c667e | ||
|
|
e2fe60399f | ||
|
|
59c4e35691 | ||
|
|
2dc5afd018 | ||
|
|
b5df39bc46 | ||
|
|
f87b709923 | ||
|
|
671aa1036b | ||
|
|
4580340db3 | ||
|
|
31b53eae39 | ||
|
|
089423958d | ||
|
|
0d02ea43e1 | ||
|
|
93239ae3fb | ||
|
|
5d21e9364d | ||
|
|
b9306c4cca | ||
|
|
c07bd31f61 | ||
|
|
fee4830669 | ||
|
|
9016b6778e | ||
|
|
e05501a1ae | ||
|
|
23d09fcc9e | ||
|
|
5d11fccbf2 | ||
|
|
3851957dd0 | ||
|
|
135afb0883 | ||
|
|
27b27af7cd | ||
|
|
20fe31b803 | ||
|
|
ebca9aab8d | ||
|
|
49821e0416 | ||
|
|
b5d6f1ada5 | ||
|
|
b40325cd7b | ||
|
|
3b27ec66e1 | ||
|
|
52b8b36d54 | ||
|
|
7e3106dd1b | ||
|
|
399e0d94fc | ||
|
|
eef1ff9e87 | ||
|
|
9202c7504b | ||
|
|
3fd7e3b93e | ||
|
|
b6996df86a | ||
|
|
4b3efd7bfa | ||
|
|
12c2682c34 | ||
|
|
2caf67b813 | ||
|
|
fbbe13661a | ||
|
|
0fb102edae | ||
|
|
b4dd90d074 | ||
|
|
2e3f806d07 | ||
|
|
f76092e83e | ||
|
|
1e44081583 | ||
|
|
26b3a4259d | ||
|
|
8a074a7e6d | ||
|
|
e99434582f | ||
|
|
fec57df994 | ||
|
|
033cb2d20a | ||
|
|
a5fa58e3e6 | ||
|
|
fdc9d2714b | ||
|
|
824ca9b513 | ||
|
|
a74a740964 | ||
|
|
2041d52495 | ||
|
|
fb5d528eff | ||
|
|
a2cedbd9da | ||
|
|
8574eddfa0 | ||
|
|
2ccf876929 | ||
|
|
28df150784 | ||
|
|
0950083da2 | ||
|
|
88c5f910da | ||
|
|
a9d3e4798e | ||
|
|
d85d834b23 | ||
|
|
5729da5a9f | ||
|
|
1255331160 | ||
|
|
0fef51b5f6 | ||
|
|
7cf18c0468 | ||
|
|
b994509b9d | ||
|
|
6571e19e8f | ||
|
|
7441164db9 | ||
|
|
09bb10cd3f | ||
|
|
bd6f24f4b1 | ||
|
|
0a174ad219 | ||
|
|
33d004fb9a | ||
|
|
652bf34c77 | ||
|
|
3f11bad68e | ||
|
|
5245fbfc6d | ||
|
|
68f8ee8a99 | ||
|
|
7b83a52dce | ||
|
|
5f57c82478 | ||
|
|
3128cbef73 | ||
|
|
694b2bf055 | ||
|
|
e03a023c5f | ||
|
|
3ff5d3bd09 | ||
|
|
04841196e3 | ||
|
|
18dd495d99 | ||
|
|
f714945bbb | ||
|
|
a318ef2232 | ||
|
|
8ed24de9d3 | ||
|
|
e06e50936d | ||
|
|
d710e9cb47 | ||
|
|
9af3699850 | ||
|
|
3cc7b4d8c2 | ||
|
|
8b58732a1f | ||
|
|
a2a0935343 | ||
|
|
2668156e53 | ||
|
|
d67615d239 | ||
|
|
afd70b64ed | ||
|
|
78a6e43667 | ||
|
|
a65af97e43 | ||
|
|
637dfabe69 | ||
|
|
ff8b3c10f3 | ||
|
|
f442555d8f | ||
|
|
bdf9f882ad | ||
|
|
1e5c5bfe00 | ||
|
|
0e78fdfcb4 | ||
|
|
4f532f86dc | ||
|
|
92844825cb | ||
|
|
6b13fc99b0 | ||
|
|
0f7aa26757 | ||
|
|
a06f963263 | ||
|
|
d31de1e654 | ||
|
|
46a0301022 | ||
|
|
73d26036ef | ||
|
|
b9637c9d7d | ||
|
|
08497683bf | ||
|
|
44a50f6e58 | ||
|
|
4c2b4e5c66 | ||
|
|
b0884ad7c3 | ||
|
|
cf09f86df2 | ||
|
|
d33c38f671 | ||
|
|
fbfba21854 | ||
|
|
b2093d6f10 | ||
|
|
736a0190c1 | ||
|
|
a74c259c38 | ||
|
|
d3dedd6312 | ||
|
|
920eab0ef9 | ||
|
|
d576085e8d | ||
|
|
62b9a9e287 | ||
|
|
56ffe1d62a | ||
|
|
14acbcb5f1 | ||
|
|
9a0011bf49 | ||
|
|
7b9f18b097 | ||
|
|
f8e4333157 | ||
|
|
b5c933aa94 | ||
|
|
c441af3f2c | ||
|
|
e885421a67 | ||
|
|
ce4fe24a93 | ||
|
|
1c0e2ceba5 | ||
|
|
a435e8ec47 | ||
|
|
b958393135 | ||
|
|
a6dd697a68 | ||
|
|
a4833e7b35 | ||
|
|
54fa643c10 | ||
|
|
6047cd4542 | ||
|
|
8c5f7df280 | ||
|
|
ff1250c33c | ||
|
|
4297c10fe9 | ||
|
|
ab6ad94ec3 | ||
|
|
759183461f | ||
|
|
f850fa6bc9 | ||
|
|
5a242d35b7 | ||
|
|
abf5d66e01 | ||
|
|
e92360e0d4 | ||
|
|
b5c0fdc013 | ||
|
|
906ef02c5e | ||
|
|
7550decbc0 | ||
|
|
acd88c3c8a | ||
|
|
a3854a2de1 | ||
|
|
880aca5d83 | ||
|
|
2d1c98a5a7 | ||
|
|
fefa06ba21 | ||
|
|
18faa91c94 | ||
|
|
9f23c7b31a | ||
|
|
eee6926bab | ||
|
|
6806f952d6 | ||
|
|
faaef54b42 | ||
|
|
c29852fae7 | ||
|
|
7d100dae97 | ||
|
|
206e800963 | ||
|
|
555a334315 | ||
|
|
d2c5def108 | ||
|
|
98323c530e | ||
|
|
b36510dbb9 | ||
|
|
50e533c32b | ||
|
|
33277c3d37 | ||
|
|
28f2ad0109 | ||
|
|
5d10ee4e61 | ||
|
|
b4190ada0c | ||
|
|
60d314552d | ||
|
|
c971d54543 | ||
|
|
346f019fa8 | ||
|
|
d61c2480b6 | ||
|
|
e30b5b86da | ||
|
|
bd74fe24fd | ||
|
|
b30eaa8ee3 | ||
|
|
75c530516a | ||
|
|
3b49821e82 | ||
|
|
febf443960 | ||
|
|
f5da81e782 | ||
|
|
9cb23ac584 | ||
|
|
6ff3100c1f | ||
|
|
e3ea3723bf | ||
|
|
33443d9b41 | ||
|
|
e0ef61659f | ||
|
|
655ad77bce | ||
|
|
c09e546240 | ||
|
|
a08b14a89e | ||
|
|
12e90b0eef | ||
|
|
7606f1bcbd | ||
|
|
cabb43b187 | ||
|
|
b85cda3f6e | ||
|
|
b92f1b7497 | ||
|
|
273a51a335 | ||
|
|
212dc88b89 | ||
|
|
ce82a91d14 | ||
|
|
52a08401c7 | ||
|
|
706c0cb033 | ||
|
|
1567a613a6 | ||
|
|
d767d80d20 | ||
|
|
1103a9d510 | ||
|
|
c34af4b97a | ||
|
|
8dcee4d338 | ||
|
|
fc1e69ea73 | ||
|
|
db460117c1 | ||
|
|
1c514df0fd | ||
|
|
780ec5cbec | ||
|
|
3721873b62 | ||
|
|
3bdc77ca91 | ||
|
|
b8f54d64a4 | ||
|
|
90d48b320a | ||
|
|
a797342800 | ||
|
|
31e608e0ae | ||
|
|
ebcfb0e577 | ||
|
|
161c9f9142 | ||
|
|
2a099da726 | ||
|
|
5118397004 | ||
|
|
546c340656 | ||
|
|
3034cc7c52 | ||
|
|
d89381ff78 | ||
|
|
86cac58100 | ||
|
|
8fc062007e | ||
|
|
9fd92e3306 | ||
|
|
a4cbbe5dd4 | ||
|
|
da7ea9655f | ||
|
|
00a8c642dd | ||
|
|
e1152f6e56 | ||
|
|
7cf9c6842a | ||
|
|
d375535cd9 | ||
|
|
c5ea868f47 | ||
|
|
884d333805 | ||
|
|
3b9921a15b | ||
|
|
17b753d95e | ||
|
|
6a8781b5e2 | ||
|
|
0dfaf01749 | ||
|
|
088aa83e22 | ||
|
|
934adb1e9f | ||
|
|
50e0593de6 | ||
|
|
f2637c6421 | ||
|
|
a52dacea68 | ||
|
|
f56a33d22d | ||
|
|
2aa858b0fb | ||
|
|
c3b8ba4b9a | ||
|
|
ac96b8c0e1 | ||
|
|
a329a9f4d8 | ||
|
|
63cc7eb44d | ||
|
|
6505f32221 | ||
|
|
22088260f4 | ||
|
|
d893009a8d | ||
|
|
b62e1741be | ||
|
|
903c2aa642 | ||
|
|
d0a8bb550e | ||
|
|
f96f1423e1 | ||
|
|
7bf17f2f61 | ||
|
|
670b6cfc15 | ||
|
|
b6d2c8479c | ||
|
|
5aaa114271 | ||
|
|
e99c2791bb | ||
|
|
656d7754cd | ||
|
|
4aaf10fbfc | ||
|
|
85e77b77aa | ||
|
|
f23ef09247 | ||
|
|
440d956438 | ||
|
|
acd2852cf3 | ||
|
|
4246f43bdf | ||
|
|
7d33769cd2 | ||
|
|
31fdba80d4 | ||
|
|
77f8e460d0 | ||
|
|
51e51db9f7 | ||
|
|
73c506f19c | ||
|
|
79143f3334 | ||
|
|
128ba9040e | ||
|
|
300cfe74ad | ||
|
|
f008af05bd | ||
|
|
3aa870d6bd | ||
|
|
25e1a8c001 | ||
|
|
0ba3b114b0 | ||
|
|
c429e88e8e | ||
|
|
c7a2fe8440 | ||
|
|
de237e760b | ||
|
|
927f5c9883 | ||
|
|
88f461baf2 | ||
|
|
3251ae26a0 | ||
|
|
e84c81633e | ||
|
|
a2ec966ac7 | ||
|
|
69660fbfda | ||
|
|
dcedca1a80 | ||
|
|
6455e954fc | ||
|
|
646904688f | ||
|
|
62779fc972 | ||
|
|
fdee4cde26 | ||
|
|
0c18ac5adc | ||
|
|
6da4a942ca | ||
|
|
565f68d2d7 | ||
|
|
a7cee4c889 | ||
|
|
4f315f9b11 | ||
|
|
51febfec2d | ||
|
|
df8bd96b2e | ||
|
|
9da9beb342 | ||
|
|
f93af823df | ||
|
|
5e74723a92 | ||
|
|
ec77e1acea | ||
|
|
1afad64972 | ||
|
|
a3365dda07 | ||
|
|
4c246a4cd1 | ||
|
|
934ffd0731 | ||
|
|
790e2c233d | ||
|
|
9e9967381c | ||
|
|
891ed08827 | ||
|
|
55d13a6f08 | ||
|
|
5569ea4397 | ||
|
|
693e37459a | ||
|
|
90de1fa55d | ||
|
|
6d6e1557ce | ||
|
|
2d84f16dc0 | ||
|
|
2f98ef9f6d | ||
|
|
e0c07d2385 | ||
|
|
0b2413d8c0 | ||
|
|
e92b01f813 | ||
|
|
27ff13459f | ||
|
|
3e80915454 | ||
|
|
4063d2e2c4 | ||
|
|
ce9416857b | ||
|
|
575d5e8e57 | ||
|
|
14ceb8c046 | ||
|
|
c6c29ca505 | ||
|
|
c551226504 | ||
|
|
fcbc09543c | ||
|
|
6d83bb0026 | ||
|
|
0784a513c9 | ||
|
|
ebcdec0860 | ||
|
|
6805e4f28f | ||
|
|
962f5fa412 | ||
|
|
1385988ab8 | ||
|
|
6cc80f8c54 | ||
|
|
d6c843962d | ||
|
|
247e6ad9ab | ||
|
|
364c131a4e | ||
|
|
b047325033 | ||
|
|
0894cfe058 | ||
|
|
f4a9d7e70b | ||
|
|
593634fb5d | ||
|
|
2932bf5006 | ||
|
|
4b1c39fe41 | ||
|
|
ee91e3a139 | ||
|
|
e287b854a2 | ||
|
|
5458e5dd00 | ||
|
|
ed30f37ca9 | ||
|
|
9e495f6bb8 | ||
|
|
21566c49f0 | ||
|
|
0a225c13a4 | ||
|
|
680c07a030 | ||
|
|
8ee66dca22 | ||
|
|
60393f07ef | ||
|
|
34418b03fb | ||
|
|
ce2f161f08 | ||
|
|
d5ca1ea152 | ||
|
|
c3fec8225a | ||
|
|
bfff00826e | ||
|
|
61cb50b2bd | ||
|
|
c8d3bfabc7 | ||
|
|
1ce212d33d | ||
|
|
3682f4f06a | ||
|
|
0f74408b0e | ||
|
|
f7d7c4a8e0 | ||
|
|
0cb8d12796 | ||
|
|
9586ecfd58 | ||
|
|
86217867f9 | ||
|
|
496de51a11 | ||
|
|
38591d06a0 | ||
|
|
91805f7da4 | ||
|
|
7bd8340a8b | ||
|
|
4817007097 | ||
|
|
d5003feb39 | ||
|
|
f03e460ca5 | ||
|
|
347c8847b0 | ||
|
|
9f48b32329 | ||
|
|
2f6dfbc165 | ||
|
|
49cb53d735 | ||
|
|
54f1a51a10 | ||
|
|
c6a2674c2b | ||
|
|
282a10ec83 | ||
|
|
50276a06df | ||
|
|
f452250f88 | ||
|
|
9d44e237a5 | ||
|
|
9f0e5899c2 | ||
|
|
e351a02a06 | ||
|
|
cd167ec777 | ||
|
|
3290412477 | ||
|
|
acf0128fb4 | ||
|
|
e91ee22a89 | ||
|
|
8e91d2039a |
15
.gitignore
vendored
15
.gitignore
vendored
@@ -1 +1,16 @@
|
||||
coverage/
|
||||
.DS_Store
|
||||
*.seed
|
||||
*.log
|
||||
*.csv
|
||||
*.dat
|
||||
*.out
|
||||
*.pid
|
||||
*.swp
|
||||
*.swo
|
||||
benchmarks/graphs
|
||||
testing
|
||||
node_modules/
|
||||
testing
|
||||
test.js
|
||||
.idea
|
||||
|
||||
12
.gitmodules
vendored
12
.gitmodules
vendored
@@ -1,12 +0,0 @@
|
||||
[submodule "spec/support/libxmljs"]
|
||||
path = spec/support/libxmljs
|
||||
url = git://github.com/sprsquish/libxmljs.git
|
||||
[submodule "lib/support/haml"]
|
||||
path = lib/support/haml
|
||||
url = git://github.com/creationix/haml-js.git
|
||||
[submodule "lib/support/js-oo"]
|
||||
path = lib/support/js-oo
|
||||
url = git://github.com/visionmedia/js-oo.git
|
||||
[submodule "lib/support/sass"]
|
||||
path = lib/support/sass
|
||||
url = git://github.com/visionmedia/sass.js.git
|
||||
11
.npmignore
Normal file
11
.npmignore
Normal file
@@ -0,0 +1,11 @@
|
||||
.git*
|
||||
benchmarks/
|
||||
coverage/
|
||||
docs/
|
||||
examples/
|
||||
support/
|
||||
test/
|
||||
testing.js
|
||||
.DS_Store
|
||||
.travis.yml
|
||||
Contributing.md
|
||||
10
.travis.yml
Normal file
10
.travis.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.10"
|
||||
- "0.11"
|
||||
matrix:
|
||||
allow_failures:
|
||||
- node_js: "0.11"
|
||||
fast_finish: true
|
||||
script: "npm run-script test-travis"
|
||||
after_script: "npm install coveralls@2.10.0 && cat ./coverage/lcov.info | coveralls"
|
||||
25
Contributing.md
Normal file
25
Contributing.md
Normal file
@@ -0,0 +1,25 @@
|
||||
|
||||
## Website Issues
|
||||
|
||||
Issues for the expressjs.com website go here https://github.com/strongloop/expressjs.com
|
||||
|
||||
## PRs and Code contributions
|
||||
|
||||
* Tests must pass.
|
||||
* Follow existing coding style.
|
||||
* If you fix a bug, add a test.
|
||||
|
||||
|
||||
## Issues which are questions
|
||||
|
||||
We will typically close any vague issues or questions that are specific to some app you are writing. Please double check the docs and other references before being trigger happy with posting a question issue.
|
||||
|
||||
Things that will help get your question issue looked at:
|
||||
|
||||
* Full and runnable JS code.
|
||||
* Clear description of the problem or unexpected behavior.
|
||||
* Clear description of the expected result.
|
||||
* Steps you have taken to debug it yourself.
|
||||
|
||||
If you post a question and do not outline the above items or make it easy for us to understand and reproduce your issue, it will be closed.
|
||||
|
||||
2203
History.md
2203
History.md
File diff suppressed because it is too large
Load Diff
22
LICENSE
Normal file
22
LICENSE
Normal file
@@ -0,0 +1,22 @@
|
||||
(The MIT License)
|
||||
|
||||
Copyright (c) 2009-2014 TJ Holowaychuk <tj@vision-media.ca>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
'Software'), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
33
Makefile
33
Makefile
@@ -1,33 +0,0 @@
|
||||
|
||||
NODE = node
|
||||
|
||||
all: test
|
||||
|
||||
init:
|
||||
@git submodule init && git submodule update
|
||||
|
||||
test: init spec/support/libxmljs/libxmljs.node
|
||||
@$(NODE) spec/node.js all
|
||||
|
||||
test-independant: init
|
||||
@$(NODE) spec/node.js independant
|
||||
|
||||
test-dependant: init spec/support/libxmljs/libxmljs.node
|
||||
@$(NODE) spec/node.js dependant
|
||||
|
||||
app: app-chat
|
||||
|
||||
app-chat:
|
||||
@$(NODE) examples/chat/app.js
|
||||
|
||||
app-upload:
|
||||
@$(NODE) examples/upload/app.js
|
||||
|
||||
benchmark:
|
||||
@$(NODE) benchmarks/collection.js
|
||||
@$(NODE) benchmarks/views.js
|
||||
|
||||
spec/support/libxmljs/libxmljs.node:
|
||||
@scons -C spec/support/libxmljs libxmljs.node
|
||||
|
||||
.PHONY: init test benchmark app
|
||||
221
Readme.md
221
Readme.md
@@ -1,145 +1,128 @@
|
||||
[](http://expressjs.com/)
|
||||
|
||||
# Express
|
||||
|
||||
Insanely fast (and small) server-side JavaScript web development framework
|
||||
built on **node.js** and the **V8 JavaScript engine**.
|
||||
Fast, unopinionated, minimalist web framework for [node](http://nodejs.org).
|
||||
|
||||
* Visit the [Wiki](http://wiki.github.com/visionmedia/express) for documentation
|
||||
* Visit the [Google Group](http://groups.google.com/group/express-js) for discussion
|
||||
[](https://www.npmjs.org/package/express)
|
||||
[](https://travis-ci.org/strongloop/express)
|
||||
[](https://coveralls.io/r/strongloop/express)
|
||||
[](https://www.gittip.com/dougwilson/)
|
||||
|
||||
## Features (so far)
|
||||
```js
|
||||
var express = require('express')
|
||||
var app = express()
|
||||
|
||||
* Sexy DSL with robust sinatra-like routing
|
||||
* High performance
|
||||
* Session support
|
||||
* Mime helpers
|
||||
* Redirection helpers
|
||||
* Nested parameter parsing
|
||||
* Full test coverage
|
||||
* Extremely readable specs
|
||||
* Test helpers (mock requests etc)
|
||||
* Environment based configuration
|
||||
* Light-weight JavaScript class implementation via js-oo
|
||||
* Collections and chainable iterators
|
||||
* ElementCollections / markup parsing via libxmljs and css selector traversal support via css2xpath
|
||||
* View support (ejs, haml, sass, etc)
|
||||
|
||||
## Installation
|
||||
app.get('/', function (req, res) {
|
||||
res.send('Hello World')
|
||||
})
|
||||
|
||||
Currently Express must be cloned (or downloaded), you can use the following command to
|
||||
get rolling and initialize the submodule dependencies:
|
||||
app.listen(3000)
|
||||
```
|
||||
|
||||
$ git clone git://github.com/visionmedia/express.git && cd express && git submodule update --init && make app
|
||||
|
||||
Or with the [gh](http://github.com/visionmedia/gh) utility:
|
||||
**PROTIP** Be sure to read [Migrating from 3.x to 4.x](https://github.com/strongloop/express/wiki/Migrating-from-3.x-to-4.x) as well as [New features in 4.x](https://github.com/strongloop/express/wiki/New-features-in-4.x).
|
||||
|
||||
$ gh clone visionmedia express && cd express && git submodule update --init && make app
|
||||
### Installation
|
||||
|
||||
## Performance
|
||||
```bash
|
||||
$ npm install express
|
||||
```
|
||||
|
||||
Extensive benchmarking will wait until a development version
|
||||
has been released.
|
||||
|
||||
Currently Express can chew through a request with a two Haml views (*page and layout*)
|
||||
requested **2000** times with concurrency of **80** in **2.4** seconds and **814**
|
||||
requests per second. With no caching involved.
|
||||
|
||||
An identical Sinatra application was served with the **Thin** HTTP server
|
||||
and scored **8.3** seconds and **238** requests per second. In this situation
|
||||
Express is currently **3.5** times faster than Sinatra.
|
||||
## Quick Start
|
||||
|
||||
## Examples
|
||||
The quickest way to get started with express is to utilize the executable [`express(1)`](https://github.com/expressjs/generator) to generate an application as shown below:
|
||||
|
||||
Below is a minimal app example when express is already within your load path.
|
||||
Install the executable. The executable's major version will match Express's:
|
||||
|
||||
require('express')
|
||||
require('express/plugins')
|
||||
|
||||
configure(function(){
|
||||
use(MethodOverride)
|
||||
use(ContentLength)
|
||||
set('root', __dirname)
|
||||
})
|
||||
|
||||
get('/hello', function(){
|
||||
this.contentType('html')
|
||||
return '<h1>World<h1>'
|
||||
})
|
||||
|
||||
get('/user/:id?', function(id) {
|
||||
this.render('user.haml.html', {
|
||||
locals: {
|
||||
name: id ? 'User ' + id : 'You'
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
run()
|
||||
|
||||
## Running Tests
|
||||
```bash
|
||||
$ npm install -g express-generator@4
|
||||
```
|
||||
|
||||
Express uses the [JSpec](http://jspec.info) BDD JavaScript testing
|
||||
framework to write and run elegant spec suites. JSpec is frozen
|
||||
to spec/lib and does not require separate installation.
|
||||
Create the app:
|
||||
|
||||
To run all specifications run the following command. This will ensure
|
||||
git submodules are initialized and updated, as well as building test
|
||||
related dependencies such as libxmljs.
|
||||
```bash
|
||||
$ express /tmp/foo && cd /tmp/foo
|
||||
```
|
||||
|
||||
$ make test
|
||||
|
||||
To run independent specs (which do not require building of external apis etc) use:
|
||||
Install dependencies:
|
||||
|
||||
$ make test-independant
|
||||
|
||||
To run dependent specs (which require building of external apis etc) use:
|
||||
```bash
|
||||
$ npm install
|
||||
```
|
||||
|
||||
$ make test-dependant
|
||||
|
||||
Run individual suites:
|
||||
Start the server:
|
||||
|
||||
```bash
|
||||
$ npm start
|
||||
```
|
||||
|
||||
## Features
|
||||
|
||||
* Robust routing
|
||||
* HTTP helpers (redirection, caching, etc)
|
||||
* View system supporting 14+ template engines
|
||||
* Content negotiation
|
||||
* Focus on high performance
|
||||
* Executable for generating applications quickly
|
||||
* High test coverage
|
||||
|
||||
## Philosophy
|
||||
|
||||
The Express philosophy is to provide small, robust tooling for HTTP servers, making
|
||||
it a great solution for single page applications, web sites, hybrids, or public
|
||||
HTTP APIs.
|
||||
|
||||
Express does not force you to use any specific ORM or template engine. With support for over
|
||||
14 template engines via [Consolidate.js](https://github.com/visionmedia/consolidate.js),
|
||||
you can quickly craft your perfect framework.
|
||||
|
||||
$ node spec/node.js core
|
||||
$ node spec/node.js mime
|
||||
$ node spec/node.js routing
|
||||
...
|
||||
|
||||
Express is currently being developed with node --version:
|
||||
v0.1.27
|
||||
|
||||
## More Information
|
||||
|
||||
* [JavaScript Extensions & Utilities](http://github.com/visionmedia/ext.js)
|
||||
* [JavaScript Sass](http://github.com/visionmedia/sass.js)
|
||||
* [Scons Build System](http://www.scons.org/) (some development dependencies rely on this, ex libxmljs)
|
||||
|
||||
## Contributors
|
||||
* [Website and Documentation](http://expressjs.com/) - [[website repo](https://github.com/strongloop/expressjs.com)]
|
||||
* [Github Organization](https://github.com/expressjs) for Official Middleware & Modules
|
||||
* [#express](https://webchat.freenode.net/?channels=express) on freenode IRC
|
||||
* Visit the [Wiki](https://github.com/strongloop/express/wiki)
|
||||
* [Google Group](https://groups.google.com/group/express-js) for discussion
|
||||
* [Русскоязычная документация](http://jsman.ru/express/)
|
||||
* [한국어 문서](http://expressjs.kr) - [[website repo](https://github.com/Hanul/expressjs.kr)]
|
||||
* Run express examples [online](https://runnable.com/express)
|
||||
|
||||
* TJ Holowaychuk (visionmedia) <tj@vision-media.ca>
|
||||
* Aaron Heckmann (aheckmann) <aaron.heckmann+github@gmail.com>
|
||||
* Ciaran Jessup (ciaranj) <ciaranj@gmail.com>
|
||||
* Gareth Jones (csausdev) <gareth.jones@sensis.com.au>
|
||||
|
||||
## License
|
||||
## Viewing Examples
|
||||
|
||||
(The MIT License)
|
||||
Clone the Express repo, then install the dev dependencies to install all the example / test suite dependencies:
|
||||
|
||||
Copyright (c) 2009 TJ Holowaychuk <tj@vision-media.ca>
|
||||
```bash
|
||||
$ git clone git://github.com/strongloop/express.git --depth 1
|
||||
$ cd express
|
||||
$ npm install
|
||||
```
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
'Software'), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
Then run whichever example you want:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
$ node examples/content-negotiation
|
||||
|
||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
You can also view live examples here:
|
||||
|
||||
<a href="https://runnable.com/express" target="_blank"><img src="https://runnable.com/external/styles/assets/runnablebtn.png" style="width:67px;height:25px;"></a>
|
||||
|
||||
## Running Tests
|
||||
|
||||
To run the test suite, first invoke the following command within the repo, installing the development dependencies:
|
||||
|
||||
```bash
|
||||
$ npm install
|
||||
```
|
||||
|
||||
Then run the tests:
|
||||
|
||||
```bash
|
||||
$ npm test
|
||||
```
|
||||
|
||||
### Contributors
|
||||
|
||||
* Author: [TJ Holowaychuk](https://github.com/visionmedia)
|
||||
* Lead Maintainer: [Douglas Christopher Wilson](https://github.com/dougwilson)
|
||||
* [All Contributors](https://github.com/strongloop/express/graphs/contributors)
|
||||
|
||||
### License
|
||||
|
||||
[MIT](LICENSE)
|
||||
|
||||
13
benchmarks/Makefile
Normal file
13
benchmarks/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
all:
|
||||
@./run 1 middleware
|
||||
@./run 5 middleware
|
||||
@./run 10 middleware
|
||||
@./run 15 middleware
|
||||
@./run 20 middleware
|
||||
@./run 30 middleware
|
||||
@./run 50 middleware
|
||||
@./run 100 middleware
|
||||
@echo
|
||||
|
||||
.PHONY: all
|
||||
@@ -1,83 +0,0 @@
|
||||
|
||||
;(function(){
|
||||
var currentSuite
|
||||
|
||||
/**
|
||||
* Contents of _fn_. Strips function literal and signature.
|
||||
*
|
||||
* @param {function} fn
|
||||
* @return {string}
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function contentsOf(fn) {
|
||||
return fn.toString().match(/^[^\{]*{((.*\n*)*)}/m)[1]
|
||||
}
|
||||
|
||||
/**
|
||||
* Pad _str_ to _len_.
|
||||
*
|
||||
* @param {string} str
|
||||
* @param {integer} len
|
||||
* @return {string}
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function pad(str, len) {
|
||||
return str + (new Array(len - str.length)).join(' ')
|
||||
}
|
||||
|
||||
/**
|
||||
* Time the execution of _fn_
|
||||
*
|
||||
* @param {function} fn
|
||||
* @return {float}
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function time(fn) {
|
||||
var start = Number(new Date)
|
||||
fn()
|
||||
return (Number(new Date) - start) / 1000
|
||||
}
|
||||
|
||||
/**
|
||||
* Benchmark _fn_ with the given _label_.
|
||||
*
|
||||
* @param {string} label
|
||||
* @param {function} fn
|
||||
* @api public
|
||||
*/
|
||||
|
||||
function benchmark(label, fn) {
|
||||
var duration = time(function(){
|
||||
for (var i = 0; i < currentSuite.times; ++i)
|
||||
fn()
|
||||
}).toFixed(3)
|
||||
print(pad(' ' + label, 50 - duration.toString().length) + duration + ' |')
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a benchmark suite with the given _label_, which
|
||||
* will run each benchmark n _times_. If _times_ is omitted
|
||||
* then it defaults to 1.
|
||||
*
|
||||
* @param {string} label
|
||||
* @param {integer, function} times
|
||||
* @param {function} fn
|
||||
* @api public
|
||||
*/
|
||||
|
||||
suite = function(label, times, fn) {
|
||||
currentSuite = this
|
||||
if (typeof times == 'function')
|
||||
this.times = 1, fn = times
|
||||
else
|
||||
this.times = times
|
||||
print('\n ' + pad(label, 42 - this.times.toString().length) + this.times + ' time(s)')
|
||||
print(' -------------------------------------------------')
|
||||
eval(contentsOf(fn))
|
||||
print('')
|
||||
}
|
||||
|
||||
})()
|
||||
@@ -1,111 +0,0 @@
|
||||
|
||||
require.paths.unshift('lib')
|
||||
require.paths.unshift('benchmarks')
|
||||
process.mixin(GLOBAL, require('sys'))
|
||||
process.mixin(GLOBAL, require('benchmark'))
|
||||
require('express')
|
||||
|
||||
print = puts
|
||||
|
||||
range = function(a, b) {
|
||||
var array = []
|
||||
while (a++ < b)
|
||||
array.push(a-1)
|
||||
return array
|
||||
}
|
||||
|
||||
suite('Collection with [0..10,000]', 100, function(){
|
||||
array = range(0, 10000)
|
||||
|
||||
benchmark('for', function(){
|
||||
for (var i = 0, len = array.length; i < len; ++i) ;
|
||||
})
|
||||
|
||||
benchmark('for uncached', function(){
|
||||
for (var i = 0; i < array.length; ++i) ;
|
||||
})
|
||||
|
||||
benchmark('forEach()', function(){
|
||||
array.forEach(function(){})
|
||||
})
|
||||
|
||||
benchmark('#each()', function(){
|
||||
$(array).each(function(){})
|
||||
})
|
||||
|
||||
benchmark('#map()', function(){
|
||||
$(array).map(function(n){ return n += 1 })
|
||||
})
|
||||
|
||||
benchmark('#map() with shorthand', function(){
|
||||
$(array).map('a += 1')
|
||||
})
|
||||
|
||||
benchmark('#find()', function(){
|
||||
$(array).find(function(n){ return n > 5000 })
|
||||
})
|
||||
|
||||
benchmark('#select()', function(){
|
||||
$(array).select(function(n){ return n % 2 })
|
||||
})
|
||||
|
||||
benchmark('#first()', function(){
|
||||
$(array).first(5000)
|
||||
})
|
||||
|
||||
benchmark('#slice()', function(){
|
||||
$(array).slice(100, 5000)
|
||||
})
|
||||
|
||||
benchmark('#drop()', function(){
|
||||
$(array).drop(5000)
|
||||
})
|
||||
|
||||
benchmark('#length()', function(){
|
||||
$(array).length()
|
||||
})
|
||||
|
||||
benchmark('#keys()', function(){
|
||||
$(array).keys()
|
||||
})
|
||||
|
||||
benchmark('#toArray()', function(){
|
||||
$(array).toArray()
|
||||
})
|
||||
|
||||
benchmark('#min()', function(){
|
||||
$(array).min()
|
||||
})
|
||||
|
||||
benchmark('#max()', function(){
|
||||
$(array).max()
|
||||
})
|
||||
|
||||
benchmark('#sum()', function(){
|
||||
$(array).sum()
|
||||
})
|
||||
|
||||
benchmark('#avg()', function(){
|
||||
$(array).avg()
|
||||
})
|
||||
|
||||
benchmark('#clone()', function(){
|
||||
$(array).clone()
|
||||
})
|
||||
|
||||
benchmark('#merge()', function(){
|
||||
$(array).merge({ foo: 'bar' })
|
||||
})
|
||||
|
||||
benchmark('#sample()', function(){
|
||||
$(array).sample()
|
||||
})
|
||||
|
||||
benchmark('#chunk()', function(){
|
||||
$(array).chunk(5)
|
||||
})
|
||||
|
||||
benchmark('#at()', function(){
|
||||
$(array).at(5000)
|
||||
})
|
||||
})
|
||||
23
benchmarks/middleware.js
Normal file
23
benchmarks/middleware.js
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
var http = require('http');
|
||||
var express = require('..');
|
||||
var app = express();
|
||||
|
||||
// number of middleware
|
||||
|
||||
var n = parseInt(process.env.MW || '1', 10);
|
||||
console.log(' %s middleware', n);
|
||||
|
||||
while (n--) {
|
||||
app.use(function(req, res, next){
|
||||
next();
|
||||
});
|
||||
}
|
||||
|
||||
var body = new Buffer('Hello World');
|
||||
|
||||
app.use(function(req, res, next){
|
||||
res.send(body);
|
||||
});
|
||||
|
||||
app.listen(3333);
|
||||
16
benchmarks/run
Executable file
16
benchmarks/run
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
echo
|
||||
MW=$1 node $2 &
|
||||
pid=$!
|
||||
|
||||
sleep 2
|
||||
|
||||
wrk 'http://localhost:3333/?foo[bar]=baz' \
|
||||
-d 3 \
|
||||
-c 50 \
|
||||
-t 8 \
|
||||
| grep 'Requests/sec' \
|
||||
| awk '{ print " " $2 }'
|
||||
|
||||
kill $pid
|
||||
@@ -1,56 +0,0 @@
|
||||
|
||||
require.paths.unshift('lib')
|
||||
require.paths.unshift('benchmarks')
|
||||
process.mixin(GLOBAL, require('sys'))
|
||||
process.mixin(GLOBAL, require('benchmark'))
|
||||
require('express')
|
||||
|
||||
print = puts
|
||||
|
||||
engine = {
|
||||
ejs: require('ejs'),
|
||||
haml: require('haml'),
|
||||
sass: require('sass')
|
||||
}
|
||||
|
||||
options = { locals: { article: { title: 'Foo', body: 'bar' }}}
|
||||
|
||||
ejs = ' \n\
|
||||
<div id="primary"> \n\
|
||||
<div class="block first"> \n\
|
||||
<h1><%= article.title %></h1> \n\
|
||||
<p><%= article.body %></p> \n\
|
||||
</div> \n\
|
||||
</div> \n\
|
||||
'
|
||||
|
||||
haml = ' \n\
|
||||
#primary \n\
|
||||
.block.first \n\
|
||||
%h1= article.title \n\
|
||||
%p= article.body \n\
|
||||
'
|
||||
|
||||
sass = ' \n\
|
||||
red: #ff0000 \n\
|
||||
body \n\
|
||||
ul \n\
|
||||
li \n\
|
||||
a \n\
|
||||
:color !red \n\
|
||||
:list-style none \n\
|
||||
'
|
||||
|
||||
suite('Template Engines', 1000, function(){
|
||||
benchmark('ejs', function(){
|
||||
engine.ejs.render(ejs, options)
|
||||
})
|
||||
|
||||
benchmark('haml', function(){
|
||||
engine.haml.render(haml, options)
|
||||
})
|
||||
|
||||
benchmark('sass', function(){
|
||||
engine.sass.render(sass)
|
||||
})
|
||||
})
|
||||
130
examples/auth/app.js
Normal file
130
examples/auth/app.js
Normal file
@@ -0,0 +1,130 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var hash = require('./pass').hash;
|
||||
var bodyParser = require('body-parser');
|
||||
var session = require('express-session');
|
||||
|
||||
var app = module.exports = express();
|
||||
|
||||
// config
|
||||
|
||||
app.set('view engine', 'ejs');
|
||||
app.set('views', __dirname + '/views');
|
||||
|
||||
// middleware
|
||||
|
||||
app.use(bodyParser.urlencoded({ extended: false }));
|
||||
app.use(session({
|
||||
resave: false, // don't save session if unmodified
|
||||
saveUninitialized: false, // don't create session until something stored
|
||||
secret: 'shhhh, very secret'
|
||||
}));
|
||||
|
||||
// Session-persisted message middleware
|
||||
|
||||
app.use(function(req, res, next){
|
||||
var err = req.session.error;
|
||||
var msg = req.session.success;
|
||||
delete req.session.error;
|
||||
delete req.session.success;
|
||||
res.locals.message = '';
|
||||
if (err) res.locals.message = '<p class="msg error">' + err + '</p>';
|
||||
if (msg) res.locals.message = '<p class="msg success">' + msg + '</p>';
|
||||
next();
|
||||
});
|
||||
|
||||
// dummy database
|
||||
|
||||
var users = {
|
||||
tj: { name: 'tj' }
|
||||
};
|
||||
|
||||
// when you create a user, generate a salt
|
||||
// and hash the password ('foobar' is the pass here)
|
||||
|
||||
hash('foobar', function(err, salt, hash){
|
||||
if (err) throw err;
|
||||
// store the salt & hash in the "db"
|
||||
users.tj.salt = salt;
|
||||
users.tj.hash = hash;
|
||||
});
|
||||
|
||||
|
||||
// Authenticate using our plain-object database of doom!
|
||||
|
||||
function authenticate(name, pass, fn) {
|
||||
if (!module.parent) console.log('authenticating %s:%s', name, pass);
|
||||
var user = users[name];
|
||||
// query the db for the given username
|
||||
if (!user) return fn(new Error('cannot find user'));
|
||||
// apply the same algorithm to the POSTed password, applying
|
||||
// the hash against the pass / salt, if there is a match we
|
||||
// found the user
|
||||
hash(pass, user.salt, function(err, hash){
|
||||
if (err) return fn(err);
|
||||
if (hash == user.hash) return fn(null, user);
|
||||
fn(new Error('invalid password'));
|
||||
});
|
||||
}
|
||||
|
||||
function restrict(req, res, next) {
|
||||
if (req.session.user) {
|
||||
next();
|
||||
} else {
|
||||
req.session.error = 'Access denied!';
|
||||
res.redirect('/login');
|
||||
}
|
||||
}
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.redirect('/login');
|
||||
});
|
||||
|
||||
app.get('/restricted', restrict, function(req, res){
|
||||
res.send('Wahoo! restricted area, click to <a href="/logout">logout</a>');
|
||||
});
|
||||
|
||||
app.get('/logout', function(req, res){
|
||||
// destroy the user's session to log them out
|
||||
// will be re-created next request
|
||||
req.session.destroy(function(){
|
||||
res.redirect('/');
|
||||
});
|
||||
});
|
||||
|
||||
app.get('/login', function(req, res){
|
||||
res.render('login');
|
||||
});
|
||||
|
||||
app.post('/login', function(req, res){
|
||||
authenticate(req.body.username, req.body.password, function(err, user){
|
||||
if (user) {
|
||||
// Regenerate session when signing in
|
||||
// to prevent fixation
|
||||
req.session.regenerate(function(){
|
||||
// Store the user's primary key
|
||||
// in the session store to be retrieved,
|
||||
// or in this case the entire user object
|
||||
req.session.user = user;
|
||||
req.session.success = 'Authenticated as ' + user.name
|
||||
+ ' click to <a href="/logout">logout</a>. '
|
||||
+ ' You may now access <a href="/restricted">/restricted</a>.';
|
||||
res.redirect('back');
|
||||
});
|
||||
} else {
|
||||
req.session.error = 'Authentication failed, please check your '
|
||||
+ ' username and password.'
|
||||
+ ' (use "tj" and "foobar")';
|
||||
res.redirect('/login');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
48
examples/auth/pass.js
Normal file
48
examples/auth/pass.js
Normal file
@@ -0,0 +1,48 @@
|
||||
|
||||
// check out https://github.com/visionmedia/node-pwd
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var crypto = require('crypto');
|
||||
|
||||
/**
|
||||
* Bytesize.
|
||||
*/
|
||||
|
||||
var len = 128;
|
||||
|
||||
/**
|
||||
* Iterations. ~300ms
|
||||
*/
|
||||
|
||||
var iterations = 12000;
|
||||
|
||||
/**
|
||||
* Hashes a password with optional `salt`, otherwise
|
||||
* generate a salt for `pass` and invoke `fn(err, salt, hash)`.
|
||||
*
|
||||
* @param {String} password to hash
|
||||
* @param {String} optional salt
|
||||
* @param {Function} callback
|
||||
* @api public
|
||||
*/
|
||||
|
||||
exports.hash = function (pwd, salt, fn) {
|
||||
if (3 == arguments.length) {
|
||||
crypto.pbkdf2(pwd, salt, iterations, len, function(err, hash){
|
||||
fn(err, hash.toString('base64'));
|
||||
});
|
||||
} else {
|
||||
fn = salt;
|
||||
crypto.randomBytes(len, function(err, salt){
|
||||
if (err) return fn(err);
|
||||
salt = salt.toString('base64');
|
||||
crypto.pbkdf2(pwd, salt, iterations, len, function(err, hash){
|
||||
if (err) return fn(err);
|
||||
fn(null, salt, hash.toString('base64'));
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
2
examples/auth/views/foot.ejs
Normal file
2
examples/auth/views/foot.ejs
Normal file
@@ -0,0 +1,2 @@
|
||||
</body>
|
||||
</html>
|
||||
18
examples/auth/views/head.ejs
Normal file
18
examples/auth/views/head.ejs
Normal file
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title><%= title %></title>
|
||||
<style>
|
||||
body {
|
||||
padding: 50px;
|
||||
font: 13px Helvetica, Arial, sans-serif;
|
||||
}
|
||||
.error {
|
||||
color: red
|
||||
}
|
||||
.success {
|
||||
color: green;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
22
examples/auth/views/login.ejs
Normal file
22
examples/auth/views/login.ejs
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
<% var title = 'Authentication Example' %>
|
||||
<% include head %>
|
||||
|
||||
<h1>Login</h1>
|
||||
<%- message %>
|
||||
Try accessing <a href="/restricted">/restricted</a>, then authenticate with "tj" and "foobar".
|
||||
<form method="post" action="/login">
|
||||
<p>
|
||||
<label>Username:</label>
|
||||
<input type="text" name="username">
|
||||
</p>
|
||||
<p>
|
||||
<label>Password:</label>
|
||||
<input type="text" name="password">
|
||||
</p>
|
||||
<p>
|
||||
<input type="submit" value="Login">
|
||||
</p>
|
||||
</form>
|
||||
|
||||
<% include foot %>
|
||||
31
examples/big-view/index.js
Normal file
31
examples/big-view/index.js
Normal file
@@ -0,0 +1,31 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var logger = require('morgan');
|
||||
var app = express();
|
||||
|
||||
app.set('views', __dirname);
|
||||
app.set('view engine', 'jade');
|
||||
|
||||
var pets = [];
|
||||
|
||||
var n = 1000;
|
||||
while (n--) {
|
||||
pets.push({ name: 'Tobi', age: 2, species: 'ferret' });
|
||||
pets.push({ name: 'Loki', age: 1, species: 'ferret' });
|
||||
pets.push({ name: 'Jane', age: 6, species: 'ferret' });
|
||||
}
|
||||
|
||||
app.use(logger('dev'));
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.render('pets', { pets: pets });
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
12
examples/big-view/pets.jade
Normal file
12
examples/big-view/pets.jade
Normal file
@@ -0,0 +1,12 @@
|
||||
style.
|
||||
body {
|
||||
padding: 50px;
|
||||
font: 16px "Helvetica Neue", Helvetica;
|
||||
}
|
||||
|
||||
table
|
||||
for pet in pets
|
||||
tr
|
||||
td= pet.name
|
||||
td= pet.age
|
||||
td= pet.species
|
||||
@@ -1,81 +0,0 @@
|
||||
|
||||
require.paths.unshift('lib')
|
||||
require('express')
|
||||
require('express/plugins')
|
||||
|
||||
configure(function(){
|
||||
var fiveMinutes = 300000,
|
||||
oneMinute = 60000
|
||||
use(MethodOverride)
|
||||
use(ContentLength)
|
||||
use(CommonLogger)
|
||||
use(Cookie)
|
||||
use(Cache, { lifetime: fiveMinutes, reapInterval: oneMinute })
|
||||
use(Session, { lifetime: fiveMinutes, reapInterval: oneMinute })
|
||||
set('root', __dirname)
|
||||
})
|
||||
|
||||
var messages = [],
|
||||
utils = require('express/utils')
|
||||
|
||||
get('/', function(){
|
||||
this.redirect('/chat')
|
||||
})
|
||||
|
||||
get('/chat', function(){
|
||||
this.render('chat.haml.html', {
|
||||
locals: {
|
||||
title: 'Chat',
|
||||
messages: messages,
|
||||
name: this.session.name,
|
||||
usersOnline: Session.store.length()
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
post('/chat', function(){
|
||||
this.session.name = this.param('name')
|
||||
messages
|
||||
.push(utils.escape(this.param('name')) + ': ' + utils.escape(this.param('message'))
|
||||
.replace(/(http:\/\/[^\s]+)/g, '<a href="$1" target="express-chat">$1</a>')
|
||||
.replace(/:\)/g, '<img src="http://icons3.iconfinder.netdna-cdn.com/data/icons/ledicons/emoticon_smile.png">'))
|
||||
this.halt(200)
|
||||
})
|
||||
|
||||
get('/chat/messages', function(){
|
||||
var self = this,
|
||||
previousLength = messages.length,
|
||||
timer = setInterval(function(){
|
||||
if (messages.length > previousLength)
|
||||
self.contentType('json'),
|
||||
previousLength = messages.length,
|
||||
self.halt(200, JSON.encode(messages)),
|
||||
clearInterval(timer)
|
||||
}, 100)
|
||||
})
|
||||
|
||||
get('/public/*', function(file){
|
||||
this.sendfile(__dirname + '/public/' + file)
|
||||
})
|
||||
|
||||
get('/*.css', function(file){
|
||||
this.render(file + '.sass.css', { layout: false })
|
||||
})
|
||||
|
||||
get('/error/view', function(){
|
||||
this.render('does.not.exist')
|
||||
})
|
||||
|
||||
get('/error', function(){
|
||||
throw new Error('oh noes!')
|
||||
})
|
||||
|
||||
get('/simple', function(){
|
||||
return 'Hello :)'
|
||||
})
|
||||
|
||||
get('/favicon.ico', function(){
|
||||
this.halt()
|
||||
})
|
||||
|
||||
run()
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 5.2 KiB |
@@ -1,28 +0,0 @@
|
||||
|
||||
$(function(){
|
||||
// Send message
|
||||
$('form').submit(function(){
|
||||
var message = $('input[name=message]'),
|
||||
name = $('input[name=name]')
|
||||
if (message.val())
|
||||
$.post('/chat', { name: name.val(), message: message.val() }, function(){
|
||||
message.val('')
|
||||
})
|
||||
else
|
||||
message.css('border', '1px solid red')
|
||||
return false
|
||||
})
|
||||
|
||||
// Longpoll
|
||||
;(function poll(){
|
||||
$.getJSON('/chat/messages', function(messages){
|
||||
$('#messages').empty()
|
||||
$.each(messages, function(i, msg){
|
||||
$('#messages')
|
||||
.append('<li>' + msg + '</li>')
|
||||
.get(0).scrollTop = $('#messages').get(0).scrollHeight
|
||||
})
|
||||
poll()
|
||||
})
|
||||
})()
|
||||
})
|
||||
19
examples/chat/public/javascripts/jquery.js
vendored
19
examples/chat/public/javascripts/jquery.js
vendored
File diff suppressed because one or more lines are too long
@@ -1,10 +0,0 @@
|
||||
%h1 Chat
|
||||
%img.bubble{ src: '/public/images/bubble.png' }
|
||||
%ul#messages
|
||||
:each msg in messages
|
||||
%li= msg
|
||||
%form{ method: 'post' }
|
||||
%input{ type: 'hidden', name: '_method', value: 'put' }
|
||||
%input{ type: 'text', name: 'name', value: name || 'guest' }
|
||||
%input{ type: 'text', name: 'message' }
|
||||
%input{ type: 'submit', value: 'Send' }
|
||||
@@ -1,11 +0,0 @@
|
||||
%html
|
||||
%head
|
||||
%title= title
|
||||
%script{ src: '/public/javascripts/jquery.js' }
|
||||
%script{ src: '/public/javascripts/app.js' }
|
||||
%link{ rel: 'stylesheet', href: '/style.css' }
|
||||
%body
|
||||
#wrapper= body
|
||||
#online
|
||||
Online:
|
||||
%strong= usersOnline
|
||||
@@ -1,81 +0,0 @@
|
||||
body
|
||||
:font-family "Helvetica Neue", "Lucida Grande", "Arial"
|
||||
:font-size 13px
|
||||
:text-align center
|
||||
=text-stroke 1px rgba(255, 255, 255, 0.1)
|
||||
:color #555
|
||||
|
||||
h1, h2
|
||||
:margin 0
|
||||
:font-size 22px
|
||||
:color #343434
|
||||
h1
|
||||
:text-shadow 1px 2px 2px #ddd
|
||||
:font-size 60px
|
||||
|
||||
img.bubble
|
||||
:position absolute
|
||||
:top -25px
|
||||
:left 120px
|
||||
|
||||
#wrapper
|
||||
:position relative
|
||||
:margin 100px auto
|
||||
:width 500px
|
||||
:text-align left
|
||||
|
||||
ul
|
||||
:margin 0
|
||||
:padding 0
|
||||
:max-height 300px
|
||||
:overflow-x hidden
|
||||
li
|
||||
:margin 5px 0
|
||||
:padding 3px 8px
|
||||
:list-style none
|
||||
:border 1px solid #eee
|
||||
=border-radius 3px
|
||||
=border-radius 3px
|
||||
li:hover
|
||||
:cursor pointer
|
||||
:color #2E2E2E
|
||||
|
||||
input[type=text]
|
||||
:padding 5px
|
||||
:border 1px solid #ddd
|
||||
:outline none
|
||||
=border-radius 2px
|
||||
input[type=text]:focus
|
||||
:border-color #00C3FF
|
||||
|
||||
input[type=submit]
|
||||
=border-radius 2px
|
||||
=box-shadow 0 1px 2px #ddd
|
||||
:padding 6px 10px
|
||||
:border solid 1px #999
|
||||
:background -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#ddd))
|
||||
:color #333
|
||||
:text-decoration none
|
||||
:cursor pointer
|
||||
:display inline-block
|
||||
:text-align center
|
||||
:text-shadow 0px 1px 1px #fff
|
||||
:line-height 1
|
||||
input[type=submit]:hover
|
||||
:background -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#E6E4E4))
|
||||
input[type=submit]:active
|
||||
:background -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#c7c7c7))
|
||||
input[name=name]
|
||||
:width 80px
|
||||
|
||||
a
|
||||
:color #1ABFF1
|
||||
=transition-property padding
|
||||
=transition-duration 0.15s
|
||||
a:hover
|
||||
:padding 0 5px
|
||||
a:hover:before
|
||||
:content 'visit: '
|
||||
|
||||
#online
|
||||
:font-size 12px
|
||||
7
examples/content-negotiation/db.js
Normal file
7
examples/content-negotiation/db.js
Normal file
@@ -0,0 +1,7 @@
|
||||
var users = [];
|
||||
|
||||
users.push({ name: 'Tobi' });
|
||||
users.push({ name: 'Loki' });
|
||||
users.push({ name: 'Jane' });
|
||||
|
||||
module.exports = users;
|
||||
44
examples/content-negotiation/index.js
Normal file
44
examples/content-negotiation/index.js
Normal file
@@ -0,0 +1,44 @@
|
||||
var express = require('../../');
|
||||
var app = module.exports = express();
|
||||
var users = require('./db');
|
||||
|
||||
// so either you can deal with different types of formatting
|
||||
// for expected response in index.js
|
||||
app.get('/', function(req, res){
|
||||
res.format({
|
||||
html: function(){
|
||||
res.send('<ul>' + users.map(function(user){
|
||||
return '<li>' + user.name + '</li>';
|
||||
}).join('') + '</ul>');
|
||||
},
|
||||
|
||||
text: function(){
|
||||
res.send(users.map(function(user){
|
||||
return ' - ' + user.name + '\n';
|
||||
}).join(''));
|
||||
},
|
||||
|
||||
json: function(){
|
||||
res.json(users);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// or you could write a tiny middleware like
|
||||
// this to add a layer of abstraction
|
||||
// and make things a bit more declarative:
|
||||
|
||||
function format(path) {
|
||||
var obj = require(path);
|
||||
return function(req, res){
|
||||
res.format(obj);
|
||||
};
|
||||
}
|
||||
|
||||
app.get('/users', format('./users'));
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
18
examples/content-negotiation/users.js
Normal file
18
examples/content-negotiation/users.js
Normal file
@@ -0,0 +1,18 @@
|
||||
|
||||
var users = require('./db');
|
||||
|
||||
exports.html = function(req, res){
|
||||
res.send('<ul>' + users.map(function(user){
|
||||
return '<li>' + user.name + '</li>';
|
||||
}).join('') + '</ul>');
|
||||
};
|
||||
|
||||
exports.text = function(req, res){
|
||||
res.send(users.map(function(user){
|
||||
return ' - ' + user.name + '\n';
|
||||
}).join(''));
|
||||
};
|
||||
|
||||
exports.json = function(req, res){
|
||||
res.json(users);
|
||||
};
|
||||
26
examples/cookie-sessions/index.js
Normal file
26
examples/cookie-sessions/index.js
Normal file
@@ -0,0 +1,26 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../');
|
||||
|
||||
var app = module.exports = express();
|
||||
|
||||
// add req.session cookie support
|
||||
app.use(cookieSession({ secret: 'manny is cool' }));
|
||||
|
||||
// do something with the session
|
||||
app.use(count);
|
||||
|
||||
// custom middleware
|
||||
function count(req, res) {
|
||||
req.session.count = req.session.count || 0;
|
||||
var n = req.session.count++;
|
||||
res.send('viewed ' + n + ' times\n');
|
||||
}
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
48
examples/cookies/app.js
Normal file
48
examples/cookies/app.js
Normal file
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../');
|
||||
var app = module.exports = express();
|
||||
var logger = require('morgan');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var bodyParser = require('body-parser');
|
||||
|
||||
// custom log format
|
||||
if ('test' != process.env.NODE_ENV) app.use(logger(':method :url'));
|
||||
|
||||
// parses request cookies, populating
|
||||
// req.cookies and req.signedCookies
|
||||
// when the secret is passed, used
|
||||
// for signing the cookies.
|
||||
app.use(cookieParser('my secret here'));
|
||||
|
||||
// parses x-www-form-urlencoded
|
||||
app.use(bodyParser.urlencoded({ extended: false }));
|
||||
|
||||
app.get('/', function(req, res){
|
||||
if (req.cookies.remember) {
|
||||
res.send('Remembered :). Click to <a href="/forget">forget</a>!.');
|
||||
} else {
|
||||
res.send('<form method="post"><p>Check to <label>'
|
||||
+ '<input type="checkbox" name="remember"/> remember me</label> '
|
||||
+ '<input type="submit" value="Submit"/>.</p></form>');
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/forget', function(req, res){
|
||||
res.clearCookie('remember');
|
||||
res.redirect('back');
|
||||
});
|
||||
|
||||
app.post('/', function(req, res){
|
||||
var minute = 60000;
|
||||
if (req.body.remember) res.cookie('remember', 1, { maxAge: minute });
|
||||
res.redirect('back');
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
48
examples/cors/index.js
Normal file
48
examples/cors/index.js
Normal file
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var logger = require('morgan');
|
||||
var app = express();
|
||||
var bodyParser = require('body-parser');
|
||||
var api = express();
|
||||
|
||||
// app middleware
|
||||
|
||||
app.use(express.static(__dirname + '/public'));
|
||||
|
||||
// api middleware
|
||||
|
||||
api.use(logger('dev'));
|
||||
api.use(bodyParser.json());
|
||||
|
||||
/**
|
||||
* CORS support.
|
||||
*/
|
||||
|
||||
api.all('*', function(req, res, next){
|
||||
if (!req.get('Origin')) return next();
|
||||
// use "*" here to accept any origin
|
||||
res.set('Access-Control-Allow-Origin', 'http://localhost:3000');
|
||||
res.set('Access-Control-Allow-Methods', 'PUT');
|
||||
res.set('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type');
|
||||
// res.set('Access-Control-Allow-Max-Age', 3600);
|
||||
if ('OPTIONS' == req.method) return res.send(200);
|
||||
next();
|
||||
});
|
||||
|
||||
/**
|
||||
* PUT an existing user.
|
||||
*/
|
||||
|
||||
api.put('/user/:id', function(req, res){
|
||||
console.log(req.body);
|
||||
res.send(204);
|
||||
});
|
||||
|
||||
app.listen(3000);
|
||||
api.listen(3001);
|
||||
|
||||
console.log('app listening on 3000');
|
||||
console.log('api listening on 3001');
|
||||
12
examples/cors/public/index.html
Normal file
12
examples/cors/public/index.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
<script>
|
||||
var req = new XMLHttpRequest;
|
||||
req.open('PUT', 'http://localhost:3001/user/1', false);
|
||||
req.setRequestHeader('Content-Type', 'application/json');
|
||||
req.send('{"name":"tobi","species":"ferret"}');
|
||||
console.log(req.responseText);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
36
examples/downloads/app.js
Normal file
36
examples/downloads/app.js
Normal file
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../');
|
||||
var app = module.exports = express();
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.send('<ul>'
|
||||
+ '<li>Download <a href="/files/amazing.txt">amazing.txt</a>.</li>'
|
||||
+ '<li>Download <a href="/files/utf-8 한中日.txt">utf-8 한中日.txt</a>.</li>'
|
||||
+ '<li>Download <a href="/files/missing.txt">missing.txt</a>.</li>'
|
||||
+ '<li>Download <a href="/files/CCTV大赛上海分赛区.txt">CCTV大赛上海分赛区.txt</a>.</li>'
|
||||
+ '</ul>');
|
||||
});
|
||||
|
||||
// /files/* is accessed via req.params[0]
|
||||
// but here we name it :file
|
||||
app.get('/files/:file(*)', function(req, res, next){
|
||||
var file = req.params.file;
|
||||
var path = __dirname + '/files/' + file;
|
||||
|
||||
res.download(path, function(err){
|
||||
if (!err) return; // file sent
|
||||
if (err && err.status !== 404) return next(err); // non-404 error
|
||||
// file for download not found
|
||||
res.statusCode = 404;
|
||||
res.send('Cant find that file, sorry!');
|
||||
});
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
2
examples/downloads/files/CCTV大赛上海分赛区.txt
Normal file
2
examples/downloads/files/CCTV大赛上海分赛区.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Only for test.
|
||||
The file name is faked.
|
||||
1
examples/downloads/files/amazing.txt
Normal file
1
examples/downloads/files/amazing.txt
Normal file
@@ -0,0 +1 @@
|
||||
what an amazing download
|
||||
1
examples/downloads/files/utf-8 한中日.txt
Normal file
1
examples/downloads/files/utf-8 한中日.txt
Normal file
@@ -0,0 +1 @@
|
||||
한中日
|
||||
50
examples/ejs/index.js
Normal file
50
examples/ejs/index.js
Normal file
@@ -0,0 +1,50 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../');
|
||||
|
||||
var app = module.exports = express();
|
||||
|
||||
// Register ejs as .html. If we did
|
||||
// not call this, we would need to
|
||||
// name our views foo.ejs instead
|
||||
// of foo.html. The __express method
|
||||
// is simply a function that engines
|
||||
// use to hook into the Express view
|
||||
// system by default, so if we want
|
||||
// to change "foo.ejs" to "foo.html"
|
||||
// we simply pass _any_ function, in this
|
||||
// case `ejs.__express`.
|
||||
|
||||
app.engine('.html', require('ejs').__express);
|
||||
|
||||
// Optional since express defaults to CWD/views
|
||||
|
||||
app.set('views', __dirname + '/views');
|
||||
|
||||
// Without this you would need to
|
||||
// supply the extension to res.render()
|
||||
// ex: res.render('users.html').
|
||||
app.set('view engine', 'html');
|
||||
|
||||
// Dummy users
|
||||
var users = [
|
||||
{ name: 'tobi', email: 'tobi@learnboost.com' },
|
||||
{ name: 'loki', email: 'loki@learnboost.com' },
|
||||
{ name: 'jane', email: 'jane@learnboost.com' }
|
||||
];
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.render('users', {
|
||||
users: users,
|
||||
title: "EJS example",
|
||||
header: "Some users"
|
||||
});
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
2
examples/ejs/views/footer.html
Normal file
2
examples/ejs/views/footer.html
Normal file
@@ -0,0 +1,2 @@
|
||||
</body>
|
||||
</html>
|
||||
13
examples/ejs/views/header.html
Normal file
13
examples/ejs/views/header.html
Normal file
@@ -0,0 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title> <%= title %> </title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
padding: 50px;
|
||||
font: 13px Helvetica, Arial, sans-serif;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
10
examples/ejs/views/users.html
Normal file
10
examples/ejs/views/users.html
Normal file
@@ -0,0 +1,10 @@
|
||||
<% include header.html %>
|
||||
|
||||
<h1>Users</h1>
|
||||
<ul id="users">
|
||||
<% users.forEach(function(user){ %>
|
||||
<li><%= user.name %> <<%= user.email %>></li>
|
||||
<% }) %>
|
||||
</ul>
|
||||
|
||||
<% include footer.html %>
|
||||
104
examples/error-pages/index.js
Normal file
104
examples/error-pages/index.js
Normal file
@@ -0,0 +1,104 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../');
|
||||
var app = module.exports = express();
|
||||
var logger = require('morgan');
|
||||
var silent = 'test' == process.env.NODE_ENV;
|
||||
|
||||
// general config
|
||||
app.set('views', __dirname + '/views');
|
||||
app.set('view engine', 'jade');
|
||||
|
||||
// our custom "verbose errors" setting
|
||||
// which we can use in the templates
|
||||
// via settings['verbose errors']
|
||||
app.enable('verbose errors');
|
||||
|
||||
// disable them in production
|
||||
// use $ NODE_ENV=production node examples/error-pages
|
||||
if ('production' == app.settings.env) app.disable('verbose errors');
|
||||
|
||||
silent || app.use(logger('dev'));
|
||||
|
||||
// Routes
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.render('index.jade');
|
||||
});
|
||||
|
||||
app.get('/404', function(req, res, next){
|
||||
// trigger a 404 since no other middleware
|
||||
// will match /404 after this one, and we're not
|
||||
// responding here
|
||||
next();
|
||||
});
|
||||
|
||||
app.get('/403', function(req, res, next){
|
||||
// trigger a 403 error
|
||||
var err = new Error('not allowed!');
|
||||
err.status = 403;
|
||||
next(err);
|
||||
});
|
||||
|
||||
app.get('/500', function(req, res, next){
|
||||
// trigger a generic (500) error
|
||||
next(new Error('keyboard cat!'));
|
||||
});
|
||||
|
||||
// Error handlers
|
||||
|
||||
// Since this is the last non-error-handling
|
||||
// middleware use()d, we assume 404, as nothing else
|
||||
// responded.
|
||||
|
||||
// $ curl http://localhost:3000/notfound
|
||||
// $ curl http://localhost:3000/notfound -H "Accept: application/json"
|
||||
// $ curl http://localhost:3000/notfound -H "Accept: text/plain"
|
||||
|
||||
app.use(function(req, res, next){
|
||||
res.status(404);
|
||||
|
||||
// respond with html page
|
||||
if (req.accepts('html')) {
|
||||
res.render('404', { url: req.url });
|
||||
return;
|
||||
}
|
||||
|
||||
// respond with json
|
||||
if (req.accepts('json')) {
|
||||
res.send({ error: 'Not found' });
|
||||
return;
|
||||
}
|
||||
|
||||
// default to plain-text. send()
|
||||
res.type('txt').send('Not found');
|
||||
});
|
||||
|
||||
// error-handling middleware, take the same form
|
||||
// as regular middleware, however they require an
|
||||
// arity of 4, aka the signature (err, req, res, next).
|
||||
// when connect has an error, it will invoke ONLY error-handling
|
||||
// middleware.
|
||||
|
||||
// If we were to next() here any remaining non-error-handling
|
||||
// middleware would then be executed, or if we next(err) to
|
||||
// continue passing the error, only error-handling middleware
|
||||
// would remain being executed, however here
|
||||
// we simply respond with an error page.
|
||||
|
||||
app.use(function(err, req, res, next){
|
||||
// we may use properties of the error object
|
||||
// here and next(err) appropriately, or if
|
||||
// we possibly recovered from the error, simply next().
|
||||
res.status(err.status || 500);
|
||||
res.render('500', { error: err });
|
||||
});
|
||||
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
5
examples/error-pages/views/404.jade
Normal file
5
examples/error-pages/views/404.jade
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
extends error
|
||||
|
||||
block content
|
||||
h2 Cannot find #{url}
|
||||
13
examples/error-pages/views/500.jade
Normal file
13
examples/error-pages/views/500.jade
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
// note that we extend a different
|
||||
// layout with jade for 4xx & 5xx
|
||||
// responses
|
||||
|
||||
extends error
|
||||
|
||||
block content
|
||||
h1 Error: #{error.message}
|
||||
if settings['verbose errors']
|
||||
pre= error.stack
|
||||
else
|
||||
p An error ocurred!
|
||||
6
examples/error-pages/views/error.jade
Normal file
6
examples/error-pages/views/error.jade
Normal file
@@ -0,0 +1,6 @@
|
||||
html
|
||||
head
|
||||
title Error
|
||||
body
|
||||
h1 An error occurred!
|
||||
block content
|
||||
15
examples/error-pages/views/index.jade
Normal file
15
examples/error-pages/views/index.jade
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
extends layout
|
||||
|
||||
block content
|
||||
h2 Pages Example
|
||||
ul
|
||||
li
|
||||
| visit
|
||||
a(href="/500") 500
|
||||
li
|
||||
| visit
|
||||
a(href="/404") 404
|
||||
li
|
||||
| visit
|
||||
a(href='/403') 403
|
||||
6
examples/error-pages/views/layout.jade
Normal file
6
examples/error-pages/views/layout.jade
Normal file
@@ -0,0 +1,6 @@
|
||||
html
|
||||
head
|
||||
title Custom Pages Example
|
||||
body
|
||||
h1 My Site
|
||||
block content
|
||||
48
examples/error/index.js
Normal file
48
examples/error/index.js
Normal file
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../');
|
||||
var logger = require('morgan');
|
||||
var app = module.exports = express();
|
||||
var test = app.get('env') == 'test';
|
||||
|
||||
if (!test) app.use(logger('dev'));
|
||||
|
||||
// error handling middleware have an arity of 4
|
||||
// instead of the typical (req, res, next),
|
||||
// otherwise they behave exactly like regular
|
||||
// middleware, you may have several of them,
|
||||
// in different orders etc.
|
||||
|
||||
function error(err, req, res, next) {
|
||||
// log it
|
||||
if (!test) console.error(err.stack);
|
||||
|
||||
// respond with 500 "Internal Server Error".
|
||||
res.status(500);
|
||||
res.send('Internal Server Error');
|
||||
}
|
||||
|
||||
app.get('/', function(req, res){
|
||||
// Caught and passed down to the errorHandler middleware
|
||||
throw new Error('something broke!');
|
||||
});
|
||||
|
||||
app.get('/next', function(req, res, next){
|
||||
// We can also pass exceptions to next()
|
||||
process.nextTick(function(){
|
||||
next(new Error('oh no!'));
|
||||
});
|
||||
});
|
||||
|
||||
// the error handler is placed after routes
|
||||
// if it were above it would not receive errors
|
||||
// from app.get() etc
|
||||
app.use(error);
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
64
examples/expose-data-to-client/index.js
Normal file
64
examples/expose-data-to-client/index.js
Normal file
@@ -0,0 +1,64 @@
|
||||
|
||||
var express = require('../..');
|
||||
var logger = require('morgan');
|
||||
var app = express();
|
||||
|
||||
app.set('view engine', 'jade');
|
||||
app.set('views', __dirname + '/views');
|
||||
|
||||
function User(name) {
|
||||
this.private = 'heyyyy';
|
||||
this.secret = 'something';
|
||||
this.name = name;
|
||||
this.id = 123;
|
||||
}
|
||||
|
||||
// You'll probably want to do
|
||||
// something like this so you
|
||||
// dont expose "secret" data.
|
||||
|
||||
User.prototype.toJSON = function(){
|
||||
return {
|
||||
id: this.id,
|
||||
name: this.name
|
||||
};
|
||||
};
|
||||
|
||||
app.use(logger('dev'));
|
||||
|
||||
// earlier on expose an object
|
||||
// that we can tack properties on.
|
||||
// all res.locals props are exposed
|
||||
// to the templates, so "expose" will
|
||||
// be present.
|
||||
|
||||
app.use(function(req, res, next){
|
||||
res.locals.expose = {};
|
||||
// you could alias this as req or res.expose
|
||||
// to make it shorter and less annoying
|
||||
next();
|
||||
});
|
||||
|
||||
// pretend we loaded a user
|
||||
|
||||
app.use(function(req, res, next){
|
||||
req.user = new User('Tobi');
|
||||
next();
|
||||
});
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.redirect('/user');
|
||||
});
|
||||
|
||||
app.get('/user', function(req, res){
|
||||
// we only want to expose the user
|
||||
// to the client for this route:
|
||||
res.locals.expose.user = req.user;
|
||||
res.render('page');
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
14
examples/expose-data-to-client/views/page.jade
Normal file
14
examples/expose-data-to-client/views/page.jade
Normal file
@@ -0,0 +1,14 @@
|
||||
html
|
||||
head
|
||||
title Express
|
||||
script.
|
||||
// call this whatever you like,
|
||||
// or dump them into individual
|
||||
// props like "var user ="
|
||||
var data = !{JSON.stringify(expose)}
|
||||
body
|
||||
h1 Expose client data
|
||||
p The following was exposed to the client:
|
||||
pre
|
||||
script.
|
||||
document.write(JSON.stringify(data, null, 2))
|
||||
13
examples/hello-world/index.js
Normal file
13
examples/hello-world/index.js
Normal file
@@ -0,0 +1,13 @@
|
||||
var express = require('../../');
|
||||
|
||||
var app = express();
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.send('Hello World');
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
51
examples/jade/index.js
Normal file
51
examples/jade/index.js
Normal file
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../lib/express');
|
||||
|
||||
// Path to our public directory
|
||||
|
||||
var pub = __dirname + '/public';
|
||||
|
||||
// setup middleware
|
||||
|
||||
var app = express();
|
||||
app.use(express.static(pub));
|
||||
|
||||
// Optional since express defaults to CWD/views
|
||||
|
||||
app.set('views', __dirname + '/views');
|
||||
|
||||
// Set our default template engine to "jade"
|
||||
// which prevents the need for extensions
|
||||
// (although you can still mix and match)
|
||||
app.set('view engine', 'jade');
|
||||
|
||||
function User(name, email) {
|
||||
this.name = name;
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
// Dummy users
|
||||
var users = [
|
||||
new User('tj', 'tj@vision-media.ca')
|
||||
, new User('ciaran', 'ciaranj@gmail.com')
|
||||
, new User('aaron', 'aaron.heckmann+github@gmail.com')
|
||||
];
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.render('users', { users: users });
|
||||
});
|
||||
|
||||
// change this to a better error handler in your code
|
||||
// sending stacktrace to users in production is not good
|
||||
app.use(function(err, req, res, next) {
|
||||
res.send(err.stack);
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
4
examples/jade/public/stylesheets/style.css
Normal file
4
examples/jade/public/stylesheets/style.css
Normal file
@@ -0,0 +1,4 @@
|
||||
body {
|
||||
padding: 50px 80px;
|
||||
font: 14px "Helvetica Nueue", "Lucida Grande", Arial, sans-serif;
|
||||
}
|
||||
3
examples/jade/views/header.jade
Normal file
3
examples/jade/views/header.jade
Normal file
@@ -0,0 +1,3 @@
|
||||
head
|
||||
title Jade Example
|
||||
link(rel="stylesheet", href="/stylesheets/style.css")
|
||||
5
examples/jade/views/layout.jade
Normal file
5
examples/jade/views/layout.jade
Normal file
@@ -0,0 +1,5 @@
|
||||
doctype html
|
||||
html
|
||||
include header
|
||||
body
|
||||
block content
|
||||
8
examples/jade/views/users/index.jade
Normal file
8
examples/jade/views/users/index.jade
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
extends ../layout
|
||||
|
||||
block content
|
||||
h1 Users
|
||||
#users
|
||||
for user in users
|
||||
include user
|
||||
3
examples/jade/views/users/user.jade
Normal file
3
examples/jade/views/users/user.jade
Normal file
@@ -0,0 +1,3 @@
|
||||
.user
|
||||
h2= user.name
|
||||
.email= user.email
|
||||
45
examples/markdown/index.js
Normal file
45
examples/markdown/index.js
Normal file
@@ -0,0 +1,45 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var fs = require('fs');
|
||||
var md = require('marked').parse;
|
||||
|
||||
var app = module.exports = express();
|
||||
|
||||
// register .md as an engine in express view system
|
||||
|
||||
app.engine('md', function(path, options, fn){
|
||||
fs.readFile(path, 'utf8', function(err, str){
|
||||
if (err) return fn(err);
|
||||
try {
|
||||
var html = md(str);
|
||||
html = html.replace(/\{([^}]+)\}/g, function(_, name){
|
||||
return options[name] || '';
|
||||
});
|
||||
fn(null, html);
|
||||
} catch(err) {
|
||||
fn(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
app.set('views', __dirname + '/views');
|
||||
|
||||
// make it the default so we dont need .md
|
||||
app.set('view engine', 'md');
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.render('index', { title: 'Markdown Example' });
|
||||
});
|
||||
|
||||
app.get('/fail', function(req, res){
|
||||
res.render('missing', { title: 'Markdown Example' });
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
4
examples/markdown/views/index.md
Normal file
4
examples/markdown/views/index.md
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
# {title}
|
||||
|
||||
Just an example view rendered with _markdown_.
|
||||
60
examples/multipart/index.js
Normal file
60
examples/multipart/index.js
Normal file
@@ -0,0 +1,60 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var multiparty = require('multiparty');
|
||||
var format = require('util').format;
|
||||
|
||||
var app = module.exports = express();
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.send('<form method="post" enctype="multipart/form-data">'
|
||||
+ '<p>Title: <input type="text" name="title" /></p>'
|
||||
+ '<p>Image: <input type="file" name="image" /></p>'
|
||||
+ '<p><input type="submit" value="Upload" /></p>'
|
||||
+ '</form>');
|
||||
});
|
||||
|
||||
app.post('/', function(req, res, next){
|
||||
// create a form to begin parsing
|
||||
var form = new multiparty.Form();
|
||||
var image;
|
||||
var title;
|
||||
|
||||
form.on('error', next);
|
||||
form.on('close', function(){
|
||||
res.send(format('\nuploaded %s (%d Kb) as %s'
|
||||
, image.filename
|
||||
, image.size / 1024 | 0
|
||||
, title));
|
||||
});
|
||||
|
||||
// listen on field event for title
|
||||
form.on('field', function(name, val){
|
||||
if (name !== 'title') return;
|
||||
title = val;
|
||||
});
|
||||
|
||||
// listen on part event for image file
|
||||
form.on('part', function(part){
|
||||
if (!part.filename) return;
|
||||
if (part.name !== 'image') return part.resume();
|
||||
image = {};
|
||||
image.filename = part.filename;
|
||||
image.size = 0;
|
||||
part.on('data', function(buf){
|
||||
image.size += buf.length;
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// parse the form
|
||||
form.parse(req);
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(4000);
|
||||
console.log('Express started on port 4000');
|
||||
}
|
||||
3
examples/mvc/controllers/main/index.js
Normal file
3
examples/mvc/controllers/main/index.js
Normal file
@@ -0,0 +1,3 @@
|
||||
exports.index = function(req, res){
|
||||
res.redirect('/users');
|
||||
};
|
||||
27
examples/mvc/controllers/pet/index.js
Normal file
27
examples/mvc/controllers/pet/index.js
Normal file
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var db = require('../../db');
|
||||
|
||||
exports.before = function(req, res, next){
|
||||
var pet = db.pets[req.params.pet_id];
|
||||
if (!pet) return next('route');
|
||||
req.pet = pet;
|
||||
next();
|
||||
};
|
||||
|
||||
exports.show = function(req, res, next){
|
||||
res.render('show', { pet: req.pet });
|
||||
};
|
||||
|
||||
exports.edit = function(req, res, next){
|
||||
res.render('edit', { pet: req.pet });
|
||||
};
|
||||
|
||||
exports.update = function(req, res, next){
|
||||
var body = req.body;
|
||||
req.pet.name = body.pet.name;
|
||||
res.message('Information updated!');
|
||||
res.redirect('/pet/' + req.pet.id);
|
||||
};
|
||||
6
examples/mvc/controllers/pet/views/edit.jade
Normal file
6
examples/mvc/controllers/pet/views/edit.jade
Normal file
@@ -0,0 +1,6 @@
|
||||
link(rel='stylesheet', href='/style.css')
|
||||
h1= pet.name
|
||||
form(action='/pet/#{pet.id}?_method=put', method='post')
|
||||
label= 'Name: '
|
||||
input(type='text', name='pet[name]', value=pet.name)
|
||||
input(type='submit', value='Update')
|
||||
6
examples/mvc/controllers/pet/views/show.jade
Normal file
6
examples/mvc/controllers/pet/views/show.jade
Normal file
@@ -0,0 +1,6 @@
|
||||
link(rel='stylesheet', href='/style.css')
|
||||
|
||||
h1= pet.name
|
||||
a(href='/pet/#{pet.id}/edit') edit
|
||||
|
||||
p You are viewing #{pet.name}
|
||||
20
examples/mvc/controllers/user-pet/index.js
Normal file
20
examples/mvc/controllers/user-pet/index.js
Normal file
@@ -0,0 +1,20 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var db = require('../../db');
|
||||
|
||||
exports.name = 'pet';
|
||||
exports.prefix = '/user/:user_id';
|
||||
|
||||
exports.create = function(req, res, next){
|
||||
var id = req.params.user_id;
|
||||
var user = db.users[id];
|
||||
var body = req.body;
|
||||
if (!user) return next('route');
|
||||
var pet = { name: body.pet.name };
|
||||
pet.id = db.pets.push(pet) - 1;
|
||||
user.pets.push(pet);
|
||||
res.message('Added pet ' + body.pet.name);
|
||||
res.redirect('/user/' + id);
|
||||
};
|
||||
37
examples/mvc/controllers/user/index.js
Normal file
37
examples/mvc/controllers/user/index.js
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var db = require('../../db');
|
||||
|
||||
exports.before = function(req, res, next){
|
||||
var id = req.params.user_id;
|
||||
if (!id) return next();
|
||||
// pretend to query a database...
|
||||
process.nextTick(function(){
|
||||
req.user = db.users[id];
|
||||
// cant find that user
|
||||
if (!req.user) return next('route');
|
||||
// found it, move on to the routes
|
||||
next();
|
||||
});
|
||||
};
|
||||
|
||||
exports.list = function(req, res, next){
|
||||
res.render('list', { users: db.users });
|
||||
};
|
||||
|
||||
exports.edit = function(req, res, next){
|
||||
res.render('edit', { user: req.user });
|
||||
};
|
||||
|
||||
exports.show = function(req, res, next){
|
||||
res.render('show', { user: req.user });
|
||||
};
|
||||
|
||||
exports.update = function(req, res, next){
|
||||
var body = req.body;
|
||||
req.user.name = body.user.name;
|
||||
res.message('Information updated!');
|
||||
res.redirect('/user/' + req.user.id);
|
||||
};
|
||||
11
examples/mvc/controllers/user/views/edit.jade
Normal file
11
examples/mvc/controllers/user/views/edit.jade
Normal file
@@ -0,0 +1,11 @@
|
||||
link(rel='stylesheet', href='/style.css')
|
||||
h1= user.name
|
||||
form(action='/user/#{user.id}?_method=put', method='post')
|
||||
label= 'Name: '
|
||||
input(type='text', name='user[name]', value='#{user.name}')
|
||||
input(type='submit', value='Update')
|
||||
|
||||
form(action='/user/#{user.id}/pet', method='post')
|
||||
label= 'Pet: '
|
||||
input(type='text', name='pet[name]', placeholder='Name')
|
||||
input(type='submit', value='Add')
|
||||
7
examples/mvc/controllers/user/views/list.jade
Normal file
7
examples/mvc/controllers/user/views/list.jade
Normal file
@@ -0,0 +1,7 @@
|
||||
link(rel='stylesheet', href='/style.css')
|
||||
h1 Users
|
||||
p Click a user below to view their pets.
|
||||
ul
|
||||
each user in users
|
||||
li
|
||||
a(href='/user/#{user.id}')= user.name
|
||||
17
examples/mvc/controllers/user/views/show.jade
Normal file
17
examples/mvc/controllers/user/views/show.jade
Normal file
@@ -0,0 +1,17 @@
|
||||
link(rel='stylesheet', href='/style.css')
|
||||
h1= user.name + ' '
|
||||
a(href='/user/#{user.id}/edit') edit
|
||||
|
||||
if (hasMessages)
|
||||
ul#messages
|
||||
each msg in messages
|
||||
li= msg
|
||||
|
||||
if (user.pets.length)
|
||||
p View #{user.name}'s pets:
|
||||
ul
|
||||
each pet in user.pets
|
||||
li
|
||||
a(href='/pet/#{pet.id}')= pet.name
|
||||
else
|
||||
p No pets!
|
||||
14
examples/mvc/db.js
Normal file
14
examples/mvc/db.js
Normal file
@@ -0,0 +1,14 @@
|
||||
// faux database
|
||||
|
||||
var pets = exports.pets = [];
|
||||
|
||||
pets.push({ name: 'Tobi', id: 0 });
|
||||
pets.push({ name: 'Loki', id: 1 });
|
||||
pets.push({ name: 'Jane', id: 2 });
|
||||
pets.push({ name: 'Raul', id: 3 });
|
||||
|
||||
var users = exports.users = [];
|
||||
|
||||
users.push({ name: 'TJ', pets: [pets[0], pets[1], pets[2]], id: 0 });
|
||||
users.push({ name: 'Guillermo', pets: [pets[3]], id: 1 });
|
||||
users.push({ name: 'Nathan', pets: [], id: 2 });
|
||||
95
examples/mvc/index.js
Normal file
95
examples/mvc/index.js
Normal file
@@ -0,0 +1,95 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var logger = require('morgan');
|
||||
var session = require('express-session');
|
||||
var bodyParser = require('body-parser');
|
||||
var methodOverride = require('method-override');
|
||||
|
||||
var app = module.exports = express();
|
||||
|
||||
// settings
|
||||
|
||||
// set our default template engine to "jade"
|
||||
// which prevents the need for extensions
|
||||
app.set('view engine', 'jade');
|
||||
|
||||
// set views for error and 404 pages
|
||||
app.set('views', __dirname + '/views');
|
||||
|
||||
// define a custom res.message() method
|
||||
// which stores messages in the session
|
||||
app.response.message = function(msg){
|
||||
// reference `req.session` via the `this.req` reference
|
||||
var sess = this.req.session;
|
||||
// simply add the msg to an array for later
|
||||
sess.messages = sess.messages || [];
|
||||
sess.messages.push(msg);
|
||||
return this;
|
||||
};
|
||||
|
||||
// log
|
||||
if (!module.parent) app.use(logger('dev'));
|
||||
|
||||
// serve static files
|
||||
app.use(express.static(__dirname + '/public'));
|
||||
|
||||
// session support
|
||||
app.use(session({
|
||||
resave: false, // don't save session if unmodified
|
||||
saveUninitialized: false, // don't create session until something stored
|
||||
secret: 'some secret here'
|
||||
}));
|
||||
|
||||
// parse request bodies (req.body)
|
||||
app.use(bodyParser.urlencoded({ extended: true }));
|
||||
|
||||
// allow overriding methods in query (?_method=put)
|
||||
app.use(methodOverride('_method'));
|
||||
|
||||
// expose the "messages" local variable when views are rendered
|
||||
app.use(function(req, res, next){
|
||||
var msgs = req.session.messages || [];
|
||||
|
||||
// expose "messages" local variable
|
||||
res.locals.messages = msgs;
|
||||
|
||||
// expose "hasMessages"
|
||||
res.locals.hasMessages = !! msgs.length;
|
||||
|
||||
/* This is equivalent:
|
||||
res.locals({
|
||||
messages: msgs,
|
||||
hasMessages: !! msgs.length
|
||||
});
|
||||
*/
|
||||
|
||||
next();
|
||||
// empty or "flush" the messages so they
|
||||
// don't build up
|
||||
req.session.messages = [];
|
||||
});
|
||||
|
||||
// load controllers
|
||||
require('./lib/boot')(app, { verbose: !module.parent });
|
||||
|
||||
app.use(function(err, req, res, next){
|
||||
// log it
|
||||
if (!module.parent) console.error(err.stack);
|
||||
|
||||
// error page
|
||||
res.status(500).render('5xx');
|
||||
});
|
||||
|
||||
// assume 404 since no middleware responded
|
||||
app.use(function(req, res, next){
|
||||
res.status(404).render('404', { url: req.originalUrl });
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
77
examples/mvc/lib/boot.js
Normal file
77
examples/mvc/lib/boot.js
Normal file
@@ -0,0 +1,77 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../..');
|
||||
var fs = require('fs');
|
||||
|
||||
module.exports = function(parent, options){
|
||||
var verbose = options.verbose;
|
||||
fs.readdirSync(__dirname + '/../controllers').forEach(function(name){
|
||||
verbose && console.log('\n %s:', name);
|
||||
var obj = require('./../controllers/' + name);
|
||||
var name = obj.name || name;
|
||||
var prefix = obj.prefix || '';
|
||||
var app = express();
|
||||
var handler;
|
||||
var method;
|
||||
var path;
|
||||
|
||||
// allow specifying the view engine
|
||||
if (obj.engine) app.set('view engine', obj.engine);
|
||||
app.set('views', __dirname + '/../controllers/' + name + '/views');
|
||||
|
||||
// generate routes based
|
||||
// on the exported methods
|
||||
for (var key in obj) {
|
||||
// "reserved" exports
|
||||
if (~['name', 'prefix', 'engine', 'before'].indexOf(key)) continue;
|
||||
// route exports
|
||||
switch (key) {
|
||||
case 'show':
|
||||
method = 'get';
|
||||
path = '/' + name + '/:' + name + '_id';
|
||||
break;
|
||||
case 'list':
|
||||
method = 'get';
|
||||
path = '/' + name + 's';
|
||||
break;
|
||||
case 'edit':
|
||||
method = 'get';
|
||||
path = '/' + name + '/:' + name + '_id/edit';
|
||||
break;
|
||||
case 'update':
|
||||
method = 'put';
|
||||
path = '/' + name + '/:' + name + '_id';
|
||||
break;
|
||||
case 'create':
|
||||
method = 'post';
|
||||
path = '/' + name;
|
||||
break;
|
||||
case 'index':
|
||||
method = 'get';
|
||||
path = '/';
|
||||
break;
|
||||
default:
|
||||
/* istanbul ignore next */
|
||||
throw new Error('unrecognized route: ' + name + '.' + key);
|
||||
}
|
||||
|
||||
// setup
|
||||
handler = obj[key];
|
||||
path = prefix + path;
|
||||
|
||||
// before middleware support
|
||||
if (obj.before) {
|
||||
app[method](path, obj.before, handler);
|
||||
verbose && console.log(' %s %s -> before -> %s', method.toUpperCase(), path, key);
|
||||
} else {
|
||||
app[method](path, obj[key]);
|
||||
verbose && console.log(' %s %s -> %s', method.toUpperCase(), path, key);
|
||||
}
|
||||
}
|
||||
|
||||
// mount the app
|
||||
parent.use(app);
|
||||
});
|
||||
};
|
||||
14
examples/mvc/public/style.css
Normal file
14
examples/mvc/public/style.css
Normal file
@@ -0,0 +1,14 @@
|
||||
body {
|
||||
padding: 50px;
|
||||
font: 16px "Helvetica Neue", Helvetica, Arial;
|
||||
}
|
||||
a {
|
||||
color: #107aff;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
h1 a {
|
||||
font-size: 16px;
|
||||
}
|
||||
3
examples/mvc/views/404.jade
Normal file
3
examples/mvc/views/404.jade
Normal file
@@ -0,0 +1,3 @@
|
||||
link(rel='stylesheet', href='/style.css')
|
||||
h1 404: Not Found
|
||||
p Sorry we can't find #{url}
|
||||
3
examples/mvc/views/5xx.jade
Normal file
3
examples/mvc/views/5xx.jade
Normal file
@@ -0,0 +1,3 @@
|
||||
link(rel='stylesheet', href='/style.css')
|
||||
h1 500: Internal Server Error
|
||||
p Looks like something blew up!
|
||||
56
examples/online/index.js
Normal file
56
examples/online/index.js
Normal file
@@ -0,0 +1,56 @@
|
||||
// first:
|
||||
// $ npm install redis online
|
||||
// $ redis-server
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var online = require('online');
|
||||
var redis = require('redis');
|
||||
var db = redis.createClient();
|
||||
|
||||
// online
|
||||
|
||||
online = online(db);
|
||||
|
||||
// app
|
||||
|
||||
var app = express();
|
||||
|
||||
// activity tracking, in this case using
|
||||
// the UA string, you would use req.user.id etc
|
||||
|
||||
app.use(function(req, res, next){
|
||||
// fire-and-forget
|
||||
online.add(req.headers['user-agent']);
|
||||
next();
|
||||
});
|
||||
|
||||
/**
|
||||
* List helper.
|
||||
*/
|
||||
|
||||
function list(ids) {
|
||||
return '<ul>' + ids.map(function(id){
|
||||
return '<li>' + id + '</li>';
|
||||
}).join('') + '</ul>';
|
||||
}
|
||||
|
||||
/**
|
||||
* GET users online.
|
||||
*/
|
||||
|
||||
app.get('/', function(req, res, next){
|
||||
online.last(5, function(err, ids){
|
||||
if (err) return next(err);
|
||||
res.send('<p>Users online: ' + ids.length + '</p>' + list(ids));
|
||||
});
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
70
examples/params/app.js
Normal file
70
examples/params/app.js
Normal file
@@ -0,0 +1,70 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../');
|
||||
var app = module.exports = express();
|
||||
|
||||
// Faux database
|
||||
|
||||
var users = [
|
||||
{ name: 'tj' }
|
||||
, { name: 'tobi' }
|
||||
, { name: 'loki' }
|
||||
, { name: 'jane' }
|
||||
, { name: 'bandit' }
|
||||
];
|
||||
|
||||
// Convert :to and :from to integers
|
||||
|
||||
app.param(['to', 'from'], function(req, res, next, num, name){
|
||||
req.params[name] = parseInt(num, 10);
|
||||
if( isNaN(req.params[name]) ){
|
||||
next(new Error('failed to parseInt '+num));
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
});
|
||||
|
||||
// Load user by id
|
||||
|
||||
app.param('user', function(req, res, next, id){
|
||||
if (req.user = users[id]) {
|
||||
next();
|
||||
} else {
|
||||
next(new Error('failed to find user'));
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* GET index.
|
||||
*/
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.send('Visit /user/0 or /users/0-2');
|
||||
});
|
||||
|
||||
/**
|
||||
* GET :user.
|
||||
*/
|
||||
|
||||
app.get('/user/:user', function(req, res, next){
|
||||
res.send('user ' + req.user.name);
|
||||
});
|
||||
|
||||
/**
|
||||
* GET users :from - :to.
|
||||
*/
|
||||
|
||||
app.get('/users/:from-:to', function(req, res, next){
|
||||
var from = req.params.from;
|
||||
var to = req.params.to;
|
||||
var names = users.map(function(user){ return user.name; });
|
||||
res.send('users ' + names.slice(from, to).join(', '));
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
93
examples/resource/app.js
Normal file
93
examples/resource/app.js
Normal file
@@ -0,0 +1,93 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../');
|
||||
|
||||
var app = module.exports = express();
|
||||
|
||||
// Ad-hoc example resource method
|
||||
|
||||
app.resource = function(path, obj) {
|
||||
this.get(path, obj.index);
|
||||
this.get(path + '/:a..:b.:format?', function(req, res){
|
||||
var a = parseInt(req.params.a, 10);
|
||||
var b = parseInt(req.params.b, 10);
|
||||
var format = req.params.format;
|
||||
obj.range(req, res, a, b, format);
|
||||
});
|
||||
this.get(path + '/:id', obj.show);
|
||||
this.delete(path + '/:id', function(req, res){
|
||||
var id = parseInt(req.params.id, 10);
|
||||
obj.destroy(req, res, id);
|
||||
});
|
||||
};
|
||||
|
||||
// Fake records
|
||||
|
||||
var users = [
|
||||
{ name: 'tj' }
|
||||
, { name: 'ciaran' }
|
||||
, { name: 'aaron' }
|
||||
, { name: 'guillermo' }
|
||||
, { name: 'simon' }
|
||||
, { name: 'tobi' }
|
||||
];
|
||||
|
||||
// Fake controller.
|
||||
|
||||
var User = {
|
||||
index: function(req, res){
|
||||
res.send(users);
|
||||
},
|
||||
show: function(req, res){
|
||||
res.send(users[req.params.id] || { error: 'Cannot find user' });
|
||||
},
|
||||
destroy: function(req, res, id){
|
||||
var destroyed = id in users;
|
||||
delete users[id];
|
||||
res.send(destroyed ? 'destroyed' : 'Cannot find user');
|
||||
},
|
||||
range: function(req, res, a, b, format){
|
||||
var range = users.slice(a, b + 1);
|
||||
switch (format) {
|
||||
case 'json':
|
||||
res.send(range);
|
||||
break;
|
||||
case 'html':
|
||||
default:
|
||||
var html = '<ul>' + range.map(function(user){
|
||||
return '<li>' + user.name + '</li>';
|
||||
}).join('\n') + '</ul>';
|
||||
res.send(html);
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// curl http://localhost:3000/users -- responds with all users
|
||||
// curl http://localhost:3000/users/1 -- responds with user 1
|
||||
// curl http://localhost:3000/users/4 -- responds with error
|
||||
// curl http://localhost:3000/users/1..3 -- responds with several users
|
||||
// curl -X DELETE http://localhost:3000/users/1 -- deletes the user
|
||||
|
||||
app.resource('/users', User);
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.send([
|
||||
'<h1>Examples:</h1> <ul>'
|
||||
, '<li>GET /users</li>'
|
||||
, '<li>GET /users/1</li>'
|
||||
, '<li>GET /users/3</li>'
|
||||
, '<li>GET /users/1..3</li>'
|
||||
, '<li>GET /users/1..3.json</li>'
|
||||
, '<li>DELETE /users/4</li>'
|
||||
, '</ul>'
|
||||
].join('\n'));
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
72
examples/route-map/index.js
Normal file
72
examples/route-map/index.js
Normal file
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../lib/express');
|
||||
|
||||
var verbose = process.env.NODE_ENV != 'test';
|
||||
|
||||
var app = module.exports = express();
|
||||
|
||||
app.map = function(a, route){
|
||||
route = route || '';
|
||||
for (var key in a) {
|
||||
switch (typeof a[key]) {
|
||||
// { '/path': { ... }}
|
||||
case 'object':
|
||||
app.map(a[key], route + key);
|
||||
break;
|
||||
// get: function(){ ... }
|
||||
case 'function':
|
||||
if (verbose) console.log('%s %s', key, route);
|
||||
app[key](route, a[key]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var users = {
|
||||
list: function(req, res){
|
||||
res.send('user list');
|
||||
},
|
||||
|
||||
get: function(req, res){
|
||||
res.send('user ' + req.params.uid);
|
||||
},
|
||||
|
||||
delete: function(req, res){
|
||||
res.send('delete users');
|
||||
}
|
||||
};
|
||||
|
||||
var pets = {
|
||||
list: function(req, res){
|
||||
res.send('user ' + req.params.uid + '\'s pets');
|
||||
},
|
||||
|
||||
delete: function(req, res){
|
||||
res.send('delete ' + req.params.uid + '\'s pet ' + req.params.pid);
|
||||
}
|
||||
};
|
||||
|
||||
app.map({
|
||||
'/users': {
|
||||
get: users.list,
|
||||
delete: users.delete,
|
||||
'/:uid': {
|
||||
get: users.get,
|
||||
'/pets': {
|
||||
get: pets.list,
|
||||
'/:pid': {
|
||||
delete: pets.delete
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
88
examples/route-middleware/index.js
Normal file
88
examples/route-middleware/index.js
Normal file
@@ -0,0 +1,88 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../../lib/express');
|
||||
|
||||
var app = express();
|
||||
|
||||
// Example requests:
|
||||
// curl http://localhost:3000/user/0
|
||||
// curl http://localhost:3000/user/0/edit
|
||||
// curl http://localhost:3000/user/1
|
||||
// curl http://localhost:3000/user/1/edit (unauthorized since this is not you)
|
||||
// curl -X DELETE http://localhost:3000/user/0 (unauthorized since you are not an admin)
|
||||
|
||||
// Dummy users
|
||||
var users = [
|
||||
{ id: 0, name: 'tj', email: 'tj@vision-media.ca', role: 'member' }
|
||||
, { id: 1, name: 'ciaran', email: 'ciaranj@gmail.com', role: 'member' }
|
||||
, { id: 2, name: 'aaron', email: 'aaron.heckmann+github@gmail.com', role: 'admin' }
|
||||
];
|
||||
|
||||
function loadUser(req, res, next) {
|
||||
// You would fetch your user from the db
|
||||
var user = users[req.params.id];
|
||||
if (user) {
|
||||
req.user = user;
|
||||
next();
|
||||
} else {
|
||||
next(new Error('Failed to load user ' + req.params.id));
|
||||
}
|
||||
}
|
||||
|
||||
function andRestrictToSelf(req, res, next) {
|
||||
// If our authenticated user is the user we are viewing
|
||||
// then everything is fine :)
|
||||
if (req.authenticatedUser.id == req.user.id) {
|
||||
next();
|
||||
} else {
|
||||
// You may want to implement specific exceptions
|
||||
// such as UnauthorizedError or similar so that you
|
||||
// can handle these can be special-cased in an error handler
|
||||
// (view ./examples/pages for this)
|
||||
next(new Error('Unauthorized'));
|
||||
}
|
||||
}
|
||||
|
||||
function andRestrictTo(role) {
|
||||
return function(req, res, next) {
|
||||
if (req.authenticatedUser.role == role) {
|
||||
next();
|
||||
} else {
|
||||
next(new Error('Unauthorized'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Middleware for faux authentication
|
||||
// you would of course implement something real,
|
||||
// but this illustrates how an authenticated user
|
||||
// may interact with middleware
|
||||
|
||||
app.use(function(req, res, next){
|
||||
req.authenticatedUser = users[0];
|
||||
next();
|
||||
});
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.redirect('/user/0');
|
||||
});
|
||||
|
||||
app.get('/user/:id', loadUser, function(req, res){
|
||||
res.send('Viewing user ' + req.user.name);
|
||||
});
|
||||
|
||||
app.get('/user/:id/edit', loadUser, andRestrictToSelf, function(req, res){
|
||||
res.send('Editing user ' + req.user.name);
|
||||
});
|
||||
|
||||
app.delete('/user/:id', loadUser, andRestrictTo('admin'), function(req, res){
|
||||
res.send('Deleted user ' + req.user.name);
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
53
examples/route-separation/index.js
Normal file
53
examples/route-separation/index.js
Normal file
@@ -0,0 +1,53 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var app = express();
|
||||
var logger = require('morgan');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var bodyParser = require('body-parser');
|
||||
var methodOverride = require('method-override');
|
||||
var site = require('./site');
|
||||
var post = require('./post');
|
||||
var user = require('./user');
|
||||
|
||||
module.exports = app;
|
||||
|
||||
// Config
|
||||
|
||||
app.set('view engine', 'jade');
|
||||
app.set('views', __dirname + '/views');
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.use(express.logger('dev'));
|
||||
}
|
||||
|
||||
app.use(methodOverride('_method'));
|
||||
app.use(cookieParser());
|
||||
app.use(bodyParser.urlencoded({ extended: true }));
|
||||
app.use(express.static(__dirname + '/public'));
|
||||
|
||||
// General
|
||||
|
||||
app.get('/', site.index);
|
||||
|
||||
// User
|
||||
|
||||
app.get('/users', user.list);
|
||||
app.all('/user/:id/:op?', user.load);
|
||||
app.get('/user/:id', user.view);
|
||||
app.get('/user/:id/view', user.view);
|
||||
app.get('/user/:id/edit', user.edit);
|
||||
app.put('/user/:id/edit', user.update);
|
||||
|
||||
// Posts
|
||||
|
||||
app.get('/posts', post.list);
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
11
examples/route-separation/post.js
Normal file
11
examples/route-separation/post.js
Normal file
@@ -0,0 +1,11 @@
|
||||
// Fake posts database
|
||||
|
||||
var posts = [
|
||||
{ title: 'Foo', body: 'some foo bar' },
|
||||
{ title: 'Foo bar', body: 'more foo bar' },
|
||||
{ title: 'Foo bar baz', body: 'more foo bar baz' }
|
||||
];
|
||||
|
||||
exports.list = function(req, res){
|
||||
res.render('posts', { title: 'Posts', posts: posts });
|
||||
};
|
||||
24
examples/route-separation/public/style.css
Normal file
24
examples/route-separation/public/style.css
Normal file
@@ -0,0 +1,24 @@
|
||||
body {
|
||||
padding: 50px;
|
||||
font: 14px "Helvetica Neue", Arial, sans-serif;
|
||||
}
|
||||
a {
|
||||
color: #00AEFF;
|
||||
text-decoration: none;
|
||||
}
|
||||
a.edit {
|
||||
color: #000;
|
||||
opacity: .3;
|
||||
}
|
||||
a.edit::before {
|
||||
content: ' [';
|
||||
}
|
||||
a.edit::after {
|
||||
content: ']';
|
||||
}
|
||||
dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
dd {
|
||||
margin: 15px;
|
||||
}
|
||||
3
examples/route-separation/site.js
Normal file
3
examples/route-separation/site.js
Normal file
@@ -0,0 +1,3 @@
|
||||
exports.index = function(req, res){
|
||||
res.render('index', { title: 'Route Separation Example' });
|
||||
};
|
||||
45
examples/route-separation/user.js
Normal file
45
examples/route-separation/user.js
Normal file
@@ -0,0 +1,45 @@
|
||||
// Fake user database
|
||||
|
||||
var users = [
|
||||
{ name: 'TJ', email: 'tj@vision-media.ca' },
|
||||
{ name: 'Tobi', email: 'tobi@vision-media.ca' }
|
||||
];
|
||||
|
||||
exports.list = function(req, res){
|
||||
res.render('users', { title: 'Users', users: users });
|
||||
};
|
||||
|
||||
exports.load = function(req, res, next){
|
||||
var id = req.params.id;
|
||||
req.user = users[id];
|
||||
if (req.user) {
|
||||
next();
|
||||
} else {
|
||||
var err = new Error('cannot find user ' + id);
|
||||
err.status = 404;
|
||||
next(err);
|
||||
}
|
||||
};
|
||||
|
||||
exports.view = function(req, res){
|
||||
res.render('users/view', {
|
||||
title: 'Viewing user ' + req.user.name,
|
||||
user: req.user
|
||||
});
|
||||
};
|
||||
|
||||
exports.edit = function(req, res){
|
||||
res.render('users/edit', {
|
||||
title: 'Editing user ' + req.user.name,
|
||||
user: req.user
|
||||
});
|
||||
};
|
||||
|
||||
exports.update = function(req, res){
|
||||
// Normally you would handle all kinds of
|
||||
// validation and save back to the db
|
||||
var user = req.body.user;
|
||||
req.user.name = user.name;
|
||||
req.user.email = user.email;
|
||||
res.redirect('back');
|
||||
};
|
||||
6
examples/route-separation/views/index.jade
Normal file
6
examples/route-separation/views/index.jade
Normal file
@@ -0,0 +1,6 @@
|
||||
extends layout
|
||||
|
||||
block content
|
||||
ul
|
||||
li Visit the <a href="/users">users</a> page
|
||||
li Visit the <a href="/posts">posts</a> page
|
||||
6
examples/route-separation/views/layout.jade
Normal file
6
examples/route-separation/views/layout.jade
Normal file
@@ -0,0 +1,6 @@
|
||||
html
|
||||
head
|
||||
title= title
|
||||
link(href="/style.css", rel="stylesheet")
|
||||
body
|
||||
block content
|
||||
8
examples/route-separation/views/posts/index.jade
Normal file
8
examples/route-separation/views/posts/index.jade
Normal file
@@ -0,0 +1,8 @@
|
||||
extends ../layout
|
||||
|
||||
block content
|
||||
h1 Posts
|
||||
dl#posts
|
||||
for post in posts
|
||||
dt= post.title
|
||||
dd= post.body
|
||||
12
examples/route-separation/views/users/edit.jade
Normal file
12
examples/route-separation/views/users/edit.jade
Normal file
@@ -0,0 +1,12 @@
|
||||
extends ../layout
|
||||
|
||||
block content
|
||||
h1 Editing #{user.name}
|
||||
#user
|
||||
form(action="?_method=put", method="post")
|
||||
p Name:
|
||||
input(type="text", value= user.name, name="user[name]")
|
||||
p Email:
|
||||
input(type="text", value= user.email, name="user[email]")
|
||||
p
|
||||
input(type="submit", value="Save")
|
||||
9
examples/route-separation/views/users/index.jade
Normal file
9
examples/route-separation/views/users/index.jade
Normal file
@@ -0,0 +1,9 @@
|
||||
extends ../layout
|
||||
|
||||
block content
|
||||
h1 Users
|
||||
#users
|
||||
for user, i in users
|
||||
li
|
||||
a(href="/user/#{i}")= user.name
|
||||
a.edit(href="/user/#{i}/edit") edit
|
||||
6
examples/route-separation/views/users/view.jade
Normal file
6
examples/route-separation/views/users/view.jade
Normal file
@@ -0,0 +1,6 @@
|
||||
extends ../layout
|
||||
|
||||
block content
|
||||
h1= user.name
|
||||
#user
|
||||
p Email: #{user.email}
|
||||
13
examples/search/client.js
Normal file
13
examples/search/client.js
Normal file
@@ -0,0 +1,13 @@
|
||||
var search = document.querySelector('[type=search]');
|
||||
var code = document.querySelector('pre');
|
||||
|
||||
search.addEventListener('keyup', function(){
|
||||
var xhr = new XMLHttpRequest;
|
||||
xhr.open('GET', '/search/' + search.value, true);
|
||||
xhr.onreadystatechange = function(){
|
||||
if (4 == xhr.readyState) {
|
||||
code.textContent = xhr.responseText;
|
||||
}
|
||||
};
|
||||
xhr.send();
|
||||
}, false);
|
||||
64
examples/search/index.js
Normal file
64
examples/search/index.js
Normal file
@@ -0,0 +1,64 @@
|
||||
// first:
|
||||
// $ npm install redis
|
||||
// $ redis-server
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var redis = require('redis');
|
||||
|
||||
var db = redis.createClient();
|
||||
|
||||
// npm install redis
|
||||
|
||||
var app = express();
|
||||
|
||||
app.set('view engine', 'jade');
|
||||
app.set('views', __dirname);
|
||||
|
||||
// populate search
|
||||
|
||||
db.sadd('ferret', 'tobi');
|
||||
db.sadd('ferret', 'loki');
|
||||
db.sadd('ferret', 'jane');
|
||||
db.sadd('cat', 'manny');
|
||||
db.sadd('cat', 'luna');
|
||||
|
||||
/**
|
||||
* GET the search page.
|
||||
*/
|
||||
|
||||
app.get('/', function(req, res){
|
||||
res.render('search');
|
||||
});
|
||||
|
||||
/**
|
||||
* GET search for :query.
|
||||
*/
|
||||
|
||||
app.get('/search/:query?', function(req, res){
|
||||
var query = req.params.query;
|
||||
db.smembers(query, function(err, vals){
|
||||
if (err) return res.send(500);
|
||||
res.send(vals);
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* GET client javascript. Here we use sendFile()
|
||||
* because serving __dirname with the static() middleware
|
||||
* would also mean serving our server "index.js" and the "search.jade"
|
||||
* template.
|
||||
*/
|
||||
|
||||
app.get('/client.js', function(req, res){
|
||||
res.sendFile(__dirname + '/client.js');
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
15
examples/search/search.jade
Normal file
15
examples/search/search.jade
Normal file
@@ -0,0 +1,15 @@
|
||||
doctype
|
||||
html
|
||||
head
|
||||
title Search example
|
||||
style.
|
||||
body {
|
||||
font: 14px "Helvetica Neue", Helvetica;
|
||||
padding: 50px;
|
||||
}
|
||||
body
|
||||
h2 Search
|
||||
p Try searching for "ferret" or "cat".
|
||||
input(type='search')
|
||||
pre
|
||||
script(src='client.js')
|
||||
32
examples/session/index.js
Normal file
32
examples/session/index.js
Normal file
@@ -0,0 +1,32 @@
|
||||
// first:
|
||||
// $ npm install redis
|
||||
// $ redis-server
|
||||
|
||||
var express = require('../..');
|
||||
var session = require('express-session');
|
||||
|
||||
var app = express();
|
||||
|
||||
// Populates req.session
|
||||
app.use(session({
|
||||
resave: false, // don't save session if unmodified
|
||||
saveUninitialized: false, // don't create session until something stored
|
||||
secret: 'keyboard cat'
|
||||
}));
|
||||
|
||||
app.get('/', function(req, res){
|
||||
var body = '';
|
||||
if (req.session.views) {
|
||||
++req.session.views;
|
||||
} else {
|
||||
req.session.views = 1;
|
||||
body += '<p>First time visiting? view this page in several browsers :)</p>';
|
||||
}
|
||||
res.send(body + '<p>viewed <strong>' + req.session.views + '</strong> times.</p>');
|
||||
});
|
||||
|
||||
/* istanbul ignore next */
|
||||
if (!module.parent) {
|
||||
app.listen(3000);
|
||||
console.log('Express started on port 3000');
|
||||
}
|
||||
37
examples/session/redis.js
Normal file
37
examples/session/redis.js
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var logger = require('morgan');
|
||||
var session = require('express-session');
|
||||
|
||||
// pass the express to the connect redis module
|
||||
// allowing it to inherit from session.Store
|
||||
var RedisStore = require('connect-redis')(session);
|
||||
|
||||
var app = express();
|
||||
|
||||
app.use(logger('dev'));
|
||||
|
||||
// Populates req.session
|
||||
app.use(session({
|
||||
resave: false, // don't save session if unmodified
|
||||
saveUninitialized: false, // don't create session until something stored
|
||||
secret: 'keyboard cat',
|
||||
store: new RedisStore
|
||||
}));
|
||||
|
||||
app.get('/', function(req, res){
|
||||
var body = '';
|
||||
if (req.session.views) {
|
||||
++req.session.views;
|
||||
} else {
|
||||
req.session.views = 1;
|
||||
body += '<p>First time visiting? view this page in several browsers :)</p>';
|
||||
}
|
||||
res.send(body + '<p>viewed <strong>' + req.session.views + '</strong> times.</p>');
|
||||
});
|
||||
|
||||
app.listen(3000);
|
||||
console.log('Express app started on port 3000');
|
||||
40
examples/static-files/index.js
Normal file
40
examples/static-files/index.js
Normal file
@@ -0,0 +1,40 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('../..');
|
||||
var logger = require('morgan');
|
||||
var app = express();
|
||||
|
||||
// log requests
|
||||
app.use(logger('dev'));
|
||||
|
||||
// express on its own has no notion
|
||||
// of a "file". The express.static()
|
||||
// middleware checks for a file matching
|
||||
// the `req.path` within the directory
|
||||
// that you pass it. In this case "GET /js/app.js"
|
||||
// will look for "./public/js/app.js".
|
||||
|
||||
app.use(express.static(__dirname + '/public'));
|
||||
|
||||
// if you wanted to "prefix" you may use
|
||||
// the mounting feature of Connect, for example
|
||||
// "GET /static/js/app.js" instead of "GET /js/app.js".
|
||||
// The mount-path "/static" is simply removed before
|
||||
// passing control to the express.static() middleware,
|
||||
// thus it serves the file correctly by ignoring "/static"
|
||||
app.use('/static', express.static(__dirname + '/public'));
|
||||
|
||||
// if for some reason you want to serve files from
|
||||
// several directories, you can use express.static()
|
||||
// multiple times! Here we're passing "./public/css",
|
||||
// this will allow "GET /style.css" instead of "GET /css/style.css":
|
||||
app.use(express.static(__dirname + '/public/css'));
|
||||
|
||||
app.listen(3000);
|
||||
console.log('listening on port 3000');
|
||||
console.log('try:');
|
||||
console.log(' GET /hello.txt');
|
||||
console.log(' GET /js/app.js');
|
||||
console.log(' GET /css/style.css');
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user