Skip to content

Instantly share code, notes, and snippets.

@sanuj
Last active August 29, 2015 14:17
Show Gist options
  • Save sanuj/52b214f234d3a6ae8355 to your computer and use it in GitHub Desktop.
Save sanuj/52b214f234d3a6ae8355 to your computer and use it in GitHub Desktop.
Example on regression using python.
You are provided with 2 different data-sets- TrainingSet.mat and TestSet.mat. In this
task, you are required to build a regression function and evaluate its performance on the
testing set.
(i) Learn the weights of a polynomial regressor by adopting a three-fold cross validation
strategy on the data-set TrainingSet.mat. You may consider orders of polynomial
between one to nine . Accordingly, select the order of polynomial(M ) that gives the
lowest average error.
(ii) Using the order(M ) obtained from (i), test the regression function on the Test-
Set.mat and calculate the mean square error.
import numpy as np;
import matplotlib.pyplot as plt;
import scipy.io;
mat_file = scipy.io.loadmat('TrainingSet.mat');
train_x = mat_file['train_x'][0];
train_y = mat_file['train_y'][0];
plt.plot(train_x, train_y, 'ro');
# function to calculate weights
def func_weights(arg_phi, arg_t):
arg_phi_t = np.matrix.transpose(arg_phi);
temp = np.dot(arg_phi_t, arg_phi);
temp = np.linalg.pinv(temp);
temp = np.dot(temp, arg_phi_t);
return np.dot(temp, arg_t);
# function to calculate Root Mean Square Error
def func_error(arg_weights, arg_phi, arg_t):
y = np.dot(arg_phi, arg_weights);
y = y-arg_t;
ans = 0;
for i in y:
ans += i*i;
ans /= arg_t.size;
return ans**0.5;
# used to run multiple iterations of main() function to get frequencies
# of order at which minimum order is attained.
def find_freq():
freq = np.zeros(10);
for i in range(500):
freq[main()] += 1;
print freq;
# function to calculate Mean Square Error on test data
def error_on_test(arg_weights):
mat_file = scipy.io.loadmat('TestSet.mat');
test_x = mat_file['xtest'][0];
test_y = mat_file['ytest'][0];
y = np.zeros(test_x.size);
for i in range(test_x.size):
y = 0;
for j in range(arg_weights.size):
y += arg_weights[0][j]*(test_x[i]**j);
y = y-test_y;
ans=0;
for i in y:
ans += i*i;
ans /= test_x.size;
print "Mean Square Error on test data is : " + str(ans);
# main function.
def main():
# randomly split the training data into 3 parts.
index = np.arange(train_x.size-1);
np.random.shuffle(index);
index = np.split(index, 3);
error = np.zeros((3, 10));
for i in range(3):
for order in range(10):
phi = np.zeros((2*index[i].size, order+1));
for j in range(200):
for k in range(order+1):
phi[j][k] = train_x[index[i][j]]**k;
for j in range(200, 400):
for k in range(order+1):
phi[j][k] = train_x[index[(i+1)%3][j-200]]**k;
phi = np.zeros((index[i].size, order+1));
for j in range(200):
for k in range(order+1):
phi[j][k] = train_x[index[(i+2)%3][j]]**k;
t = np.zeros((index[0].size, 1));
for j in range(200):
t[j][0] = train_y[index[i][j]];
weights = func_weights(phi, t);
error[i][order] = func_error(weights, phi, t);
if i == 0 and order == 6:
weights_1 = np.matrix.transpose(weights);
elif i == 1 and order == 6:
weights_2 = np.matrix.transpose(weights);
elif i == 2 and order == 6:
weights_3 = np.matrix.transpose(weights);
avg_weights = (weights_1+weights_2+weights_3)/3;
print "Weights for a 6 degree polynomial: " + str(avg_weights);
avg_error = np.zeros(10);
for i in range(10):
avg_error[i] = (error[0][i]+error[1][i]+error[2][i])/3;
# print avg_error;
min_error_order = np.argmin(avg_error);
# print "Minimum error is achieved for order: " + str(min_error_order);
## Finding Mean Square Error on test data.
error_on_test(avg_weights);
## Plotting the data points and regression function using training data.
poly = np.zeros(train_x.size);
for i in range(train_x.size):
poly[i] = 0;
for j in range(avg_weights.size):
poly[i] += avg_weights[0][j]*(train_x[i]**j);
plt.plot(train_x, poly);
plt.show();
return min_error_order;
if __name__ == "__main__":
main();
#find_freq();
4d41 544c 4142 2035 2e30 204d 4154 2d66
696c 652c 2050 6c61 7466 6f72 6d3a 2050
4357 494e 2c20 4372 6561 7465 6420 6f6e
3a20 4672 6920 4665 6220 3036 2031 383a
3534 3a34 3120 3230 3135 2020 2020 2020
2020 2020 2020 2020 2020 2020 2020 2020
2020 2020 2020 2020 2020 2020 2020 2020
2020 2020 0000 0000 0000 0000 0001 494d
0f00 0000 9902 0000 789c 3593 3f6c d340
14c6 9d34 ce1f 8726 4ee2 3889 1ddb 6b99
99c3 bd0d d632 77a5 ac41 74a8 cadc 1906
1618 5860 eed4 a173 0a12 432b d1a9 0b42
8980 22a5 452a 5582 501a 15ec bb5f 4f89
2eb6 def7 7dbf f7ee 52b3 2c6b bb68 59e9
c72a 5b66 cf96 cd73 2efd 7e62 cfde 6d6f
3d7e b695 ee95 f42b 69f1 736f efc1 64e7
953a 8877 cfd7 0fde 2af3 bcaf eee9 75c8
f307 7538 5fdb 7831 faa8 9e0e 9cd3 77c3
6365 523e ab87 939d b4e2 445d ac67 0e27
ea6e 5a35 5ffb a2da 99cc fb4a dd58 bd1f
66c2 b1fa 93d9 ccc7 eacd eb6c 4dd0 4dc8
fb46 de77 727e e073 a69e 6c66 eb4c 656f
07ce 4f75 5fff 98aa 97a3 0c6c aa34 c664
8acf b93a 3eca d605 3ebf e0b8 548f 74a3
97f4 f31b ff2b fabf a26e 46dd 0cee 197e
b7ef ffa2 5bc0 b580 6301 c702 ce6b a5b7
d36b e6b2 a4bf 25be 4be6 b144 7f83 fe06
fd3f 722c c9e8 e2dd 9ce8 c7bd 9c18 8ebc
18bf bc18 febc 187d 5ecc 7c57 c4cc 7785
fa82 18de 8298 fc02 ba82 983c 5bcc 79da
62e6 6693 6b8b 9997 2da6 1f1b 5f1b bf22
1c45 fc8a 9268 6109 9f12 3e25 b84a f895
c4f4 5746 5716 33e7 b298 73ac c053 81d7
a1ce a1ce a15f 07fe 2ab9 55f2 aae4 55e1
bbc3 fb55 f257 c59c 4b8d f9d4 c8ab c35d
67de 75fa ae8b b6f1 5cd1 18b1 0ba7 8bce
153d 8e4d 175e 179d 2be6 9c5d f40d 381a
62ce bd21 7a1b 35e8 a741 5d53 b4cd b009
7f13 5d13 ffa6 98ff 418b ba16 7e2d d1e3
396a 91df c2b7 05b7 47df 9ee8 6dc3 43ef
91e3 91e3 316f 0fbd c7b9 7b62 fe27 6dea
daf0 b4e1 f6c9 f1e1 f399 8fcf 7c7c f27c
f43e 393e 73f0 c9f1 f1eb e0d7 c1af 834f
077d 87f9 76f0 e9e2 d3e5 7d17 de1e 7df7
d0f7 a8ef 717f 0238 03e6 12c0 19d0 5fc0
bd0b 9847 802e c437 e43e 8470 86dc ab10
9f90 be42 b86e 757d eafa e4f4 b977 7dea
faa2 e583 08be 88fa 887b 1a51 1fd1 4f44
ff11 e71f 911b c117 e313 73de 3173 8ce1
49f0 4de0 49e8 3bc1 2fc1 2f91 ff80 4eae
3f0f 0000 0062 0600 0078 9c2d 937b 3894
091b c6df 6245 bb4e 5915 6aac 9d0e bb52
0eb5 b642 cf68 49f9 1c12 592d 49df 7e15
aec8 3aad e336 11d1 2745 4592 1509 bb5b
6c88 1579 1065 5086 59a7 7248 46e3 dc60
8c39 bdf3 aebd 769f ebbe afdf f5dc d7f3
cffd c7a3 4610 4484 1241 2c8b 5026 fee1
dff3 d1bf fb8a 65b7 fccb bfb3 c8d0 5321
a1cb 5459 3663 f958 67e9 8cbb 7e14 1b34
ddbe 12f3 747a e179 e9fe 8a3e 9b59 78bc
bde2 820a 4b0c 1d1e 2143 9c01 31b4 cd33
82d4 cda4 90f6 ba67 cb8d 4f09 465d ae9d
7591 2dc1 68f7 d83d 8e07 2878 dec2 d3d7
7b46 4165 afa0 a7fc 8b31 888c a198 5a39
7db0 fad4 8ec1 a386 79f8 665d c5e0 dd1f
ba70 2f18 4dbd 66f4 a275 5271 2bed 3d17
cf24 691d ded8 3c86 a50b d298 6fae cfe3
a5b5 4738 dfd7 88d0 a6ad 3257 5541 86f9
e2e4 2885 1912 1f78 0d5f 58fa 8ec4 7b7b
9e54 6590 722c e82a 725b 5d22 c706 a1f1
44f7 0b09 de4c 3847 e72b c9f0 d78c d59e
3981 121c 7934 b4c7 b67c 1ed3 afa4 7965
bf9b c6b2 f347 84b6 fc48 48de a463 ab98
c406 9185 3bd1 744d 002f 8f56 d2cf 4608
2196 5632 d6dd 2c85 c9de 5dbe 125d 8231
11b3 72f2 1333 82e1 56aa f3dd e869 0a72
d259 bf75 d1e4 70f9 66b0 1eb3 9885 e1e6
3b13 4df6 2de1 b3b5 366f 3cd6 48d0 8656
e089 9b64 b8ee 6dc1 37f2 7412 cd2c 5765
4290 1cdf ba7f 39ee 1948 d4cf c69b 6632
0514 9eb5 f8b6 2e60 3751 5fe9 7c46 ad96
23c7 6dfd afce df5a eec7 4c93 2b8b 047c
8cf6 198e fcb1 7f1c e967 15ca ae06 bf47
efb0 b086 006e 2ba4 aa72 cf2d aac9 a1a6
0c1b 27bc 49d0 1e74 f388 9752 9029 6b2d
7ced 4242 b1cd b5d0 932c 09d8 3855 c6e5
e68b 417f 47d8 0db3 6ba3 d037 1f66 6c5e
f714 0e0c 2c7c 980e 18c2 d0e6 0eba f8fc
286a 8cc1 b7ce eb67 708a deda 3930 3d87
114d 59ea 76ca 42dc 39f8 d854 235f 8205
746b 9eb6 af14 5f1e 0a32 f7f6 9363 d0be
1343 6e53 143e 6dd6 b999 7795 a8bf 22d9
3f75 7a15 85bf 1bc6 062c 7693 38f7 4751
eeef 6924 e679 e738 2cd4 4870 47d7 67a7
267c 16d1 8a5c e3fb 5bf4 04ae df89 835f
468f a362 e98a c7ec ff72 d17b 97b1 57a0
751f fea9 f7a8 35f1 4323 e8dc 9c3e 97a8
c607 f6a1 dc20 a1d1 3c1c 18e9 355e 5924
025b 0dad cd33 b324 e8ae 9df2 5fb9 4706
769d ace0 8151 19bc 705f 7ddc c953 0249
763c 7be5 3011 24b0 aed0 af4b 85e0 77a9
247f 4c65 11fc 127c 0daa bb78 20d3 daef
5ad3 f00e c4ca d913 3e07 a7f1 60ed 5a93
ed42 125d 9b94 a63c 5b28 e42b 4dde 2e29
a2d0 a7ba ff6e c611 391a 8515 659c 48e7
6372 b8bf 1127 690a dbeb b233 ceab 0da2
e3f6 e751 e94d 9df8 79d6 c526 7a5a 271c
cf4d 19aa 96f4 40ab a130 d1d7 f51d 8484
1b04 4c08 26a1 ec7d ed0e ddc9 7978 d1b8
e97e 9693 0c98 c563 010f cd28 f8dc 19a2
d839 1438 6e39 5cac 514b 30ac 7b0f 5dcb
8545 0828 d72b 888f 11c0 3143 c6c6 f5b3
3ce8 698b 33e4 acef 02f6 06d5 fc94 2d1c
74b0 721d 692b 15e0 450e 5773 c171 11dd
b687 f673 4921 a612 5f9f 9ce3 4b30 d75f
ff49 558e 1c9d 7a3e cbf4 4711 2e74 1ce1
1dd5 58c0 278d e3d2 e999 519c 5afc bf96
83e3 3086 fcf4 d3ab b9e1 1e6c 34ad 7209
8eed 8713 376e 3fb9 ffd1 306c de66 519b
7d79 0e9c 3d23 ee18 a5cc 435a 7484 71a8
c312 b41e add8 18c7 5b82 a887 8f2a ec75
49d8 451c 8baa 31a1 40f3 078d 03e1 7a04
23af d6fa 45c0 7182 41b4 5b6d 508c 15c2
c399 2883 ef43 e7e0 92c5 5df9 ad21 d6f2
2b8c b773 2ff6 21ed d8c8 d3f2 ee31 7c77
8ba7 7aa1 7f12 b599 fd8d 0a81 f318 56d3
a597 da21 c0ba 576d 71a4 db12 2e18 49b7
5236 2426 951a adbb f340 8685 89f6 2357
1589 7ad5 8ae3 fbac 3ae5 a816 5ed8 c0f1
a370 771e b7ea 1755 1295 5c7c 6ed3 d649
d0d2 f47d 4279 a410 030b 456c 938c 2674
63f8 d30c 6ce5 b014 716c f87a 2509 e7e2
1d5b 4a44 72d8 9a6b 1a79 d080 027d 3bb0
48a1 e440 7036 3d1b 5825 8683 8a0d 3585
ca93 50fd 46ef 8efa afd5 48c3 0af8 3465
1cb7 9274 25e5 357c 7ced d29e f08b ca22
ca5d adaa 1e9c 96e2 98d2 7fee ef5d 41a1
4dbb d060 9f25 8525 4695 9b53 e388 fa55
2e82 ac4f 4229 a445 72f8 5e2f 497c 6828
b2d8 4623 f169 46d5 8d64 3f29 9e89 54f6
7fb0 4584 a2cb d78b 6535 ed68 e951 76a8
b1f3 39da 33c4 9d0a 0503 70cf 2d8a a3f2
f10c a82b 67ff bca1 5b02 0eaf d8cc 9fef
91a0 d99d 52ed e14c 3006 ac38 b3de fa32
6043 0cc9 ca20 e142 4bce 6edd 1829 0c75
7bf2 f7c7 2ff7 50d7 bb63 5ecc 871f 8581
6db1 1f66 c0fd 707c 886f d618 f872 be1a
326d 7e0b 7142 99b5 5774 3b98 5579 2972
0ab8 58e9 eff5 b589 fd14 6a2b fadf ea2f
5b42 f394 2b49 4196 22dc 20e8 d9cb f91f
85f7 628c 5d93 83c5 180a 838c 9dcc 39f4
f163 314f 3af1 504a cca6 fad5 0f62 5a50
a68b b666 07fe 05e5 c676 d7
4d41 544c 4142 2035 2e30 204d 4154 2d66
696c 652c 2050 6c61 7466 6f72 6d3a 2050
4357 494e 2c20 4372 6561 7465 6420 6f6e
3a20 4672 6920 4665 6220 3036 2031 383a
3534 3a34 3120 3230 3135 2020 2020 2020
2020 2020 2020 2020 2020 2020 2020 2020
2020 2020 2020 2020 2020 2020 2020 2020
2020 2020 0000 0000 0000 0000 0001 494d
0f00 0000 fc05 0000 789c 3dd6 4d8c 1b77
1907 607f ec7a 6daf edf5 cc78 3c33 f678
a647 3873 6e67 6e70 2d37 a448 884b 1117
1410 0754 aef4 5cae e5da 5e7a 89c4 8922
2144 c381 8202 4294 b2a5 7c36 6d69 a2a4
c96e 36fb d564 b3ac 3d4f 1969 e54d 76e6
ff7b dedf eb38 3b69 5d5d 51ab d5bb 7ae9
b79a d7f5 b5ed cfed abaf 6f74 9ad7 9dab
af1f 7cff 5bdf f9ee 377f d81a 5c7d ff4e
d8fa fff5 a3d9 8daf 7ef8 f28f abe6 f58d
eaa7 afad af37 abb7 8a57 eebd f8d6 8dea
fe8b ebef 7e56 0df7 5fbf fefc f0e7 7efe
8bea cbd7 5ebd 79fc a55f baef 57d5 1b57
3fdd 7ffd d7ee 7fdb fdbf adbe beb9 e11d
cffd aefa f0e5 75d0 ef3d 7fcb f37f f4fc
9faa f5df 5e7b f5cf d557 36d7 bbd5 e698
fd77 f9fe 5295 ebdb 8bf7 aadf ac6f bbf9
5ef5 ed97 d6d7 5fe5 ed57 ebbb 6637 f6e5
be5f 9dac 6f3b 7e5f fedf aa17 3637 7ec0
f141 b539 ee95 bf57 7fb8 b5be fe51 7d6f
cdb8 fe4f ae7f 551b e6b5 7f3b ef3f d5d7
9a07 9d73 9bf7 b6f3 6e3b ef23 ee8f ccf9
b1f3 3fe6 ff84 ff13 39ff 95f3 29ff a755
b39d 3b72 efe8 e78e 79ee 70dc 35d7 5dbd
df95 7f4f fe3d f9f7 f577 5ffe 67f2 3fab
e24d e003 3d3e e079 a0cf 875c 0fb9 1e3a
efc0 7907 5c07 e63b e03b 9073 c879 a8d7
43de 43de 433d 3e92 ff48 9f8f f4f9 88e3
c8fb e188 e7c8 9c47 5c47 e63d e27b ccf7
98e7 31cf 31cf 31cf 31cf b13e 8eb9 8ef5
72c2 77c2 77c2 77a2 a713 ce13 ce53 ce53
ce53 ce53 ce53 ce53 fb3d e33d e33d d3e7
993e cff8 cff8 cff9 cff9 cff9 cff9 cff9
cfb9 3fe7 fc9c eb09 d713 ae27 5c4f 789e
7abf 3d95 ff54 ee85 dc0b b917 722f e45e
c8bd d0db 33f9 cff4 f68c e319 c725 c725
c725 c7a5 7e2e 795a 75d3 4fab 6ece 6bd5
8daf 556f 8e7d a955 37bd b5ea 662f adba
e9af 5537 79ad ba99 a355 377b 6ad5 4d9f
adba d957 bb6e e66b d78d ab5d 3773 b6eb
c6d7 ae9b 79db 7533 6fbb 6ee6 6dd7 8db3
5d37 73b7 eb86 dba9 9bf9 3bdc 1dee 4edd
f4d0 e1ec 7076 f83a 5c1d ae2e 5797 abcb
d5e5 ea72 75eb a6bf 6edd f4d7 e5eb f275
b9b6 b8b6 b8b6 b8b6 f4b7 c5b5 c5b3 a5af
2dae 2d9e 6d9e 6d8e 6dbd 6ccb df96 d793
d793 d793 d7b3 bf9e bc9e 1e7a 727b 727b
727b fad8 91bb a387 1df9 3b72 77cc bb63
1f3b 1c7d f97d f97d f97d fbe8 9bbf 5fff
64e3 e9f3 f439 fa1c 7d8e 811e 06f2 07f6
30b0 8781 3e06 5c03 fb18 f00d f806 7c43
3d0d 3987 9c43 ce21 e790 73c8 39e4 1aea
6557 2fbb 5cbb 5cbb 1cbb 1cbb 1cbb 1cbb
1c23 8e11 c788 63c4 31e2 18c9 1fe9 69e4
dfd9 c8fe 467a 1bf1 8df4 36d6 db98 77cc
3be6 1df3 8ef5 37e6 1ef3 8e79 c7bc 13de
09e7 846f a2a7 09e7 8473 c239 e19c 704e
3827 9c7b 9c7b 9c7b 7c7b f6bb c7b7 a7cf
3dae 3dae a973 a67a 9cf2 4df5 3875 deb4
deb0 ae4f 79a7 ce9f 724f e54c f530 e59f
d69b 1fdf 9cd6 9b31 6e4d cd31 e598 7204
1c41 bd79 ac08 7802 7305 5c81 3d04 7c01
5fe0 f335 e00c 3803 ae40 af01 5fc0 1770
05f6 1670 057a 0ef8 42be 902f e40b f942
be90 2fe4 0bf9 42be 505f 2157 c813 f284
fa0a b942 ae50 6f21 5fc8 17f2 457c 51bd
197b 1671 469c 1167 c417 f145 7c11 5fa4
b7c8 7e23 ce48 7f11 6fc4 1bf1 465c 1157
c435 e39a 71cd 3866 fa9a f1cc 7866 1c33
3dcd e4cf e4cf e4cf e4ce f434 d3d3 4cfe
17b9 b1dc 581f b13e 628e 9823 e688 3962
bdc4 3cb1 f755 ac9f 982f e68b b962 bdc4
7c31 5fcc 17db 63ac af98 37d6 d79c 7bce
39e7 9c73 cdb9 e61c 738e 39c7 5c4f 739e
b9fc b9fc b9fc b9dc b9dc 446e 2237 919b
e825 919f c84f f491 7024 1c09 47c2 9170
247a 49f4 92f8 5c4b b812 ae44 2f09 57ca
95da 63ea f32e e54c 3953 7b4c 7953 de94
37b5 c794 3be5 4ebd cf53 ffbf a7fc 297f
ca9f f2a6 bc29 6fca fb85 33e3 cc38 33be
8c2f e3cb f832 be8c 2be3 cab8 32ae 8c2b
e3ca b832 7d66 7c19 5fc6 97f1 65f6 9de9
75c1 b9e0 5ce8 73c1 bbe0 5d70 2ef4 b7e0
5bf0 2df8 167c 0bae 857d 2ff8 165c 0b9e
05cf 8267 c9b3 e459 ea69 a99f a5fc a5fc
a5fc a5fc a5fc a57e 961c 4b8e 25c7 524f
4b9e a59e 961c b93d e63c 394f ae97 bcde
ace9 f99c 2fe7 cbf9 72bf 17e4 9c39 67ce
9973 e65c 3957 ce95 73e5 5cb9 be72 be15
df8a 6fc5 b7b2 bf15 e78a 6bc5 b5e2 59f1
ac78 563c 2bbd ad38 56f2 57f6 b492 5fc8
2fe4 17f2 0bf9 857e 0aef 9b82 a3e0 28f4
53c8 2fe4 17f2 0b7b 2bf4 53f8 bda5 e02a
f453 f015 fa29 380b ce92 b3e4 2c39 4bfd
949c a53d 96bc 256f c95b eaad d45b c95d
7297 bc25 6fc9 5bf2 955c 25d7 73f5 ff00
cdae f9e2 0f00 0000 4f12 0000 789c 2d96
7738 d50f f4c7 2f49 48a5 8ccc 68a0 69b5
d3f7 7b6e 64a5 8442 56d2 b02a a950 d290
3292 4a92 9528 2292 f9b5 ca38 1a46 8490
4243 66b6 7b5d d7dd 9fcf cfef f9fd cef3
9ce7 7dce 7fe7 8ff3 bc5f efc5 94b9 92a6
5044 e744 8cf2 7ffa bf35 ffff 77a1 b9b6
17fe 3f5d 30d7 be17 5c3d bd5d 0228 e273
73fd 320a a55b 2335 356b 6b02 321e dfce
cf89 44d8 e97f e2f3 f61f 3d10 65d0 36ee
ead0 0f7e b1b5 f743 4e0e 027d 9bfc 3f09
5693 20d5 d598 28b8 4c87 d682 ac97 fb16
3120 cd90 f1b1 af73 06ee e6a4 8685 4acf
82dd 92a6 8b0e 052c 58d3 e936 7562 960d
5967 032d 4adf f3e1 c02e b5b7 5df3 4828
89cf dbf2 4191 0499 e9fa 17ca 8e24 ac74
0891 1a09 2121 cc66 11f5 c822 0af5 e4bf
b1b5 b216 04e8 b55e f7de 9c49 80f8 de76
ea50 0601 ec5d a727 2d6b 0938 2874 54f7
d37e 3e28 55ec 500d 9310 8054 0dd9 743b
8007 87b3 3d3a d715 72a0 5f68 931b f51a
1b9c ff5b 117d 3191 0986 46e9 092a 91b3
9051 d399 4d8d 61c2 f8b9 f08b 5a81 0cd0
e647 1f71 de43 039a e9e2 2a45 8949 a811
108d c905 2320 9534 b652 aca0 0f0a 2627
93f6 14f5 c2e5 bbd3 370c 4f36 8158 70a6
42cf e13a 48e5 1119 e94a 45f8 faac 6950
b7cf 2f1c 260d 220b 6004 1b56 5bde 8aa8
9dc0 6f67 eaa0 e80e 1db3 6f78 05c6 ef65
a0d2 6bca bd4d 634c 1ced f795 d10c 64a3
4f64 2fef c82b 2e2e 88bf 7544 df9b 8bf7
2f17 331b 7508 d4b8 a6fc 4fe0 7102 4b5f
a468 2607 53aa 8798 910b 6ab6 51aa 155d
ae6c 17d6 2091 667d e64c 7808 8986 51dc
6d59 5d24 ce93 0d75 0861 1278 fad8 bda6
0339 047a 76bd 9d88 3225 11b4 2e8a ac91
2730 3a98 e88d 3263 e325 11a7 8536 2c16
4e16 5566 527f 3191 119f 5da7 c09f c181
65ae 13a5 7a74 2c63 acf9 3598 358e 2bb4
bb0e 67e4 0fe2 8797 778b fc97 0fe0 928d
b416 9ee0 07b6 c0f7 3085 a94e 7c3f 2be3
6d79 b606 53ff 7d5f 79ef 5c35 1eab a4dd
e514 be82 23e2 66d4 3772 1d70 6989 9b79
b050 2fcc 5e53 2bdc 35d0 0f5f ddd9 4cd5
9221 480f 106a 36fc 3401 a21d 0d76 766e
93f0 fc46 c95e e7db 3470 9e1f 5b9f 5b3c
0df6 dfc4 227d 2c98 a0a4 f667 8370 080b
364c 9099 bb1a 39d0 dbda 3cb9 df96 0b5a
c1ad 9798 5a02 38b5 c54c ec76 2201 9129
769a f527 4970 379e f7f2 159d 8034 53df
816a 3a09 c3ef dc17 2798 11e0 24fa d3a8
6f1d 851a b838 cde6 5706 09a3 57da 9fa5
bc26 40ec 6fc5 a157 fbf8 f09e 1dd3 1b10
2a80 2ac9 eb79 412a 7c18 9937 1356 348f
0b85 011b f3ab de70 c03d eb51 a77f 3a1b
ce78 1551 93b6 b2a0 c8dc 27b5 2e7a 161c
574b 91fd 7c06 f84c cd48 c857 3020 3fed
6fdb e97e 3ac0 bc67 fed7 ce4d 80eb 70b1
b7af e518 483b 8caf 9f0d fe0b 9cad d792
66ae f7c1 3af5 853e d743 7aa0 5947 c459
d4fa 3b78 487e 98af 6156 0799 afeb 6d22
269a c148 fdd0 1aeb e468 1862 ad78 76fb
3ce2 c1ba 80ec fb6b 7ee3 95f8 98bb f23d
5d98 d392 e8e9 f276 18f5 9be2 97d7 f50c
e352 9fea 483d ea18 aec8 8cd9 2133 4243
4bd1 5b57 272a e9d8 92fb dff5 2b65 7474
d68c 2ebf 6a35 8399 c788 1a22 8289 0669
4ae9 b7a5 d878 f0fb b52f e2e7 79b8 7265
80c8 bf25 24aa aa24 bd30 d721 51cb 3717
b677 0bf0 126f e6fd 640e 899b 6a57 2e28
d5a2 546f 3f57 da18 6c4c e28d 9c2e 1c58
ca47 3fe3 e7b6 41d3 7cf4 7edc 14ab 6ecf
470d 39c6 5044 3b0f abf2 c6bc 5cbc 38e8
d9df 20f1 de88 8dfb cecb 35de 0e66 a1e3
ba16 8bbb 094c ec8b 3268 ac69 9841 53a6
7246 f86e 06e6 6b7f 19b7 1fa0 e139 870b
71c6 0707 30e1 e01d cf01 bd5e d49c 3741
6da4 7d43 ae84 fe84 8cc2 7b54 5f61 b0c7
76b0 1c7b 7a36 ab0a 97e6 62ab e2fb 1877
dd46 50fb 3aaf 546f 5307 28bc 730f dd29
d403 6f02 721d 9e6f eb07 91f0 4d7b 6e2e
fc0b 35c2 b922 97d7 8f42 d0da e3c6 add9
e310 6210 d273 2a84 0e76 1b93 1c43 9630
e0f4 645d 6c95 c80c 1414 1f5d 6df3 7416
549d 7475 fd5d 39d0 469f ecb9 f180 0d8a
62d1 467d 636c 288d 0b94 3d48 e5c1 c332
ffc4 b67f 0570 e1ca 0f6d 9b5d 048c f468
ae57 3727 2034 d635 897e 9b42 b571 2944
896f 24f8 f885 3cf5 7d42 82e5 6cd1 cb05
d214 6a59 c8cf 25fa fe14 ea56 f671 7bb5
0212 8684 ec3d c952 12fe 3cf6 dd73 2b4e
00c3 3a3f d214 c7f9 d07c c4e1 c99e 0c3e
b405 eba9 87fd 6643 ae86 79e4 58f5 2c9c
4e78 5066 1bc2 84f9 b965 7ab6 4e4c 684e
3fb2 9cf5 9801 75d9 adb6 8e36 74a8 59a7
72c0 be65 1284 57e4 4c1d be3e 0c06 a915
2bca 0f0e c1a9 06a1 fccc 911e 183a 4c30
c33b 3be1 9ce9 b17b 39e5 2df0 29c0 b59d
6361 0ec7 f7a6 f9be de50 8bff 790f b596
defa 822f a577 b835 29fd c0bc 15ef 5f96
668e e083 0043 f39c 95e3 28ea 155a d7ec
41c7 68cd e66d 157d 0c14 b974 7aab 2d73
1645 66fd 440f 0017 7745 1a28 de59 c741
2923 79cd a91c 1ece 733d 5fd2 a54a a06a
e32d dd13 6224 ae79 e4b8 7e34 85c4 e397
14b6 3f0b 2631 4444 d22d ba8f c0ed b18f
bd5a 9f93 b824 64ef b1eb c504 c6fc d2f3
f9f1 8587 0bba e3b8 67a4 04e8 fdd9 ff79
6411 178b 17b5 697c cfe0 6075 8646 d776
2136 4afc b279 6d6b c7c4 a437 1f7f 390f
d1d1 7a8d 9e67 3483 86ab 546a dbe2 6468
6873 20af 5ced cb6f 3c53 6c3f 3be2 5883
b7a7 b79c 5b15 f501 13c5 cbff b203 0b61
fd46 2317 9bf7 ade0 eca2 def7 e8f7 37f8
2ea2 6e16 d9d2 0bc5 21d3 d1ff 2a0d c00f
eae0 b1f8 9abf e0ae 7c8c d5e0 390a 3be1
641a 6503 0d6a 1e09 3dba 3731 03ce 9fa6
ec4b 5d66 6187 4e93 9591 260b c42a 7d4e
df55 60c3 8ae4 b6d5 87ce f2e0 67dd 6d1b
f14f 7c60 ea1f f690 d014 c0c5 a0d3 be8f
e308 3074 4eee ebf9 4380 82c5 5f52 5d9c
00c9 0b3b 4586 6f10 a04d 5f10 71ec 3209
496f bad7 a524 51a8 775a e76f ee8d 26a1
7589 ecc5 d58a 146a 8877 b48f 0e97 84bd
bc7c a3e7 3324 dcdc d3ac b35b 9e84 b144
15f3 1a20 a05a e24a 9493 8700 0ebe 6b32
3295 60c1 3c95 9f61 7e2e d320 3625 5312
caa7 41f7 9617 4f93 9c26 e0a6 9599 7c6e
ec28 ac36 3dca 30e1 fd82 f027 3b0b ca12
bec2 cb55 ea26 0777 b7c2 37db 8c3b bc87
9520 e57f d7a1 ef59 216a 3d69 daf9 4eed
2d6e 308b d8fa fa69 0352 a3b5 743f 3bff
4467 996a edb3 577a 91a7 9232 243f 3e80
f601 afdb 9ff0 47b1 5e2f e3d9 9d37 13d8
1799 c46d 5e49 4347 effe c5ab 8ed2 51e5
672b 6b5a 8289 e5c5 37fa 4921 16be 38aa
e670 ee37 0b3f 76f8 c060 320b ab17 969e
36bf c7c1 4de2 afa3 3edf e521 77f9 4491
86b9 0093 cf25 549d 36e6 63bb e241 871b
3624 6ed8 5c54 3abf 80c0 946f 892a 25ae
24a6 6d31 be40 5850 aab7 7e6e 8a7b aa44
a26e 85c4 b247 e694 6a95 9be1 6a21 7d24
8606 d607 a5d7 13a8 7d30 8362 9cc7 472a
bbda fa60 a300 2b3e 8606 c933 b9f8 759e
eab4 4933 1779 d755 2614 e239 b8d2 dbab
66e8 0607 ad78 adbb fe95 9ebb 2b33 e9a7
e595 19fc e4e8 5145 4967 a0b7 adeb 592d
3506 d675 e865 d6fd 9e42 a6ea b267 a71a
07f1 c2f2 c043 c945 fdb8 bac8 d3a3 8cda
857d 15a5 1acb efe5 e2a6 8ac1 fdba 3189
68f5 f0a7 f68e 05d5 d0ed 591d 7ca0 ff27
101f ef59 b394 0761 5e65 c9ba 00e9 4938
b13e 3ca8 bb81 06f7 c41a 5e5e bb3f 03b3
b6bd 1963 fab3 f0da 583f e4e4 2926 b0d7
8ce4 5ea1 b120 b0c4 24d9 4d9a 0b12 3ab1
c777 f7f3 c1ec 7ac5 e6a9 f902 1070 07e6
474b 09e0 79ed c670 fe3f 2464 3f8b 363c
a449 a1fa 1f51 49c3 3773 b9ca d76e e75a
650a f5e1 db8f 9aec 2212 2464 add8 1646
2488 38b5 9bbc 9dfb cbee 2d2d f507 0204
b0af a023 dcb2 4d00 a7ef 7ef9 b43e 9a07
e68b 0d6b 56ea 0b40 44d7 d34a 6684 07e2
2fca 3c5d e678 acf0 eee1 ce92 9f2c f874
ff78 f449 7b36 8418 73af b7b2 a741 6fcd
991b c1af 6840 7969 e1fb dff2 4930 56ac
720b 7a3c 0e63 c992 b3db 7307 81b3 7f4f
ec2d af3f b0f3 c95e c7d1 b13a 6071 1d03
db74 11b2 65ee caa5 0de6 82d4 2933 77cb
9c12 3c7c f5eb 4365 e94e dc52 cbb9 a29b
de8b b72a 5ecf 3eb6 18c4 ba1b eef5 0ba6
86f0 6cdd e79a 7ad6 1832 b52a 7de4 2468
e891 d97b 4472 eb34 1e6f fee1 9d32 4443
ffad ad4b c6dd 5998 1f26 bae9 a20a 07eb
c59e 6d29 6ae6 e388 1a67 f386 3a1e eed3
d179 a7a7 2cc0 7aaa 9ce9 cf2c 1235 7257
c8d4 0951 aa35 63ff 462c 6710 b854 5ffe
861d 83c4 3f0f 4c2b 763c a054 371f 51ca
e2a5 cffd df70 6883 f07e 4a75 f4d1 af2d
afe6 b868 69f0 a0f6 763d 8987 62cc 646c
0d29 d5f5 09ed 8b8d 4308 0c79 d7b8 caec
3e1f ad57 7e56 90ef e461 16b5 71bf f35f
2eb6 3cbb 2de2 f08e 8309 81cc 00a5 2b2c
ecb5 feb5 1fce ce22 f3fb 4816 d6d2 f1ab
754b 71dc 221a 36d3 a843 d756 4da2 7e61
a4c1 8be6 71ac 9f0e 7229 bc38 8cec f6ef
16b4 c436 8cc0 07cf dbb5 2bb0 c146 c024
d73c c3c6 25eb 24c7 bf56 0044 5586 7eb9
d00e 551e fe01 06b5 7f20 4cac f34f e8d7
2128 dc77 ee02 7d8e 839b 243b 0e09 9426
a1fe 89b0 56c4 5506 d833 ce4c 0e59 b160
41de e744 34e6 c299 b881 a309 ad3c 18c9
3478 3b4c e343 4394 769f d898 00f2 d467
653f ab90 80d1 ca39 4b2b 2854 27df e586
4fb5 e7f2 5772 7c74 fe5a 0af5 cda3 56bf
8148 1254 e45b fcf7 aca2 50a7 6bd5 daca
e67c 6ef7 57be 5c97 1c85 aae7 94b1 8a2c
1240 da51 4abb 32c9 87e4 1d06 ee51 535c
182a 393f 2e9e cc05 c9f2 93be 32ae 5c08
15d4 2dae 8964 41ba 6e95 f013 2916 8836
bcd0 4c76 9881 9f87 4fb8 5444 d3e1 85ae
c5a0 e8ee 0928 9c5d 42bb b778 1454 c4f6
ab3e 5f3b 041b 125f ba8f 30fb a152 f955
85ec c93f 70d0 6b97 52f4 a536 c8f8 67e0
843c 510b db72 4f3c fcd6 510e 7e3c a7d4
c752 85b8 fbe8 f2be 7446 32fa 8d78 dc2c
3ddb 8bf2 6ee7 4d16 613f b6a6 30db 5803
1318 1b10 9fa4 b385 8e83 f777 af24 f82c
f4ae 9a7e 2727 e0e0 b6ed 7d99 67ee b170
d952 c92f 2b1d b8e8 6d6a ffca be8a 87e3
0b72 eec8 3910 98ce ddfb b1a5 4280 53d1
a5af 7ce7 78e7 a04a 5826 7892 78d8 647b
ca22 7d12 6563 ceee faae 40a9 fe05 1d8a
de5a 246e 94c8 360e af25 f051 9683 a3cd
023e 6e5f 3a7b e2e3 461e ba19 8f89 0d4a
f2d0 f373 b69b 441d 0b7f 9755 bc9c 4a61
e13b d365 2ea3 3a4c 2cbb 3659 beeb 3b1d
bb83 22f7 156e a061 b250 b7dc 54e7 2466
7a1c 3728 2b1d 43f1 0737 121b 1386 d0af
dbee 12ef ed00 32b3 390c 8fe0 3f28 bf62
b263 9e7b 276a ecb3 5d31 ff6a 2b16 ef57
7bef ee51 0031 414d fa6f 551b 20b8 ec6d
e57c cbf7 6049 c895 2d33 ec02 3723 d597
19ff fd06 ebac 22c7 2c95 5ed8 c108 e0c8
6df9 0bca 8d1e b137 e347 a0fd b0f0 26fd
8949 78a3 3140 3332 a143 62b9 9ce8 fd2d
0cd0 3aee 1fa6 33c4 8485 d65b 475f 4cce
c0f2 ac9d e347 a258 6056 b80c 0cbc b870
081f a505 baf1 e04e 4e77 f699 6e2e 8833
5358 61b6 3cd0 8bef fa20 be93 80b8 fdc2
e1ac 4602 8e3d caf2 cee9 21e0 b5e2 3ad9
8677 24e4 9b7c 53e9 7021 c1e0 8949 949c
3685 aabe fab3 73fb 7212 94eb fa9e 14f4
1310 6eba f94a dd63 3e5c fe7e 8a7d e519
1fde 8c6d 2bcd b8ca 07a9 bd9b a43d 2378
10fd 5b99 a84d 6383 ee03 535c 96c3 02e9
a01b cf77 9bb3 c0d7 b15f faf6 af19 d8fd
22e4 7595 0b03 022d 698e 3296 7428 1239
d523 481c 8564 9d42 fa92 8b63 a0d0 d934
a610 d10f a956 a277 2acf f501 5b72 8a22
fafb 17f4 7d15 dea9 bba7 0d54 94ee f66b
9fae 814d f37f 8b9c 6254 42e1 f35d 7df1
d99f b18b f7c9 aa7a 5b17 9667 9e28 c988
ff83 2f8e 2f6c 69d5 1ac4 e35e 3389 f785
8691 3789 0bd5 faa7 d05c 29ef 6849 2003
93a2 d77f 104c 31f1 7a63 aa0c 75f3 2c3e
92f5 4ff8 1ac3 41bf d53a b481 2e1e 9eff
71a0 cb5c 77ce cff6 59ff da4b 0830 efc5
343b 781d 8161 866a 128d 4e04 9e7c fef3
b9da 3702 5f7d 3864 0fd6 94ea 96c7 a283
2493 c4d5 eac3 193c 1e89 7112 5747 7941
73b9 5f70 a68f 9bca 47b3 fab6 b443 e95c
d4fa 14f4 78f2 0b07 6950 b6ff aada 1cff
fe84 e9a5 fd99 c13f eb65 efcc 0431 f0ac
22bd 7eb3 0903 9b33 2465 8a3f d251 5372
32ea eaae 295c 3bcd f3fa c01f 434b cfcc
7a2f cf11 1cf0 eb3c 2971 6110 df2f 5f6c
5e95 dc85 5cf2 6e97 4669 3b96 5cf8 f9a2
68de 0398 1950 ed0c 49fe 0f12 8715 f253
9fb4 40cb 668a 9feb 9239 2e4a b494 4ef9
0c40 6a78 5c05 376a 18a4 058a edf9 2963
a0f3 7eff d630 7b3a c878 cabc 4cde c780
d06f 8aea 97c5 99c0 ffa7 a239 ef00 13f4
551c 6a75 bfcf c2df 358d c652 ce6c b8cd
8cb3 8a11 e3c1 daf9 673f d4cf f98e 62de
b93d d176 02c8 6717 ac4b e708 20c7 f5a6
c2d3 0812 b607 1e68 df76 9842 8d8a 7533
d68b 2040 6380 beec 198f 80d3 cb17 90f7
0912 5e07 be79 fb5b 8b42 fdba b226 6b61
0501 bee7 ed9c 44d7 0820 35d3 d033 5c89
848c 1861 29cd 412e 1438 c637 7b6d e5c0
fd08 b32e e9b5 b3a0 9c15 bf3e aa83 09f6
3667 3d1f c6cf c29a 13f6 32ab ce4e 434a
9686 b578 3b0d 5272 645d 23c6 fbe1 9aa2
adc5 8fc6 6fe0 332e bba5 7f36 033a acf2
d2ff 997e 087e c92a b257 330a 7013 bfc3
bdfc 6d13 5a69 efdb ec30 fa0d 63b9 2dc2
23fb ba50 d9fd 3c67 a9c5 085e 10a1 1b3b
44d1 f00d cb51 3cff 3e1d cd0c 3c46 3961
74dc e794 bd4a 4c88 89ba 2392 56b6 9f38
58a6 7969 e851 d65c 7e3e 17e7 aa28 c6c3
6f27 8f47 7c5a c4c7 f022 cb53 b517 f898
c935 f169 8be5 638d 61a1 fec7 b91c 7584
ee56 b861 2d81 9e7b 6fae e552 482c 0e3e
4c3b aa42 a94e 7aa6 572a e342 6282 e305
79e9 2a02 0bbd ba5b 397e 043e b47f 7854
db84 526d 3754 cc0e 37a2 5407 ed2e 5b9f
3b45 a092 e180 74dc 1102 9bba 72cb 9ea6
0af0 6ed7 de9b 9501 7c8c 113e 636d e0c1
c155 1b43 7def 3ce2 604e de27 439e df2c
2aa8 fe6b aa60 c2c4 7776 0529 3be8 0cbc
b4ce eff2 c0db 69ac dedc 6137 f37c 0ad5
64ef 3835 978f a389 58f1 79cf f661 dc1b
1cda 15e0 d58d 8eaa 41ae 49b7 3ea2 766b
594d 02fb 3cfc 0fb3 893f 21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment