'From Squeak3.0 of 4 February 2001 [latest update: #3545] on 18 February 2001 at 8:50:43 pm'! "Change Set: MacVMSourceChanges3.0.7JMM Date: 18 February 2001 Author: johnmci@smalltalkconsulting.com Bring mac source code upto 3.0.7"! !InterpreterSupportCode class methodsFor: 'source files' stamp: 'JMM 2/18/2001 20:49'! macArchiveBinaryFile "Answer the binary contents of a StuffIt archive file containing the CodeWarrier project files for the virtual machine. You will need to use a StuffIt unpacking utility such as StuffIt Expander to unpack the file. The result will be a folder containing the project files." "To create the text for this method evaulate: | in out | in _ (FileStream oldFileNamed: 'projectArchive.sit') binary. out _ WriteStream on: (String new: 100000). out nextPutAll: '#('. [in atEnd] whileFalse: [out nextPutAll: in next printString; space]. out skip: -1. out nextPutAll: ')'. in close. Clipboard clipboardText: out contents asText and then do paste into this method." ^ #(83 116 117 102 102 73 116 32 40 99 41 49 57 57 55 45 49 57 57 56 32 65 108 97 100 100 105 110 32 83 121 115 116 101 109 115 44 32 73 110 99 46 44 32 104 116 116 112 58 47 47 119 119 119 46 97 108 97 100 100 105 110 115 121 115 46 99 111 109 47 83 116 117 102 102 73 116 47 13 10 26 0 5 16 0 0 109 103 0 0 0 114 0 10 0 0 0 114 96 160 0 43 0 5 1 96 1 255 0 0 0 0 0 0 165 165 165 165 1 0 0 62 0 16 181 144 51 21 182 158 25 127 0 0 0 0 0 0 11 3 0 0 0 0 0 14 47 50 0 0 37 20 0 0 9 183 0 0 0 0 15 0 109 121 77 97 99 72 101 97 100 101 114 115 46 99 0 1 249 212 84 69 88 84 67 87 73 69 1 0 1 128 1 1 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 1 154 0 0 0 106 0 0 0 0 15 0 66 193 212 138 116 88 41 37 231 118 79 249 86 183 220 130 201 119 237 194 11 107 95 101 129 233 78 237 233 41 2 10 134 65 190 14 57 147 88 117 246 30 129 230 100 86 124 160 181 213 228 113 176 242 110 15 116 236 78 49 113 111 82 137 215 100 243 164 56 26 150 173 165 69 200 187 255 179 112 28 55 170 135 33 198 200 235 206 99 142 62 109 255 116 149 57 0 236 41 186 92 188 174 38 174 192 66 193 212 132 70 70 86 227 229 250 240 216 108 46 2 127 7 118 93 193 98 100 220 19 200 129 89 135 89 82 22 238 49 159 133 108 171 14 212 223 34 215 77 208 114 160 164 237 185 214 129 65 199 201 45 211 163 103 203 58 2 85 140 45 151 178 152 115 9 199 215 95 96 151 105 218 21 183 124 139 66 246 165 122 233 239 249 49 33 230 241 98 152 155 66 5 97 56 210 80 40 74 50 161 38 49 191 246 13 248 37 22 30 82 47 247 193 20 8 253 47 112 160 72 112 53 215 204 3 97 248 96 8 243 221 18 149 108 14 129 125 171 25 125 64 92 146 29 121 208 175 185 114 183 252 116 88 47 20 203 91 54 195 197 212 254 215 49 246 175 214 179 20 62 218 106 240 184 65 250 38 189 140 67 51 74 95 30 3 237 219 189 131 26 139 234 59 182 38 237 228 223 81 228 70 109 151 93 182 102 227 203 12 157 152 107 15 98 148 171 41 204 102 172 62 195 233 155 129 52 241 31 197 124 118 99 45 58 83 248 22 215 210 251 42 253 224 32 223 130 124 29 99 117 213 224 39 13 123 115 248 26 221 26 239 139 238 20 111 20 56 127 75 111 87 227 74 59 31 173 85 118 51 26 21 56 145 199 107 6 134 163 54 13 38 143 9 8 177 101 138 176 126 236 42 83 222 165 174 137 128 18 108 62 172 104 206 82 31 153 2 182 57 73 14 84 208 156 251 177 59 232 160 12 252 203 218 179 103 69 40 108 127 129 76 239 43 241 84 12 202 12 118 247 134 247 28 5 26 17 8 152 197 86 37 168 231 169 178 114 72 86 108 222 32 244 59 133 232 143 193 13 133 147 126 127 149 24 121 2 38 68 52 152 209 111 150 184 27 137 253 238 123 197 0 118 134 239 237 36 138 92 9 194 243 159 213 60 212 20 229 59 28 20 233 18 161 31 106 165 1 110 83 216 106 180 249 207 9 174 17 94 185 168 244 3 4 168 140 63 65 99 190 250 119 64 70 17 171 160 166 169 104 159 33 175 236 14 164 90 174 65 175 124 152 30 15 87 146 118 109 236 131 130 220 219 214 112 125 170 137 231 54 250 21 145 43 231 188 66 60 145 144 78 191 182 237 122 40 55 70 174 38 200 113 225 103 84 13 29 121 130 211 114 223 222 52 197 13 242 137 125 59 249 152 208 14 117 204 232 95 173 10 254 158 64 113 32 71 211 118 10 37 152 22 6 193 1 255 147 16 255 96 95 2 197 244 163 41 80 165 64 231 82 177 26 111 196 195 16 244 124 241 119 42 72 98 152 240 138 13 187 140 50 8 203 25 228 139 176 231 43 188 185 2 244 190 171 127 194 95 139 23 204 75 146 60 62 27 80 38 93 38 145 109 19 117 6 190 225 110 85 211 48 214 67 194 48 118 230 103 121 110 231 193 135 164 195 102 232 253 49 148 47 128 195 236 125 10 219 186 74 154 99 167 196 60 86 195 220 106 181 140 85 69 75 218 24 134 11 31 42 184 151 115 226 63 107 52 127 87 90 27 209 125 49 244 52 72 106 47 168 194 221 133 102 80 172 93 30 180 148 98 219 250 1 131 80 231 16 175 251 155 120 51 58 133 74 44 194 98 69 220 203 116 191 232 6 60 149 104 160 232 101 60 176 56 85 193 184 154 196 187 176 181 220 6 241 108 26 22 183 125 180 240 179 101 192 98 125 237 3 89 114 235 91 209 164 113 1 58 129 69 227 29 19 29 199 223 52 106 86 210 28 98 88 130 229 148 120 16 129 14 17 4 222 44 49 251 34 155 53 1 122 248 192 61 173 28 105 15 199 20 82 30 53 37 81 146 117 100 246 78 108 152 234 93 106 164 44 100 57 126 9 134 155 27 184 21 148 185 94 106 50 113 228 79 94 34 151 21 160 54 33 4 249 230 134 176 70 241 249 85 152 252 212 193 251 181 238 242 57 219 252 62 154 74 65 219 88 115 39 77 236 5 188 230 126 109 127 233 91 10 224 186 224 60 237 252 238 150 54 161 201 94 8 244 145 47 44 217 137 239 234 201 42 8 178 49 89 199 176 56 165 31 101 19 109 234 101 137 162 10 229 183 144 68 242 150 52 133 117 88 173 140 84 230 109 53 133 118 31 127 28 54 7 230 85 169 251 254 192 6 169 172 189 140 22 174 91 19 91 125 223 162 84 237 230 213 183 153 250 131 177 111 6 84 183 247 13 76 39 186 31 198 85 4 65 32 19 1 99 145 201 225 227 243 17 214 185 26 33 101 205 44 160 34 195 147 137 18 207 88 193 239 159 19 49 180 186 110 34 91 81 126 47 101 10 118 12 117 42 111 147 156 94 195 157 204 248 229 229 155 103 232 66 107 220 242 138 252 243 151 217 136 131 173 212 193 219 166 253 173 88 80 220 63 46 109 88 232 90 249 96 67 199 255 136 27 154 43 84 216 241 187 178 227 175 65 114 73 13 15 98 255 39 134 162 119 232 163 16 23 93 129 62 166 157 15 154 27 26 22 115 8 168 226 84 233 64 121 6 75 60 59 127 229 225 29 214 193 226 73 79 102 74 60 56 130 137 229 133 2 50 59 52 230 115 36 203 162 101 18 167 216 183 101 153 45 171 24 125 246 212 22 150 51 149 179 153 191 89 161 218 135 97 19 194 50 34 223 113 101 103 136 83 76 55 48 36 80 56 226 27 48 120 156 42 19 32 20 17 57 39 33 219 123 249 192 127 10 182 75 171 92 189 220 14 220 60 159 227 228 14 241 235 112 90 20 251 157 160 3 36 236 95 173 58 230 127 69 243 123 75 97 113 205 83 246 125 11 125 96 36 176 106 177 61 42 181 20 175 94 167 143 126 251 254 160 166 65 77 62 9 249 97 143 85 228 244 116 212 36 139 27 39 2 205 126 120 142 16 221 171 238 9 71 136 127 183 207 62 15 86 53 15 2 102 101 179 61 141 49 213 40 141 163 67 190 184 255 243 129 31 131 167 254 204 179 48 58 103 182 95 167 251 52 47 18 107 18 137 227 164 93 85 188 234 111 109 2 84 181 250 201 87 56 179 139 122 116 9 72 150 26 201 3 16 131 116 158 40 94 162 107 116 254 167 70 163 135 76 238 186 199 185 34 229 206 216 82 176 11 88 86 57 139 30 2 208 123 57 141 221 171 211 186 142 118 126 139 154 109 57 79 1 35 167 40 44 39 213 242 211 220 168 159 200 169 179 212 88 68 78 200 147 37 40 78 169 30 98 229 242 15 101 5 179 4 239 182 164 66 15 21 205 242 169 118 60 166 24 139 110 88 102 100 95 76 164 156 185 94 78 122 188 84 74 244 3 153 155 54 89 214 52 181 186 49 248 74 61 63 130 1 251 48 92 241 131 25 214 90 146 245 111 208 0 200 130 56 240 165 169 148 206 222 128 170 66 144 165 235 199 35 41 172 79 16 73 84 79 60 126 86 20 84 57 189 173 108 83 108 81 41 110 196 34 198 64 130 167 53 95 252 127 145 160 17 25 107 30 200 4 122 235 171 27 245 83 163 114 251 243 83 92 90 202 225 71 136 233 48 236 166 227 153 9 44 86 152 46 157 33 106 211 38 217 131 189 158 77 118 186 137 83 106 231 38 183 90 52 35 137 96 149 252 106 81 140 59 206 123 111 194 70 128 243 110 236 189 248 13 44 218 175 155 189 61 117 24 11 169 190 120 244 49 97 84 33 238 113 123 121 234 200 117 143 213 164 67 118 136 81 156 181 97 170 195 15 90 84 197 162 128 180 123 146 157 140 166 23 62 191 219 207 52 11 47 102 15 132 239 222 55 33 195 105 219 7 235 139 152 116 60 25 96 195 178 61 14 158 181 173 197 130 3 51 243 102 76 103 143 10 245 92 220 236 141 223 116 227 66 7 57 153 114 238 10 230 232 176 12 175 132 255 205 252 18 152 205 169 191 124 59 188 115 70 80 37 198 61 238 169 19 8 73 36 110 103 133 105 74 11 15 219 222 225 80 37 208 46 80 225 212 115 148 86 235 203 83 7 141 117 136 142 4 23 62 124 10 94 45 49 81 53 68 172 40 141 44 61 248 53 189 171 93 232 151 125 187 242 44 48 78 122 14 155 71 149 26 249 110 4 137 252 232 107 95 133 111 248 39 32 216 250 139 71 199 65 188 109 185 222 173 38 154 41 26 203 164 65 78 224 92 171 208 90 72 55 177 173 76 81 231 243 216 204 118 128 229 102 224 120 76 223 0 232 167 190 139 96 143 251 23 60 117 73 185 52 25 41 30 92 16 109 65 55 254 254 173 95 201 191 193 56 212 8 23 212 173 150 167 92 25 22 96 99 170 165 164 40 36 195 183 62 219 4 67 46 22 63 222 5 189 85 231 135 117 193 81 183 28 185 150 204 45 138 16 29 249 195 34 17 152 49 55 161 150 67 67 238 114 100 72 91 0 22 231 161 15 143 49 222 113 6 12 169 143 119 228 135 153 170 60 177 165 119 120 180 81 178 118 192 182 42 171 188 123 62 224 76 89 178 221 232 21 1 32 55 48 174 83 32 204 196 152 115 160 94 162 76 36 234 130 46 208 158 156 130 16 2 200 63 214 12 68 238 216 11 69 230 210 144 197 49 0 137 72 242 7 201 79 14 15 92 223 226 57 137 113 156 96 94 22 62 239 156 25 246 159 72 150 236 47 148 93 81 82 160 65 193 218 226 5 173 68 149 131 185 38 21 54 28 45 163 133 100 249 71 53 193 81 236 219 46 36 117 122 241 67 70 160 158 137 200 28 140 228 117 216 92 197 139 107 45 76 132 225 120 25 241 135 183 155 93 124 61 178 162 153 124 169 222 88 143 122 87 102 247 47 37 141 255 232 110 183 43 235 205 24 115 77 112 204 130 226 183 244 107 237 88 133 215 112 156 91 244 40 149 126 211 18 61 248 243 242 234 1 67 155 205 165 46 241 183 45 57 192 220 209 108 240 103 75 84 225 56 241 98 50 22 74 38 110 229 178 174 113 149 105 219 99 204 9 187 142 57 11 80 19 222 31 78 163 164 81 225 238 93 139 39 45 77 116 191 122 147 93 63 47 1 43 54 59 33 120 183 197 115 221 125 55 140 107 197 207 252 168 189 93 204 160 15 6 92 87 21 69 13 171 60 68 240 229 169 136 185 10 16 114 157 62 4 62 98 10 25 57 208 210 238 206 221 244 23 46 24 203 6 182 53 192 196 161 244 15 113 51 114 84 111 207 79 49 240 83 61 153 132 114 177 48 194 95 237 67 44 187 237 135 159 159 33 223 31 214 108 74 197 120 50 91 204 64 45 244 193 54 170 53 199 41 10 70 220 145 68 218 10 32 158 205 48 186 18 120 100 158 47 3 157 62 91 7 54 31 217 83 233 226 95 125 28 51 6 123 194 39 147 63 52 100 201 220 96 226 242 131 85 96 214 22 71 194 69 5 99 37 88 48 22 245 153 70 245 85 38 116 133 224 61 191 197 143 169 70 94 167 89 162 114 248 119 73 40 186 97 52 83 229 239 50 37 67 25 0 165 165 165 165 1 0 0 64 0 16 181 144 51 13 182 158 25 127 0 0 0 114 0 0 13 78 0 0 0 0 0 16 118 69 0 0 3 20 0 0 1 114 0 0 0 0 15 0 109 121 77 97 99 72 101 97 100 101 114 115 46 112 99 104 0 1 88 136 84 69 88 84 67 87 73 69 1 0 0 192 2 1 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 1 154 0 0 0 103 0 0 0 0 15 0 66 193 212 165 47 158 101 143 90 111 232 62 137 252 56 69 246 56 222 197 11 110 186 70 46 68 245 227 157 58 176 118 108 255 85 62 40 178 85 18 69 169 203 40 18 219 49 207 252 15 57 78 136 238 192 137 69 135 101 84 46 156 13 5 175 9 5 162 245 172 207 165 169 206 88 73 211 171 164 174 112 63 71 184 31 221 37 166 79 5 131 15 114 244 238 207 216 239 17 227 177 67 160 66 193 212 154 175 240 32 110 231 176 220 75 122 67 45 140 218 152 26 188 19 16 70 46 100 12 102 162 171 207 147 232 46 129 230 224 142 44 70 162 102 82 16 65 169 232 58 197 1 226 230 247 241 20 175 215 67 32 203 217 208 134 187 150 162 63 110 169 185 56 142 225 246 180 33 114 124 5 37 84 212 128 30 164 229 208 216 224 187 2 126 209 51 142 7 56 139 220 232 168 56 210 119 197 236 95 113 121 147 62 5 16 6 102 148 120 76 237 88 4 46 152 207 227 190 58 105 25 63 228 30 242 145 30 205 193 119 28 65 161 6 85 113 254 35 25 218 241 155 57 46 34 101 87 219 177 175 90 37 23 192 16 110 135 14 201 90 113 155 204 60 215 16 232 111 135 218 123 36 119 224 93 163 67 233 232 62 127 241 177 118 93 131 253 225 94 147 211 226 106 223 56 140 40 243 210 212 240 205 25 69 158 223 23 7 45 121 161 103 21 93 76 191 131 11 37 220 95 159 108 53 71 237 228 38 192 96 36 234 168 14 101 68 218 187 125 239 67 136 208 224 145 202 41 73 44 92 125 93 164 127 252 148 199 42 76 2 0 50 102 61 155 95 144 49 242 226 212 139 39 169 250 165 133 244 188 11 198 113 244 133 255 208 95 234 165 90 112 27 52 250 90 78 166 0 202 127 35 59 223 131 14 154 81 218 181 53 29 254 103 48 33 191 225 6 186 233 121 161 97 169 147 218 120 247 111 39 193 212 57 27 102 129 167 141 48 58 146 236 83 180 135 36 193 196 77 181 97 218 24 94 119 88 225 88 61 107 38 42 0 165 165 165 165 1 0 0 70 0 16 181 144 51 13 182 158 25 125 0 0 11 3 0 0 15 252 0 0 0 0 0 22 20 235 0 0 3 180 0 0 1 205 0 0 0 0 15 0 109 121 77 97 99 72 101 97 100 101 114 115 67 97 114 98 111 110 46 112 99 104 0 1 219 219 84 69 88 84 67 87 73 69 1 0 0 16 0 16 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 1 154 0 0 0 105 0 0 0 0 15 0 66 193 212 165 47 158 104 163 81 45 121 217 33 168 151 12 136 51 216 133 159 78 214 216 43 6 93 88 173 49 224 16 210 176 244 190 46 112 249 208 12 31 155 208 114 175 160 237 166 80 129 149 37 165 111 12 49 64 250 168 169 159 82 99 244 238 46 66 203 196 69 63 252 89 175 97 38 187 103 169 162 122 93 198 238 248 174 171 90 231 91 24 116 109 194 102 235 220 101 188 198 239 167 48 0 66 193 212 247 142 41 244 252 170 32 131 125 120 226 219 34 155 40 95 65 156 245 152 111 218 35 102 116 216 131 145 17 84 107 97 158 240 249 195 150 60 120 140 104 228 134 193 204 31 57 215 166 99 44 206 176 32 16 144 208 6 248 187 61 109 226 227 51 211 25 218 191 40 12 114 22 28 230 0 112 11 172 202 32 219 160 175 46 72 139 187 24 169 29 138 113 109 138 194 65 131 26 203 70 229 19 88 5 218 129 23 174 244 179 27 110 213 99 88 249 52 149 107 131 128 11 191 219 77 60 140 147 221 41 5 154 71 244 111 11 122 216 102 224 199 124 224 181 243 197 90 177 66 36 17 3 41 236 155 135 117 157 197 125 86 112 49 216 189 27 139 184 235 236 11 77 248 224 96 79 164 194 90 103 41 162 119 82 173 71 116 83 120 63 237 133 59 95 243 179 182 38 66 89 112 120 57 175 247 2 86 164 221 215 242 66 72 241 206 94 82 185 213 183 84 158 243 111 184 131 123 154 113 69 129 63 216 193 18 183 237 229 86 226 139 223 239 210 173 153 53 67 49 7 198 215 211 213 85 237 110 87 144 203 47 169 210 32 17 124 119 167 84 218 32 64 80 64 213 139 46 73 67 237 85 242 129 68 80 18 116 121 38 21 132 110 38 88 152 155 85 234 152 132 14 186 223 127 213 177 161 118 126 164 93 140 86 9 39 140 158 128 15 121 128 22 82 198 32 125 160 105 176 229 213 67 60 105 93 166 53 20 133 196 110 63 239 200 252 182 252 210 104 194 171 61 38 193 140 109 223 92 105 43 228 169 222 61 252 104 255 66 238 34 62 131 239 211 193 88 118 48 247 65 45 181 8 92 165 55 106 219 2 60 38 114 62 64 145 43 151 179 227 59 232 214 164 43 226 209 187 193 230 212 51 34 107 155 72 0 26 242 4 241 9 64 80 182 179 217 254 181 123 67 245 13 80 221 209 230 9 60 229 105 10 138 253 27 231 68 155 196 137 233 97 229 82 175 213 222 96 165 165 165 165 1 0 0 61 0 0 172 94 103 33 181 100 42 6 0 0 13 78 0 0 28 169 0 0 0 0 0 13 171 241 0 0 7 218 0 0 2 139 0 0 0 0 15 0 77 121 80 108 117 103 105 110 46 112 114 111 106 0 1 46 58 77 77 80 82 67 87 73 69 1 0 3 64 1 1 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 43 27 0 0 9 179 0 0 0 0 15 0 66 193 212 194 19 180 140 109 220 205 78 57 63 90 66 84 57 156 71 10 240 179 194 234 180 76 49 136 61 86 193 33 87 165 51 39 174 141 114 32 57 229 43 22 87 128 72 84 38 117 129 4 182 215 234 186 97 240 130 6 7 168 37 149 122 3 125 3 195 87 185 151 254 22 251 249 238 210 167 130 219 121 155 186 134 229 95 75 152 58 93 250 123 38 106 43 222 218 75 149 20 150 219 56 44 81 228 23 54 251 165 214 237 251 0 192 205 43 113 64 228 181 201 133 51 84 209 66 37 59 176 144 234 4 186 142 81 128 228 2 55 216 158 134 41 177 194 7 95 252 212 255 73 83 237 231 200 33 245 234 99 190 79 33 76 97 115 253 35 55 46 42 13 118 116 73 161 215 249 23 162 74 26 161 34 208 52 177 148 31 2 225 128 147 212 218 175 235 77 215 179 45 41 42 83 138 73 222 20 4 247 49 227 152 237 224 96 210 249 218 162 93 24 168 187 8 67 87 106 36 240 23 14 253 32 32 233 250 182 103 110 104 23 208 218 230 121 74 225 57 124 53 128 60 111 91 170 168 211 245 68 13 214 181 216 230 12 119 31 218 154 171 103 239 30 230 22 188 226 29 238 162 224 59 253 70 31 56 103 224 36 245 159 238 139 104 201 201 132 39 227 128 0 62 234 60 136 63 255 195 11 172 202 17 37 216 84 146 63 219 54 56 151 166 38 241 106 221 197 103 27 237 182 165 6 183 114 101 218 141 240 64 148 45 222 37 21 103 254 127 46 56 173 37 215 210 155 156 143 214 184 249 118 238 209 196 193 63 132 149 152 85 92 181 13 27 221 176 225 145 152 79 7 62 97 181 120 39 91 165 74 115 184 46 199 3 192 153 218 145 229 140 225 48 115 235 24 105 61 157 168 6 39 4 200 157 182 175 112 130 106 48 11 175 17 0 192 51 97 61 92 231 192 128 4 202 158 82 84 178 6 244 58 194 143 198 197 84 245 194 178 69 38 193 153 99 228 73 197 137 51 95 234 74 220 141 111 161 135 191 121 33 201 254 51 7 28 164 179 195 57 17 73 210 193 161 123 149 11 73 41 75 25 196 86 100 212 137 148 255 191 61 249 212 167 243 124 178 252 243 230 210 105 103 137 88 244 8 170 166 127 33 239 33 76 177 46 165 94 119 60 57 69 82 53 93 97 113 18 211 180 59 221 195 107 202 4 125 117 172 218 169 252 32 46 1 54 41 228 135 201 89 109 105 202 112 20 196 166 41 173 208 173 27 148 202 143 245 25 142 72 111 18 240 135 44 9 113 199 4 252 36 142 207 253 43 184 119 116 86 138 249 177 138 141 63 33 191 93 190 139 209 129 212 216 83 151 194 200 24 252 41 196 242 80 71 41 30 226 43 28 209 35 219 218 177 65 128 188 55 183 237 64 231 242 161 168 189 135 114 61 217 9 64 19 4 196 99 134 88 34 235 184 97 44 234 25 195 176 83 127 209 207 190 234 196 243 14 19 177 134 74 190 120 202 207 65 100 1 59 62 46 48 80 135 3 9 73 242 18 57 109 183 245 222 178 216 183 84 76 56 208 27 8 158 248 66 214 155 165 188 137 94 194 111 156 211 2 200 53 127 166 203 170 79 164 98 8 33 169 242 184 152 189 171 140 226 112 193 38 34 179 149 178 39 37 88 11 56 158 240 172 153 69 71 107 203 187 140 154 176 235 8 151 194 172 241 194 59 173 162 204 166 181 114 97 224 92 71 116 144 235 121 221 159 124 218 189 170 239 83 135 28 243 178 223 131 227 17 146 169 220 93 31 64 246 60 114 194 162 48 94 192 255 37 210 128 223 90 148 255 167 134 204 96 230 126 180 73 114 139 161 17 171 76 130 56 199 160 130 180 229 165 79 185 10 128 134 241 79 80 147 118 89 165 116 61 94 67 177 61 154 226 10 230 26 219 235 251 35 12 194 40 38 35 252 251 191 11 198 3 254 127 229 204 232 61 105 255 53 135 108 128 24 78 193 229 23 109 141 167 141 113 72 6 184 7 83 149 143 141 161 13 193 130 105 121 159 72 83 255 218 246 207 168 2 188 251 220 106 202 121 24 137 85 236 151 184 191 38 29 12 123 142 42 244 196 40 124 66 26 203 78 220 166 73 142 150 63 166 17 119 99 243 166 176 210 220 215 118 253 59 143 35 122 222 50 58 29 51 211 19 174 220 236 227 198 71 227 70 156 97 25 76 78 210 252 109 98 200 134 0 148 114 221 154 66 23 196 248 37 253 225 184 18 33 116 236 252 67 236 135 114 205 157 120 160 155 132 133 60 83 40 206 205 65 122 27 3 244 137 119 158 91 42 59 189 57 230 202 3 71 214 181 17 91 237 71 219 25 87 69 187 54 79 222 40 229 9 229 71 160 174 72 187 107 25 142 156 159 128 201 103 230 130 228 230 37 21 220 76 245 164 173 70 236 120 248 32 0 235 8 226 156 150 195 159 49 115 251 27 199 242 115 185 77 140 190 205 244 7 223 191 94 162 200 1 170 101 82 196 36 62 145 104 149 184 123 177 153 15 220 14 50 253 40 5 192 198 227 129 195 234 3 23 1 199 104 182 67 51 17 31 177 252 147 96 76 24 221 202 12 236 136 115 123 75 165 115 55 2 242 194 9 252 13 250 160 95 132 217 253 162 222 168 205 117 26 224 163 41 136 164 32 42 40 60 7 24 87 230 249 31 58 236 150 135 184 249 22 205 31 97 180 112 137 182 250 89 4 221 38 113 74 247 168 206 215 112 54 174 17 124 134 22 229 141 40 117 220 60 36 142 159 28 196 12 79 250 234 136 200 220 192 151 253 59 63 143 176 44 197 118 7 251 9 88 225 69 165 197 229 146 92 13 230 142 60 188 7 204 81 241 42 116 68 128 100 171 169 163 137 188 9 17 212 4 231 195 226 170 216 196 24 94 172 65 211 52 75 97 206 167 143 24 61 168 230 229 31 239 42 70 74 67 179 96 52 199 96 80 117 42 122 92 36 146 138 21 213 65 96 75 175 232 31 107 43 33 91 231 154 123 5 24 28 139 122 138 127 91 147 185 79 21 150 196 39 242 145 196 148 195 22 235 187 30 46 175 109 249 30 33 44 231 138 19 255 207 171 119 184 201 171 190 52 6 187 143 13 176 206 38 141 52 54 14 234 19 13 72 228 115 134 239 231 78 161 68 240 39 189 238 92 137 134 220 92 228 98 165 0 223 127 16 233 228 150 150 183 157 213 170 18 108 187 193 244 40 94 214 27 214 103 133 11 23 106 140 153 150 249 216 192 173 245 226 15 71 223 152 10 15 241 34 209 142 177 116 19 237 153 115 235 149 33 51 8 136 185 42 26 124 13 143 64 6 191 151 249 2 34 136 141 198 23 227 78 45 51 175 180 143 131 177 93 122 47 116 190 243 99 42 32 159 106 87 251 223 159 179 37 63 143 200 173 119 171 27 79 79 149 2 209 224 156 255 224 213 5 208 114 14 166 128 135 141 222 107 146 148 60 212 87 95 249 62 108 29 151 193 171 48 111 202 218 27 135 180 253 254 184 223 129 63 91 60 123 221 98 165 199 70 36 4 155 209 197 95 213 90 27 172 67 75 182 52 134 225 138 50 128 100 245 153 1 73 95 228 92 254 186 19 225 208 85 38 151 24 215 131 149 191 230 74 57 107 248 227 229 111 209 108 16 211 152 104 163 251 128 215 147 85 150 15 43 134 83 159 42 239 54 28 40 73 52 207 84 129 239 98 214 179 21 102 137 178 110 247 152 202 120 33 245 91 121 128 234 177 58 4 101 109 183 205 222 157 164 79 7 109 210 19 253 233 66 110 212 180 156 55 124 37 83 157 36 52 71 108 27 185 118 84 11 222 1 186 180 176 54 75 2 134 10 200 41 247 243 115 198 166 236 142 190 189 239 126 125 106 88 219 213 89 86 112 164 28 237 40 73 163 214 41 167 51 226 144 185 109 128 31 24 46 11 81 151 124 82 134 29 127 35 25 190 38 212 98 223 126 203 32 60 74 103 251 72 156 19 78 206 72 239 13 5 249 184 234 54 28 128 245 0 249 90 69 3 123 98 160 210 186 41 73 17 3 28 112 129 216 217 199 108 97 59 3 225 73 152 69 217 146 229 62 27 45 119 23 226 20 9 145 94 46 115 121 134 233 179 133 155 94 199 108 100 28 131 175 206 140 90 173 14 18 76 19 202 83 159 22 214 223 144 183 119 149 129 120 70 181 99 68 133 35 149 192 17 182 40 216 129 186 185 222 109 72 135 219 119 115 196 249 44 150 83 58 212 26 210 154 53 109 49 36 39 146 188 84 202 107 117 165 30 161 103 160 138 30 154 85 67 10 214 221 117 225 102 176 143 120 211 187 176 196 245 60 28 179 165 154 167 22 55 97 242 45 252 235 170 218 20 43 72 243 201 54 123 101 20 33 48 168 180 233 60 232 203 7 66 56 124 146 214 112 254 140 37 96 243 38 179 116 69 25 227 129 70 166 160 195 95 119 149 251 212 214 138 62 183 247 149 85 11 116 61 189 17 187 149 100 21 248 121 103 245 72 14 36 248 191 128 103 91 132 118 39 131 121 52 247 206 93 47 82 113 11 31 148 91 121 169 110 211 31 34 248 177 165 90 108 123 99 171 35 104 32 238 176 63 65 30 99 58 169 225 58 211 237 4 229 142 123 59 108 223 136 197 220 218 91 179 0 121 93 76 67 65 204 151 161 33 65 74 212 79 82 70 71 34 30 120 110 193 0 36 170 193 44 45 143 228 131 205 150 244 160 150 106 22 65 152 121 20 125 25 104 52 133 104 165 184 88 121 83 121 93 99 250 114 15 118 56 143 178 96 88 189 162 5 211 244 73 153 40 207 205 71 138 167 60 186 201 213 118 68 181 199 75 78 195 34 132 17 127 183 98 72 65 22 255 140 196 232 205 157 2 110 42 175 37 4 30 101 25 242 48 107 25 105 159 30 213 210 157 118 121 51 157 187 180 131 3 44 5 185 15 215 79 162 2 26 65 168 188 175 126 122 46 117 97 63 225 223 18 22 211 203 44 218 82 158 29 119 110 57 91 14 143 66 109 2 240 56 94 247 35 47 101 146 49 98 29 193 204 226 150 16 203 189 11 251 203 208 29 186 250 218 53 107 74 41 140 45 140 4 31 27 113 69 36 188 128 46 81 132 34 77 101 50 169 28 156 133 164 129 253 215 241 194 174 172 194 42 220 190 205 227 223 125 42 185 109 222 61 100 144 193 147 66 193 232 72 220 164 225 179 24 189 206 106 11 94 84 43 63 244 25 229 114 152 79 232 252 147 54 43 138 6 104 248 81 78 162 136 226 36 206 113 106 248 66 115 193 28 216 164 130 112 222 54 251 213 143 169 214 127 195 37 79 48 191 31 239 222 47 54 197 188 194 74 4 90 50 70 38 100 59 49 223 218 178 37 231 49 12 152 217 227 91 99 20 154 159 152 122 106 149 86 103 187 70 156 1 251 186 172 207 166 67 51 147 24 159 0 66 193 212 209 173 202 54 121 186 247 106 241 139 248 136 144 151 199 247 80 188 144 101 75 21 223 57 158 220 219 236 232 23 100 202 212 173 34 206 147 90 245 218 205 94 143 37 178 123 245 10 207 222 177 255 205 243 59 2 92 205 14 246 210 227 42 114 60 115 43 247 225 110 54 179 180 171 8 226 94 227 206 84 12 108 245 165 220 186 62 202 190 198 31 48 221 104 253 145 8 22 239 235 157 224 89 115 154 66 225 233 26 132 65 101 103 113 198 133 195 218 235 163 15 66 48 130 138 254 104 191 21 132 73 188 3 18 49 233 212 33 173 203 85 255 167 237 129 60 173 232 204 54 14 112 18 11 20 121 253 133 205 30 128 169 42 1 114 138 184 35 247 111 197 232 255 8 125 197 39 27 123 188 217 183 113 101 115 55 200 76 41 136 182 194 36 115 226 46 180 223 15 180 184 199 127 207 175 183 18 108 253 224 68 225 189 230 145 197 113 58 99 64 169 236 231 55 89 138 194 172 139 126 15 235 114 7 190 146 185 206 38 26 160 116 201 4 85 157 75 151 138 219 4 150 5 192 67 120 123 231 151 29 125 34 237 37 125 175 14 219 63 40 148 37 198 227 142 220 5 165 190 80 20 226 226 188 106 110 189 68 213 83 144 111 161 33 212 140 77 52 244 117 247 254 247 134 221 112 95 223 125 162 95 247 113 127 148 138 20 251 103 234 125 73 19 94 81 44 249 114 11 173 196 15 63 229 13 115 251 195 11 98 206 183 202 33 193 89 219 11 110 155 116 53 252 253 48 32 153 170 120 19 185 239 38 248 134 53 99 79 234 178 251 112 68 87 151 119 91 159 228 132 234 207 90 233 251 86 23 140 87 198 204 228 239 33 97 205 23 105 57 191 169 94 234 175 182 54 157 209 165 39 1 23 153 99 4 83 250 118 150 110 225 141 205 108 23 85 157 117 151 134 213 237 178 162 80 51 220 165 2 220 8 167 35 52 225 141 195 156 254 21 76 95 231 237 249 231 199 223 249 56 16 105 49 246 179 86 86 199 222 103 162 50 165 41 77 133 132 4 246 90 221 161 237 175 20 1 224 5 208 134 151 85 245 81 241 166 113 128 176 170 18 208 148 167 107 165 84 201 247 77 110 178 243 212 76 28 185 151 25 3 254 91 135 233 7 181 194 191 189 100 178 100 20 92 126 239 85 113 127 203 20 251 252 161 1 63 35 197 97 30 51 62 136 236 104 162 216 84 86 49 130 181 92 215 169 183 20 181 106 88 75 233 118 139 43 234 2 58 27 15 194 152 140 103 217 39 100 170 4 96 201 205 75 153 189 203 211 117 177 25 176 204 93 16 68 7 53 84 183 210 189 91 68 187 188 136 34 168 145 152 249 26 42 26 225 31 239 15 249 137 120 247 29 172 107 103 137 180 207 217 121 27 149 32 90 137 141 176 165 165 165 165 1 0 0 64 0 0 172 94 103 33 181 100 23 240 0 0 15 252 0 0 40 248 0 0 0 0 0 16 180 253 0 0 7 90 0 0 2 148 0 0 0 0 15 0 77 121 80 108 117 103 105 110 54 56 75 46 112 114 111 106 0 1 162 139 77 77 80 82 67 87 73 69 1 0 3 128 0 129 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 37 135 0 0 9 73 0 0 0 0 15 0 66 193 212 169 9 210 149 55 104 18 166 123 198 254 115 231 189 56 26 63 233 107 89 215 26 41 64 39 168 254 239 247 106 245 213 179 37 162 85 150 47 25 75 142 73 147 42 103 39 18 89 87 185 158 183 144 191 121 197 58 247 237 47 168 4 250 221 80 196 140 250 2 153 82 24 7 101 152 165 56 154 236 133 124 32 161 65 134 202 240 234 38 74 220 207 29 183 187 78 143 128 78 228 25 224 83 50 226 241 200 15 193 111 178 15 246 78 206 228 147 246 197 203 10 10 242 105 41 4 66 205 9 1 225 252 22 138 140 209 6 181 240 179 154 27 24 6 94 118 33 215 71 251 65 6 46 194 156 224 245 152 248 245 163 117 106 184 81 55 44 43 63 12 15 131 173 177 63 58 108 90 116 237 57 130 18 45 207 39 168 184 124 14 234 151 77 158 24 238 174 149 45 154 30 127 131 200 231 47 199 96 208 217 78 147 104 4 219 175 174 33 142 236 210 130 219 100 211 116 254 15 231 119 8 95 0 178 98 122 210 142 229 104 67 70 12 175 141 92 58 110 110 125 213 36 115 84 117 144 245 75 148 181 55 130 172 219 99 192 169 188 102 174 245 3 98 201 249 187 198 155 60 173 205 234 41 227 58 211 109 39 124 98 234 206 156 15 73 86 25 233 109 125 254 184 178 214 178 133 136 246 117 48 173 55 248 26 8 190 78 97 200 67 23 26 223 148 9 135 229 250 93 43 221 207 238 48 11 146 126 167 202 57 129 122 208 16 68 11 171 85 193 55 197 75 206 6 101 225 159 104 37 53 24 149 113 98 108 118 35 180 159 124 25 241 188 82 51 147 186 228 19 144 214 103 241 33 199 95 1 89 148 121 49 217 177 30 75 206 83 68 131 49 235 210 72 87 124 132 117 54 28 248 36 131 82 144 238 147 41 18 75 146 21 97 35 176 24 27 156 45 171 65 232 213 217 183 86 97 199 127 122 105 229 192 146 21 171 163 104 83 164 85 85 159 97 16 133 250 117 123 35 109 109 221 183 95 120 25 237 167 23 213 43 6 178 186 44 154 201 162 86 26 136 87 11 90 163 230 224 102 104 162 19 246 228 233 218 91 12 199 141 183 74 205 224 12 153 150 177 85 0 41 202 28 63 57 160 34 129 152 15 10 240 140 213 45 91 151 230 63 252 32 81 62 58 251 113 147 52 74 212 214 30 114 32 135 185 204 7 224 181 26 172 91 169 81 65 140 201 52 185 195 170 193 233 103 214 112 109 65 219 94 83 253 182 167 152 47 211 90 104 203 34 241 216 55 162 73 128 24 254 18 243 43 51 199 224 93 181 216 4 195 100 21 1 142 111 89 99 181 120 228 69 89 150 166 67 160 133 83 74 25 120 228 202 151 213 197 238 169 7 25 75 215 132 139 13 128 148 42 185 174 244 128 76 188 161 166 164 16 51 147 115 251 235 205 105 232 86 142 76 237 244 167 29 43 177 248 156 194 246 97 15 7 255 213 141 41 156 105 175 207 13 3 192 68 119 2 85 97 230 126 53 40 79 97 45 221 168 205 66 34 36 28 180 173 22 22 180 51 194 56 193 255 243 75 101 57 141 155 154 6 150 42 8 180 204 128 177 95 60 122 220 131 125 225 225 49 227 224 60 187 72 148 80 225 109 173 250 161 103 80 190 248 119 106 225 182 172 156 189 14 39 39 172 51 134 119 87 74 119 174 13 184 80 179 206 211 203 197 4 98 108 88 244 9 167 90 0 179 111 74 175 93 37 151 71 255 226 242 57 3 70 223 10 238 143 109 72 108 218 5 38 140 97 70 133 196 185 229 124 137 190 203 76 81 53 60 4 82 244 201 125 216 66 13 237 218 214 208 120 143 242 251 23 135 220 72 32 82 237 68 189 70 62 224 254 70 62 224 229 134 119 188 130 31 152 255 212 226 149 189 221 60 223 148 73 202 157 18 249 54 56 126 101 207 255 58 91 68 133 67 118 98 230 235 242 45 38 75 183 17 235 204 212 204 222 45 249 140 101 163 86 59 125 195 111 43 228 127 205 120 199 85 241 203 115 36 38 114 138 200 134 12 65 52 23 170 58 186 89 15 23 144 208 141 125 252 131 154 213 103 133 164 20 24 181 20 212 220 255 114 55 158 205 47 147 146 107 120 61 236 170 84 104 212 61 32 201 252 208 92 120 214 182 30 6 28 5 1 22 67 109 244 114 222 27 168 58 178 108 199 187 12 57 225 72 255 253 245 130 250 31 222 250 246 10 101 46 52 182 55 251 253 245 81 49 245 105 93 45 82 221 74 249 125 1 22 82 12 24 109 64 86 153 199 117 92 85 16 118 131 199 159 35 198 115 25 194 53 204 76 60 91 61 99 94 137 235 45 223 47 205 83 53 161 9 165 132 157 86 145 51 163 200 190 148 205 153 118 167 140 3 86 133 127 81 179 26 56 173 105 221 157 174 25 29 252 191 134 231 205 247 66 63 40 168 20 174 40 253 99 88 50 93 57 46 77 42 38 230 44 152 237 96 246 158 174 127 80 223 21 171 208 218 64 83 60 6 39 178 161 246 16 149 28 35 238 182 210 44 48 166 87 16 17 60 128 20 135 242 84 199 79 197 192 216 159 45 88 172 97 28 155 254 95 247 229 19 84 119 64 208 127 23 119 239 50 27 133 55 86 37 222 63 40 63 237 92 219 43 139 185 171 144 78 174 41 45 134 33 179 81 222 241 244 47 230 107 206 53 93 206 223 25 220 198 187 145 188 22 208 189 21 158 201 29 156 207 162 236 106 151 65 58 250 220 39 200 228 244 143 101 56 32 72 194 32 92 161 170 95 226 91 247 74 68 91 243 111 13 53 30 159 155 43 194 142 72 76 100 240 231 155 202 2 170 87 103 101 137 13 158 138 204 152 21 128 163 227 158 239 113 74 203 205 138 28 253 172 176 47 237 128 246 167 129 252 181 12 189 44 9 25 249 55 100 198 20 247 11 221 58 43 244 154 235 66 177 195 182 215 227 81 34 233 12 208 171 215 60 228 237 247 68 237 254 101 72 11 189 214 132 0 237 192 83 247 146 44 29 115 128 161 61 99 89 134 224 142 199 58 193 76 75 167 233 190 242 240 211 62 140 149 132 19 231 30 187 11 119 216 16 130 123 220 109 76 105 8 8 51 177 93 127 176 168 236 224 185 239 147 241 252 89 235 117 89 232 240 134 105 5 97 209 251 211 122 163 130 146 101 27 0 163 26 227 99 143 189 100 252 184 92 204 15 249 41 66 137 162 186 236 108 107 110 37 6 27 122 43 43 183 9 177 188 52 107 174 190 52 142 8 234 72 246 140 207 86 16 62 58 111 246 174 164 206 167 225 25 226 156 194 36 44 43 216 74 52 246 175 115 93 50 77 141 193 52 62 121 123 202 32 231 159 172 154 127 94 71 139 59 99 60 95 93 5 219 230 131 152 119 71 166 108 172 186 159 236 122 151 241 89 190 225 248 70 6 59 222 41 63 1 165 51 242 86 140 13 190 182 4 62 76 202 29 142 235 136 247 213 221 89 87 129 198 64 125 243 139 125 99 248 77 77 161 154 149 206 132 228 19 219 21 20 117 100 106 17 25 129 82 47 223 238 149 91 209 180 62 152 199 225 74 120 88 182 193 105 50 55 18 249 249 177 21 79 110 42 239 129 88 200 29 133 34 98 15 45 175 191 221 140 248 216 149 245 89 166 178 80 182 78 190 69 50 222 205 239 161 190 224 7 58 209 212 252 3 217 253 195 183 64 52 49 155 161 91 219 253 14 98 134 170 152 67 190 151 34 0 244 30 29 40 140 166 74 48 227 156 179 126 37 235 250 104 255 27 136 65 183 130 244 43 240 35 123 226 134 15 235 124 3 209 133 214 35 208 2 203 15 238 71 79 163 249 77 38 232 160 127 174 99 90 151 104 248 47 21 102 40 10 75 7 38 213 12 191 187 208 175 51 104 120 67 247 117 94 241 128 200 6 166 210 115 55 169 169 217 14 21 75 98 182 140 181 241 103 66 242 210 58 92 215 100 223 168 223 224 23 185 68 213 123 36 81 24 49 168 209 69 245 79 245 26 172 28 132 233 201 18 122 188 2 206 212 185 33 163 205 123 122 253 31 107 244 225 171 154 126 238 192 76 97 3 130 6 136 89 106 53 55 117 226 25 20 196 35 147 112 210 205 162 106 50 158 32 159 46 222 213 182 51 197 240 80 51 244 161 110 150 205 10 210 29 211 191 134 8 62 165 173 11 212 161 149 21 59 192 148 10 206 136 162 153 70 254 239 231 184 38 59 63 15 77 159 36 158 37 220 110 219 185 101 189 130 102 113 59 89 8 251 111 16 111 199 206 9 183 37 71 67 15 254 146 122 128 22 246 172 83 255 83 89 0 246 254 92 199 238 49 177 50 56 60 7 47 70 50 98 209 93 12 210 64 75 186 162 82 59 16 42 28 252 150 217 13 179 131 109 44 168 155 109 124 107 172 34 39 56 93 136 156 226 51 195 139 240 86 22 205 163 244 246 122 13 115 134 172 202 203 8 83 178 251 160 6 219 89 67 181 18 209 214 63 231 59 24 227 158 23 7 240 58 71 177 7 113 158 183 64 244 85 7 107 227 60 68 82 254 89 181 121 244 154 127 239 164 100 253 201 24 40 247 95 2 117 74 39 105 8 93 65 60 200 39 164 174 113 104 28 234 29 2 248 240 139 89 240 62 145 199 95 144 239 95 112 133 161 248 7 69 77 160 179 10 214 118 130 47 36 196 113 185 107 12 184 128 166 184 156 240 64 39 22 137 148 42 166 209 186 106 148 29 222 181 182 12 140 98 107 232 202 192 126 214 67 12 90 3 7 248 95 36 76 59 188 66 63 98 47 55 72 103 196 189 55 155 89 36 43 7 171 26 228 14 129 26 180 143 57 83 243 131 55 10 86 141 23 182 84 53 42 118 71 72 221 140 17 103 43 14 243 168 38 236 161 104 222 196 131 99 100 2 95 182 238 89 158 129 168 152 135 33 197 190 201 123 56 211 17 219 71 63 164 17 28 210 229 135 70 215 21 37 111 40 118 238 71 231 185 92 225 238 138 15 196 191 125 76 175 41 229 73 155 45 56 91 234 166 249 104 4 179 127 38 179 30 101 157 148 54 199 109 249 21 239 65 56 118 173 182 77 172 225 67 185 168 180 146 85 179 50 125 131 216 129 42 197 47 124 221 171 199 98 155 4 245 181 64 165 225 148 159 88 65 126 225 27 188 72 65 126 66 80 88 14 250 23 35 36 212 224 92 173 32 66 193 212 120 244 150 156 45 75 143 253 186 160 103 148 110 138 210 209 163 125 11 126 208 172 225 255 129 97 133 7 117 173 34 14 198 74 241 119 114 179 69 78 241 172 212 89 124 91 120 8 205 235 82 98 142 194 32 245 179 201 44 162 110 214 68 254 158 4 147 19 254 191 118 156 232 12 254 184 209 40 217 121 173 182 158 0 168 203 19 227 183 248 42 166 119 134 20 184 72 174 2 197 58 133 29 213 233 74 101 1 85 71 25 150 55 32 225 207 234 168 1 132 48 188 104 84 53 145 212 222 88 12 164 128 218 29 207 78 77 249 16 88 28 232 164 142 192 159 5 8 135 38 217 75 132 1 169 131 180 254 194 85 160 186 146 180 24 82 91 133 163 169 12 134 152 70 138 133 74 186 173 245 88 137 116 233 235 3 118 28 107 126 133 54 54 53 235 170 9 149 65 194 190 72 136 43 247 87 106 245 14 28 216 174 131 61 75 2 32 48 18 90 42 185 42 139 107 94 143 236 239 204 214 131 5 194 198 84 239 253 129 60 182 156 134 15 194 224 152 87 64 148 238 6 49 222 188 124 178 199 34 127 212 174 139 147 19 174 19 177 25 35 173 239 20 162 133 142 35 21 226 49 117 215 117 82 150 137 206 32 224 106 132 88 229 130 225 121 252 199 118 93 193 14 161 171 76 13 36 30 78 89 226 51 243 117 178 220 71 194 253 155 147 117 169 112 214 170 151 80 176 47 113 137 200 71 128 223 66 205 149 141 14 174 254 215 224 212 209 129 71 42 114 80 117 179 6 107 207 86 126 92 5 186 201 125 182 1 242 50 66 210 232 200 192 245 137 242 31 142 235 147 161 97 3 161 124 80 122 86 211 86 19 222 78 188 48 94 226 5 28 139 115 71 189 71 214 76 63 3 208 118 242 103 42 218 166 31 193 172 90 1 221 207 45 41 132 69 109 253 53 20 18 46 39 129 112 108 97 15 218 100 16 0 87 235 39 246 68 156 112 218 135 240 49 235 29 171 113 255 41 197 77 237 159 181 64 19 122 215 56 164 218 187 2 68 137 251 240 202 132 181 223 81 212 100 47 233 101 78 16 141 85 48 151 108 6 121 86 47 13 210 187 225 178 157 228 22 177 139 131 77 189 136 67 214 106 21 35 156 24 206 241 20 160 172 42 105 163 82 42 95 198 28 128 214 182 183 18 226 9 84 238 73 67 7 6 79 149 143 81 6 165 26 204 217 230 127 245 25 64 156 2 31 40 230 31 152 83 16 27 19 48 88 183 13 234 44 214 230 142 115 130 245 184 253 244 91 188 169 175 129 42 172 27 94 36 204 250 103 164 187 225 237 171 117 127 191 201 200 10 17 53 9 251 134 12 155 134 192 93 150 96 13 18 25 200 160 243 9 207 137 253 198 235 76 86 159 204 94 141 69 7 244 119 142 65 54 80 199 204 199 217 168 184 53 128 33 0 165 165 165 165 1 0 0 59 0 16 181 174 127 194 181 175 1 132 0 0 28 169 0 0 43 74 0 0 0 0 0 11 142 68 0 0 2 170 0 0 1 124 0 0 0 0 15 0 83 113 117 101 97 107 65 112 112 46 114 0 1 36 38 84 69 88 84 67 87 73 69 1 0 3 192 0 1 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 1 154 0 0 0 105 0 0 0 0 15 0 66 193 212 165 47 158 101 198 187 5 232 62 137 252 56 69 246 56 206 7 115 110 186 70 46 70 112 68 98 27 12 96 93 177 126 138 205 129 15 225 200 70 141 184 144 238 51 187 21 2 100 253 33 237 17 99 201 74 232 168 36 57 93 93 223 103 146 181 14 19 20 203 255 77 196 6 172 46 213 244 253 180 118 156 135 21 216 169 140 101 119 170 86 133 3 176 82 146 129 56 164 43 198 114 16 66 193 212 157 170 210 35 52 27 93 136 197 106 52 54 31 166 122 205 231 32 32 112 160 40 138 126 3 77 99 4 251 242 199 125 87 169 103 99 226 123 60 70 128 113 18 28 85 6 189 121 109 31 26 249 161 83 169 157 62 74 239 8 51 45 186 94 58 49 252 46 209 169 153 202 106 248 205 178 15 4 139 59 160 209 168 125 168 73 48 103 120 110 199 109 171 159 179 239 33 94 118 136 247 133 234 179 177 46 218 151 77 116 44 159 93 94 44 99 70 93 125 137 53 84 131 32 59 239 13 28 34 65 92 91 104 119 79 119 174 134 219 228 67 30 37 182 200 207 220 0 237 187 20 146 233 200 152 182 39 167 14 242 53 180 240 195 154 154 94 91 182 52 134 249 136 119 67 194 147 228 97 60 211 48 22 65 190 202 99 103 114 208 10 131 161 3 87 31 64 250 4 254 133 169 217 77 183 225 106 142 240 240 180 146 248 39 192 170 88 102 69 95 13 89 148 174 206 78 162 131 133 161 167 150 32 158 248 178 173 101 227 217 102 143 206 171 62 75 41 237 239 9 58 126 14 226 107 122 250 208 40 209 10 252 105 101 26 155 10 18 126 136 104 210 186 8 64 134 82 245 212 110 151 241 61 69 16 181 128 165 251 123 137 63 121 161 161 183 56 176 164 4 136 161 23 48 88 225 129 48 129 37 151 67 233 215 152 90 89 82 27 227 240 224 102 238 138 80 14 201 181 17 19 136 193 127 207 108 171 212 101 238 237 175 10 248 251 8 248 107 203 87 203 119 235 140 103 161 208 168 170 55 199 88 185 214 52 170 233 214 179 94 170 196 230 181 174 40 0 165 165 165 165 1 0 0 68 0 0 181 174 119 219 181 183 37 82 0 0 40 248 0 0 43 246 0 0 0 0 0 20 128 249 0 0 0 0 0 0 0 0 0 0 0 0 0 0 83 113 117 101 97 107 67 97 114 98 111 110 65 112 112 46 114 115 114 99 0 1 224 122 114 115 114 99 82 83 69 68 1 0 255 255 255 255 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 1 56 0 0 0 54 0 0 0 0 15 0 66 193 212 120 70 64 63 99 16 59 255 97 202 132 145 70 204 255 242 147 131 117 178 216 188 111 47 148 73 157 252 231 185 213 153 225 248 22 106 46 220 74 229 99 130 75 44 98 229 175 219 67 79 64 165 165 165 165 1 0 0 62 0 0 181 174 119 219 182 181 222 19 0 0 43 74 0 0 57 140 0 0 0 0 0 14 144 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 83 113 117 101 97 107 65 112 112 46 114 115 114 99 0 1 110 44 114 115 114 99 82 83 69 68 1 0 255 255 255 255 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 40 111 0 0 13 38 0 0 0 0 15 0 66 193 213 19 32 207 221 161 198 69 165 49 49 163 44 68 182 220 208 98 3 104 90 104 50 121 149 179 221 229 227 218 24 177 155 55 76 59 170 223 31 186 42 107 230 227 232 78 210 112 78 144 78 101 153 20 100 21 113 34 86 121 4 82 215 232 227 236 158 8 177 190 230 223 83 84 237 148 7 170 219 251 49 107 209 121 95 19 142 221 245 229 208 93 102 171 66 93 51 91 15 192 115 41 146 47 38 44 128 149 206 19 73 214 243 63 134 185 162 63 190 209 118 46 232 38 160 233 103 92 179 67 170 147 238 96 5 178 108 31 198 142 27 71 0 252 18 157 84 217 115 240 55 138 8 134 100 181 201 91 154 43 221 56 198 203 54 203 223 246 78 211 75 62 202 147 101 108 145 98 255 87 81 19 116 84 105 20 53 35 186 106 250 114 137 91 30 167 101 76 166 46 241 174 167 210 92 15 66 47 106 89 111 95 216 169 157 97 204 203 175 67 131 100 228 115 101 202 102 201 85 197 128 102 224 152 248 208 22 182 13 65 185 43 236 146 8 103 164 68 199 167 90 161 44 115 100 75 148 212 133 205 185 240 91 254 62 54 53 239 150 84 98 211 70 114 120 183 103 103 115 93 178 126 224 111 251 255 187 2 190 193 166 28 139 27 108 150 55 252 38 95 40 204 61 107 175 207 110 195 169 32 120 204 107 253 57 197 232 114 108 33 166 115 221 202 25 154 147 237 211 246 212 49 74 55 186 91 190 105 219 116 226 226 36 175 193 108 174 164 118 229 107 74 31 1 243 123 184 154 227 118 219 112 165 164 185 116 70 7 186 27 160 3 238 43 56 239 52 158 217 130 219 45 109 54 78 222 17 74 25 52 114 1 227 42 217 72 253 223 216 56 77 220 203 181 240 246 160 86 241 58 137 154 1 231 100 197 96 17 176 142 199 47 194 252 250 110 162 91 79 145 135 5 163 208 132 42 60 79 75 147 68 55 152 119 214 213 47 14 150 27 193 38 43 165 127 127 75 132 242 209 231 232 90 64 116 45 168 194 225 211 19 208 32 57 244 252 94 120 52 175 230 215 78 241 93 119 194 210 157 180 253 119 241 7 213 75 242 2 157 31 49 39 20 118 10 91 175 196 156 140 234 100 50 42 96 137 208 103 228 4 225 22 74 130 9 205 18 214 147 75 49 187 43 227 152 76 179 172 183 117 13 251 110 75 224 79 217 217 214 227 177 150 96 91 183 106 137 241 0 235 38 172 39 184 9 195 11 116 2 112 250 7 141 126 202 122 7 182 180 100 247 29 140 118 221 194 141 156 254 197 57 27 154 80 4 218 198 134 36 58 37 182 11 191 30 48 96 99 49 71 11 247 48 134 26 75 23 248 169 148 192 232 136 52 190 9 106 180 116 177 13 29 70 152 222 130 64 89 126 27 36 195 52 68 129 99 185 158 76 202 155 145 145 96 197 229 234 10 34 12 222 208 145 197 41 18 66 206 87 174 41 75 241 145 156 36 214 28 80 128 64 122 182 236 168 100 34 205 66 23 47 104 44 153 163 250 100 6 68 188 208 49 136 156 155 115 13 32 5 138 145 156 36 6 11 221 40 154 194 218 29 1 109 133 109 254 242 28 147 241 20 50 193 90 176 112 117 224 60 208 178 120 233 217 18 74 197 232 110 76 29 180 175 66 70 8 220 11 123 121 138 85 17 22 34 148 136 193 221 117 101 205 217 109 4 10 10 65 66 68 175 123 154 170 174 199 231 184 25 226 33 154 114 79 3 153 4 0 62 134 60 239 236 226 75 31 214 96 45 220 244 237 230 8 76 0 192 141 154 200 74 225 104 207 176 208 254 250 148 25 227 146 222 226 151 193 235 210 96 88 215 249 244 107 255 115 54 241 227 92 32 255 77 149 152 114 54 145 39 240 163 57 73 53 63 143 39 125 158 82 161 237 101 170 95 128 10 235 248 70 177 214 75 129 238 125 85 57 178 142 204 242 173 222 166 98 187 187 125 211 154 80 113 197 20 119 9 146 96 99 144 22 242 112 129 170 244 42 101 206 190 197 244 148 115 57 69 51 241 102 26 83 232 148 216 207 165 246 140 155 19 43 229 194 125 119 141 162 77 52 142 110 231 121 214 216 184 130 187 147 208 75 162 216 177 142 105 114 229 13 169 48 19 158 91 11 206 150 59 115 132 12 211 120 8 46 229 28 205 130 70 224 95 83 157 228 170 120 15 162 167 8 172 104 162 98 182 2 181 178 136 95 82 215 162 125 149 208 59 68 162 221 58 71 225 223 67 148 159 164 179 10 179 177 104 82 55 41 75 67 52 44 34 117 214 229 137 25 60 228 94 30 99 244 23 15 202 222 234 31 234 59 231 206 96 121 127 225 208 104 214 84 199 99 171 165 242 165 120 144 122 192 140 77 43 15 174 36 17 147 218 164 245 199 228 104 241 162 91 96 135 12 227 181 183 235 13 242 224 136 136 129 245 176 206 165 165 64 110 66 168 139 8 90 142 102 70 6 153 68 241 74 56 65 117 191 164 16 94 234 52 20 187 70 233 98 140 204 87 193 52 225 33 209 80 151 207 85 183 118 135 239 187 57 14 120 196 217 215 127 8 90 51 234 66 89 75 57 250 9 195 159 178 218 116 61 172 116 127 224 132 77 251 99 238 201 235 43 13 217 243 205 250 118 218 254 191 31 26 242 230 159 112 122 39 80 186 185 233 65 160 60 101 136 95 12 221 4 127 253 231 143 215 152 41 27 30 142 228 95 129 33 192 222 173 189 95 223 146 175 190 41 125 152 1 45 128 119 18 116 190 190 44 118 65 45 147 21 181 9 155 71 227 71 248 192 239 115 51 239 104 153 241 158 102 3 46 25 185 30 8 115 118 246 221 139 33 155 210 149 201 252 253 176 49 97 209 41 147 191 203 176 234 255 208 254 79 100 22 115 82 241 185 32 150 244 141 155 124 177 152 147 127 220 211 34 8 186 96 219 246 136 12 97 75 135 153 232 112 3 188 100 93 127 66 188 204 80 146 107 142 255 233 218 135 85 177 253 166 64 34 137 121 69 35 181 183 176 217 87 208 228 115 147 72 32 199 221 66 201 187 105 143 245 222 217 229 119 32 11 134 27 154 14 181 166 205 66 79 133 83 86 225 4 176 89 108 235 215 24 61 153 165 28 118 133 206 221 90 25 36 7 220 188 170 197 250 251 220 236 10 80 113 224 124 174 72 49 141 125 102 25 239 130 252 66 142 134 26 164 191 89 81 255 171 92 2 215 221 17 152 120 127 239 71 129 106 118 190 90 37 122 93 52 34 195 12 195 72 43 248 190 233 185 183 16 53 30 82 120 130 25 178 57 183 21 19 54 38 171 240 10 128 55 43 130 139 47 232 253 202 88 207 45 105 231 20 141 143 241 164 3 184 128 21 61 17 76 181 214 2 34 126 92 154 124 231 24 121 54 158 234 108 112 36 4 103 162 128 27 154 3 203 92 71 156 198 202 3 49 226 189 13 2 58 178 113 118 34 75 75 146 6 233 37 21 24 65 215 167 26 70 150 217 193 195 252 191 90 248 253 61 186 181 78 230 14 109 147 205 111 64 40 252 206 41 138 26 134 72 77 38 232 118 90 30 41 58 25 53 79 119 161 189 4 237 31 60 195 185 176 34 208 231 29 122 62 39 252 111 120 220 41 90 83 72 179 170 171 37 25 190 53 116 80 108 76 153 189 103 122 66 86 179 214 90 106 210 59 105 222 15 107 72 236 103 116 52 30 221 147 57 240 254 104 101 238 177 9 63 134 100 198 114 190 121 21 147 144 201 113 70 103 26 142 13 77 95 181 176 20 100 195 216 4 192 169 1 112 129 118 1 121 22 146 75 160 90 63 5 52 5 35 186 175 209 158 209 104 200 154 72 95 19 46 40 224 125 120 206 32 137 236 162 68 113 228 97 186 230 97 12 19 225 22 232 194 152 204 67 19 157 127 185 212 139 53 182 66 6 144 98 244 8 244 74 179 209 151 239 21 211 255 205 150 137 46 154 43 224 119 181 7 33 254 194 153 191 9 145 248 63 219 250 148 231 60 138 6 31 117 167 143 224 50 0 59 27 2 57 70 111 6 234 242 251 115 236 210 233 117 77 122 123 193 160 6 242 220 68 231 15 252 208 28 26 14 235 11 96 135 50 62 50 203 205 8 62 188 225 34 102 68 115 46 130 218 132 10 172 164 110 210 177 94 40 153 48 13 175 83 103 5 23 104 114 21 4 131 178 52 6 58 29 98 139 131 65 5 96 106 119 68 204 118 5 56 14 65 132 126 111 96 201 62 71 69 138 29 182 220 122 158 155 200 171 115 41 176 87 13 30 175 170 38 151 166 187 61 31 231 50 99 93 50 216 201 138 193 145 249 254 205 187 222 126 137 188 174 83 108 99 66 110 101 78 5 6 233 117 126 191 97 18 34 148 67 33 23 54 150 81 99 105 97 83 186 248 44 75 248 155 70 227 83 68 223 175 44 163 195 88 54 97 60 8 10 2 91 71 97 16 174 51 161 123 80 53 252 155 136 98 77 238 7 11 195 38 78 151 3 128 90 74 103 211 31 95 140 124 135 68 244 84 128 148 204 43 191 87 17 8 116 61 248 193 146 164 169 200 140 249 63 208 143 62 215 217 94 91 76 233 72 89 35 173 169 152 110 79 22 178 33 213 146 191 43 123 91 133 9 85 206 233 135 198 212 43 120 105 76 174 227 3 106 58 39 236 7 111 204 119 245 204 124 6 50 162 243 142 2 220 121 197 136 193 16 32 99 251 21 149 240 205 110 161 188 236 100 6 9 6 227 208 39 5 170 161 54 167 251 146 229 233 138 141 216 126 171 144 176 146 79 123 239 117 174 170 228 172 217 132 204 105 7 205 150 34 124 94 250 6 113 146 163 102 189 196 105 111 26 21 192 57 52 10 131 62 40 183 106 226 216 23 24 255 236 121 171 149 110 53 212 178 128 91 105 136 188 52 207 34 80 124 97 98 145 89 10 9 13 37 80 3 106 223 21 232 73 185 249 233 139 215 241 23 113 162 99 238 99 130 183 79 90 132 85 197 105 245 144 112 12 126 135 140 185 16 146 32 69 21 253 109 197 84 137 106 105 252 38 250 183 145 114 218 17 59 173 58 27 52 116 197 53 219 74 147 249 217 0 138 34 112 37 43 98 66 5 241 3 225 248 238 67 99 216 85 235 220 24 89 34 204 182 113 174 240 159 198 39 239 74 247 34 185 9 169 158 236 249 56 203 206 52 239 24 24 198 185 112 114 242 96 141 104 118 246 173 207 219 49 74 28 91 121 90 48 160 43 239 157 7 237 38 95 95 102 146 200 101 170 162 218 248 52 202 159 239 30 77 43 84 148 175 173 59 126 153 168 8 63 87 151 114 31 103 162 99 124 101 51 197 114 207 48 205 32 130 107 167 234 174 145 166 109 160 64 25 36 199 29 62 102 217 27 250 43 56 155 142 158 230 33 184 51 83 137 157 117 158 63 60 171 210 244 173 157 102 173 76 64 104 74 248 116 37 161 130 249 62 243 23 176 210 95 2 19 243 208 167 10 252 99 246 92 201 112 255 98 64 227 83 121 234 133 111 222 175 104 204 22 162 154 50 197 30 131 163 127 185 160 78 98 43 19 156 120 20 100 153 99 90 171 12 19 83 131 117 247 22 162 74 16 192 183 237 4 88 186 70 144 216 14 29 84 85 164 177 38 171 209 72 154 42 209 195 215 134 180 175 246 109 72 138 47 68 204 157 150 171 207 209 161 137 19 178 28 65 45 243 151 168 151 18 114 234 75 181 209 155 152 117 17 106 137 171 54 27 215 60 53 249 96 171 65 228 157 108 77 151 60 139 252 199 183 229 246 250 178 85 199 128 15 245 151 60 107 178 217 217 201 191 10 245 102 125 105 86 65 232 163 153 78 111 221 25 31 109 8 187 206 123 15 62 163 128 113 39 249 43 210 124 81 146 108 205 222 60 3 112 43 120 176 157 164 82 127 125 103 128 116 191 140 233 33 51 19 208 17 195 56 244 3 47 197 111 193 0 234 140 59 226 202 112 247 166 118 171 57 181 209 39 4 138 170 124 30 15 249 15 47 179 146 5 131 241 96 31 117 148 188 54 102 34 195 224 6 31 207 207 159 231 122 235 149 115 13 136 36 171 65 114 189 172 67 195 217 215 234 246 24 192 30 237 203 65 189 241 85 229 18 198 135 202 134 176 41 243 12 62 104 189 154 63 65 204 155 111 123 149 22 224 137 49 46 175 145 10 188 36 239 29 209 242 2 234 76 235 212 187 225 32 99 230 189 249 167 203 16 235 143 72 81 240 131 165 118 17 91 196 184 31 72 77 90 23 9 128 88 252 160 94 27 155 53 225 235 11 199 246 225 84 210 127 196 45 131 95 91 115 238 143 129 151 176 109 45 206 249 133 0 75 175 110 120 200 165 243 78 193 1 22 113 187 115 221 180 251 77 124 173 1 108 148 75 163 216 106 27 31 152 43 68 58 45 0 118 129 51 215 116 30 222 159 96 141 239 188 104 73 163 173 126 90 189 113 65 153 237 192 161 181 237 196 87 137 165 106 58 153 32 157 59 215 233 45 40 219 249 75 33 21 16 42 133 215 255 99 184 130 104 49 64 204 103 178 166 139 119 10 122 141 1 0 16 138 28 63 118 125 16 200 65 190 71 168 30 242 209 91 66 28 53 214 170 36 102 84 157 226 16 185 156 136 194 141 207 155 11 153 167 19 223 105 23 59 226 182 171 178 252 199 56 108 170 104 43 61 2 234 73 29 7 157 94 106 188 78 188 209 93 31 248 253 130 184 47 160 223 187 240 118 67 176 185 67 144 215 49 44 29 90 48 8 39 255 94 49 228 174 96 203 63 20 188 40 168 9 12 145 100 93 0 149 110 35 170 45 220 77 119 207 130 74 195 241 2 125 126 22 104 11 42 111 12 110 101 35 88 200 218 2 22 182 173 9 132 240 234 179 1 14 192 189 121 151 255 162 182 118 88 252 83 149 77 168 192 59 182 100 85 165 188 170 104 167 130 131 197 144 198 239 231 220 232 28 136 138 12 193 209 171 190 243 138 212 191 195 10 173 93 25 236 1 244 12 124 157 32 38 243 229 162 205 154 74 126 64 145 113 145 166 142 39 140 94 6 130 50 102 171 10 238 67 151 243 5 95 252 78 208 60 212 1 204 99 84 59 127 210 163 254 129 165 108 244 147 229 117 18 154 123 4 241 49 246 204 210 121 93 221 138 99 239 180 151 192 17 94 122 221 190 34 94 77 214 232 70 108 106 185 0 114 25 189 119 7 234 111 123 92 171 0 209 193 145 116 134 221 204 44 217 119 138 3 152 15 59 55 112 60 2 202 97 134 181 14 84 12 166 21 76 87 255 78 190 120 24 242 218 87 220 242 197 187 208 94 228 236 59 111 31 14 25 55 30 146 175 74 254 60 181 113 56 77 150 1 125 56 20 176 12 64 165 165 165 165 1 0 0 68 0 0 180 207 51 128 182 181 222 33 0 0 43 246 0 0 59 144 0 0 0 0 0 20 52 110 0 0 0 0 0 0 0 0 0 0 0 0 0 0 83 113 117 101 97 107 73 110 66 114 111 119 115 101 114 46 114 115 114 99 0 1 254 72 114 115 114 99 82 83 69 68 1 0 4 0 0 129 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 1 255 0 0 1 142 0 0 0 0 15 0 66 193 212 190 116 19 225 40 139 5 15 124 31 121 65 93 191 123 136 162 116 53 92 1 197 135 82 6 245 120 174 219 1 70 16 90 193 224 123 209 27 81 145 247 226 208 172 53 145 77 4 43 45 38 172 37 50 85 219 49 69 124 31 56 50 227 91 86 106 252 66 58 198 109 167 189 105 176 165 246 141 12 92 161 87 74 179 89 217 29 1 2 115 221 66 144 116 50 211 176 7 129 85 209 108 135 224 48 252 181 201 109 103 82 159 145 129 57 217 239 78 190 169 131 80 77 42 57 127 117 104 178 251 59 50 180 16 129 100 197 169 12 177 132 49 171 94 212 56 84 221 228 120 170 17 144 211 192 0 168 178 162 133 150 48 225 69 174 12 140 63 48 109 207 204 111 242 102 215 3 115 49 143 93 227 109 96 233 39 19 138 181 78 119 88 80 179 104 52 97 7 160 234 71 180 176 40 175 188 17 97 140 124 59 209 227 0 26 127 240 130 141 241 138 58 255 174 241 161 60 78 178 50 72 5 12 229 217 23 167 106 164 140 14 164 80 122 173 208 123 59 170 145 176 114 87 157 161 206 154 1 233 111 111 6 35 109 107 26 85 1 255 200 2 197 252 196 136 196 219 62 104 62 59 29 96 127 213 223 221 96 36 62 73 133 154 163 251 182 12 71 44 122 244 105 153 132 197 191 34 56 128 5 136 158 40 49 173 64 161 209 3 138 72 46 164 84 9 255 29 108 89 251 240 103 85 91 82 170 199 61 189 109 120 32 137 53 64 123 219 49 66 36 221 73 35 69 152 174 174 129 2 117 56 179 113 113 179 155 218 109 139 224 57 253 246 194 221 134 62 144 20 18 1 35 76 134 122 169 51 115 128 106 188 17 70 222 112 165 165 165 165 1 0 0 62 0 16 182 181 229 175 182 181 229 175 0 0 57 140 0 0 0 0 0 0 0 0 0 14 10 208 0 12 205 109 0 0 49 117 0 0 0 0 15 0 83 113 117 101 97 107 80 114 111 53 46 120 109 108 0 0 99 190 84 69 88 84 67 87 73 69 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 66 193 212 188 248 62 52 173 136 218 110 164 104 187 92 91 33 229 57 30 159 225 15 247 45 53 143 52 125 46 13 154 130 10 230 178 102 160 91 146 16 50 214 205 70 222 253 170 0 72 88 17 78 253 0 105 238 116 244 182 142 220 218 37 123 87 194 186 132 82 163 213 44 217 96 188 30 253 95 96 99 167 32 86 123 110 200 19 93 170 172 122 234 223 63 140 152 225 206 155 57 162 146 49 252 251 195 90 8 194 135 47 232 49 146 95 44 182 237 181 226 227 229 71 130 99 246 134 247 70 193 119 164 112 64 251 238 85 208 179 167 25 227 185 214 249 187 50 83 97 248 88 3 253 235 132 3 250 115 74 26 119 182 254 169 242 84 239 220 27 86 35 114 45 88 60 151 76 80 185 174 132 226 233 195 224 116 152 160 189 135 204 150 14 69 225 48 231 118 165 14 108 222 175 19 189 101 118 116 139 103 148 215 48 9 249 205 228 191 116 142 188 160 65 177 14 100 63 198 86 64 162 185 98 191 36 174 255 235 72 190 251 59 12 160 18 3 27 160 139 233 195 97 24 78 181 254 225 248 126 216 179 190 97 199 152 168 53 204 97 15 127 87 94 89 28 217 229 126 251 166 159 45 78 118 175 144 197 38 10 146 116 152 216 37 27 23 152 187 161 10 131 233 73 247 225 127 151 187 128 216 186 183 19 190 143 225 69 175 142 155 32 167 233 233 30 153 213 135 184 168 22 9 111 94 155 31 99 157 132 162 127 64 221 118 134 198 182 111 251 96 50 26 5 18 87 136 230 146 88 44 163 245 122 194 228 142 243 9 8 202 136 224 69 191 227 245 157 101 179 15 156 18 58 139 134 144 82 147 244 241 183 125 75 187 126 128 111 28 130 86 215 243 9 198 58 56 153 216 179 94 161 67 112 33 81 16 145 3 114 102 90 145 51 86 227 45 170 249 20 41 16 108 249 51 241 40 30 80 113 149 1 10 250 219 71 140 128 255 92 177 225 61 175 185 207 188 175 104 87 170 186 136 229 66 16 90 162 77 186 226 183 246 34 138 152 20 236 248 107 117 130 141 67 221 150 198 29 78 42 133 210 107 196 194 69 2 132 4 236 246 58 56 30 198 228 114 171 184 27 180 26 214 125 21 82 118 99 141 69 18 221 215 55 141 147 226 45 116 52 182 70 14 76 237 157 22 151 157 198 218 153 93 73 74 126 250 228 32 78 118 78 189 33 123 109 61 226 48 163 191 92 105 60 187 154 220 224 182 127 101 106 249 233 178 191 162 121 188 201 13 253 105 239 173 32 34 246 109 131 69 86 38 170 131 212 45 118 11 102 35 101 5 88 85 21 106 116 18 10 52 100 241 54 228 249 205 243 170 132 74 156 155 39 253 50 119 245 200 170 51 179 228 30 90 240 33 127 83 245 167 119 78 206 225 200 26 211 239 40 114 134 156 221 103 250 232 140 58 7 98 83 121 134 175 169 19 237 155 125 17 177 174 226 2 68 62 125 142 160 60 138 115 232 13 75 8 49 147 231 149 46 112 100 79 158 230 128 205 57 0 19 132 133 0 140 44 86 252 148 214 35 114 106 55 208 240 32 46 183 15 126 218 213 50 16 23 57 123 10 99 111 247 234 250 88 81 138 47 167 206 41 92 140 52 251 160 34 143 162 239 204 234 125 56 47 182 198 169 102 239 76 73 221 254 212 10 111 57 244 111 36 108 122 175 142 58 123 17 131 125 180 177 70 29 171 92 34 171 115 126 170 21 72 37 91 220 44 120 250 242 55 149 230 127 55 52 153 137 164 32 242 152 84 229 191 216 251 63 58 104 110 135 87 211 21 129 12 21 218 30 177 1 41 111 219 17 13 65 250 219 251 176 175 195 187 111 119 241 158 120 233 14 36 47 166 6 90 92 135 97 231 38 94 189 250 59 101 42 167 212 208 54 128 181 25 156 75 66 114 212 159 106 94 60 105 104 130 127 157 243 16 51 67 205 96 112 108 221 197 196 22 16 75 33 224 2 116 185 50 250 188 110 126 183 7 84 59 226 223 220 220 210 51 138 206 222 8 12 234 215 53 252 81 143 101 96 29 246 2 84 215 69 149 233 102 182 45 151 115 156 183 198 42 161 56 141 105 203 139 58 15 250 24 248 16 2 89 106 187 149 80 119 92 255 244 218 100 239 96 32 215 101 53 34 187 176 165 192 243 6 164 149 98 76 223 16 208 174 161 153 169 233 124 154 191 91 152 170 251 31 156 129 61 11 212 136 144 200 91 230 193 145 12 223 98 70 41 103 18 233 111 118 63 148 106 29 140 25 242 100 142 86 109 79 158 116 194 3 119 219 216 101 27 120 216 43 101 28 226 7 112 74 224 32 97 38 132 148 241 234 239 183 196 239 155 225 46 100 78 66 47 94 22 38 4 218 17 31 138 236 167 124 225 115 123 0 9 169 211 111 102 38 41 161 191 161 110 194 95 138 47 56 205 45 118 249 207 237 194 178 87 104 214 80 8 118 133 167 198 45 247 167 238 79 56 70 113 247 231 6 31 214 213 112 118 30 82 36 8 244 103 185 118 64 161 155 224 90 193 209 188 83 49 199 96 26 79 21 83 18 225 160 144 185 182 115 226 152 172 33 86 180 168 49 9 131 223 86 179 209 244 7 245 49 75 225 24 211 172 50 76 245 248 183 77 192 196 8 64 248 91 198 195 94 72 132 191 82 118 35 61 30 168 1 234 91 58 157 247 227 243 1 117 240 103 109 245 32 182 70 107 135 34 43 174 230 190 121 239 186 71 142 65 244 163 111 248 19 28 228 62 173 42 68 52 242 51 3 195 140 237 117 75 59 99 135 189 170 123 142 116 51 122 171 206 105 95 87 47 244 91 109 86 194 62 117 248 244 72 176 159 83 231 131 202 68 187 183 133 119 93 23 153 143 236 245 3 212 68 130 63 69 74 205 146 216 61 120 249 152 195 51 80 212 178 136 174 119 153 200 77 37 145 221 15 227 130 6 247 209 95 9 13 28 48 181 34 48 33 246 41 82 74 165 219 86 134 223 59 78 148 35 105 194 27 65 51 0 120 236 49 57 106 0 60 8 159 219 3 57 33 154 148 137 93 162 190 199 85 19 247 135 23 251 242 43 45 190 104 122 152 98 162 67 81 176 216 200 91 115 20 183 120 240 96 77 117 187 141 77 248 6 83 126 162 219 192 83 36 134 252 161 114 82 76 12 32 24 26 190 127 92 51 65 54 165 160 142 47 10 116 102 153 6 102 111 46 208 103 251 196 114 189 44 87 7 119 78 131 169 21 199 179 67 195 78 201 250 25 235 145 198 124 70 47 6 162 97 101 111 227 230 100 115 36 30 123 122 219 81 95 222 186 213 121 151 141 235 234 133 238 18 46 18 123 55 14 170 62 52 160 121 174 127 255 5 146 143 174 186 192 220 232 163 142 161 195 248 202 163 213 163 233 119 110 208 122 242 59 18 66 197 95 10 81 204 234 53 48 101 59 111 70 207 142 49 97 78 37 114 250 203 234 231 227 240 61 253 190 98 249 45 224 225 61 138 246 24 164 196 85 196 197 162 35 226 134 122 238 3 69 184 42 165 152 159 131 168 198 136 178 71 239 225 137 197 94 21 172 42 120 123 46 241 125 162 69 71 66 240 71 49 5 23 233 114 192 87 239 97 162 192 235 108 103 204 169 132 142 115 107 66 99 191 154 112 99 120 63 197 150 230 117 106 225 61 123 95 26 36 116 152 190 113 66 104 98 223 152 154 223 226 121 46 145 99 184 194 141 114 209 130 47 215 174 201 149 235 181 67 219 221 149 114 44 21 230 31 21 242 213 231 178 178 238 178 105 209 239 235 32 5 123 16 116 6 119 186 174 254 103 70 202 20 142 224 83 99 142 254 251 187 89 217 251 30 93 69 136 52 76 112 155 199 183 141 251 169 218 147 227 37 26 88 98 112 137 29 163 31 224 199 224 133 193 143 245 159 246 252 62 15 125 110 85 206 110 238 117 253 102 240 30 90 53 83 199 32 240 80 67 139 30 145 221 118 50 10 216 54 181 160 68 26 0 83 67 78 55 65 94 250 190 204 135 32 153 140 135 80 190 53 195 116 34 46 156 237 248 205 252 168 117 207 125 92 126 228 84 25 204 196 219 231 106 19 131 165 42 94 45 100 44 49 61 55 35 201 22 14 128 222 152 48 85 2 23 80 233 243 212 205 173 76 160 242 197 235 199 13 94 40 232 91 33 235 6 6 28 11 64 19 16 49 102 19 132 48 233 193 196 186 136 216 75 168 216 93 193 185 241 134 80 3 87 139 244 25 37 183 90 116 87 84 221 1 90 20 111 124 149 33 241 183 25 146 97 42 70 171 56 11 134 5 255 240 167 164 82 11 72 100 122 116 28 254 24 77 35 23 137 139 249 70 80 182 30 169 223 152 140 193 226 84 189 8 19 179 188 178 39 8 168 225 137 209 173 188 162 192 56 117 199 182 137 132 204 177 192 199 140 10 137 97 98 116 88 206 242 152 3 86 150 208 30 72 244 3 162 39 75 152 95 50 127 248 149 90 239 160 25 153 69 6 113 166 44 231 89 118 255 159 47 34 179 83 191 14 231 131 136 251 126 106 104 29 116 170 46 227 135 217 129 179 235 170 22 5 173 85 251 132 51 206 151 73 232 246 48 87 63 213 149 208 155 238 206 23 14 216 133 202 143 46 184 167 185 43 243 139 32 170 124 20 162 225 147 64 124 120 166 128 87 62 34 27 211 174 23 168 175 194 172 180 62 20 227 209 188 24 105 219 49 58 6 123 243 185 246 46 55 85 60 90 120 82 135 91 215 147 211 172 189 216 109 154 36 96 215 50 211 118 159 112 183 233 30 130 161 101 131 22 104 62 62 46 229 229 68 154 161 72 248 10 67 254 171 130 23 50 55 26 37 74 15 51 242 100 187 55 194 243 58 15 32 248 177 116 145 140 179 95 82 183 238 118 196 230 48 238 208 222 208 15 181 216 11 228 205 25 202 189 48 242 76 154 36 127 16 171 77 60 146 87 191 224 218 229 20 249 17 185 222 20 64 219 108 156 230 167 119 186 244 140 255 48 28 30 93 54 99 60 242 59 226 29 179 239 172 48 75 116 193 199 212 215 161 210 221 200 236 238 202 81 111 172 65 150 183 41 21 178 16 56 222 191 200 213 186 64 177 26 201 253 209 82 103 246 42 82 99 200 225 124 220 215 211 173 65 101 181 143 126 195 244 126 163 34 132 126 94 3 126 222 26 164 2 23 87 234 163 213 250 12 49 33 85 253 91 214 204 175 24 0 182 55 44 168 217 50 116 9 254 87 188 124 30 243 47 83 196 156 120 151 143 125 236 188 250 97 99 51 71 182 16 4 135 175 1 35 225 63 49 55 124 255 211 153 28 177 54 102 109 128 232 33 220 181 79 12 194 84 239 49 104 251 25 35 53 28 89 226 199 238 34 124 205 192 177 135 47 175 9 76 246 178 102 59 251 212 123 15 213 166 125 103 100 139 81 245 14 91 232 91 35 93 244 21 13 117 85 49 204 185 131 193 250 75 53 45 36 144 83 69 199 28 11 159 103 132 28 126 234 156 52 37 160 79 247 180 209 130 51 154 21 177 111 91 0 125 145 218 132 224 218 34 89 124 83 255 146 181 12 214 185 132 89 156 166 93 197 241 246 51 166 95 168 211 58 16 47 165 133 58 156 37 148 235 104 18 21 98 170 123 183 103 177 58 175 164 157 77 179 199 57 51 141 48 121 102 51 22 69 193 188 195 106 100 209 121 135 236 41 147 67 187 22 204 120 76 23 233 130 219 198 200 194 223 249 96 82 212 20 186 188 130 206 60 101 205 193 111 109 15 1 168 178 252 136 131 232 175 31 56 245 125 121 171 20 122 193 116 185 34 107 203 5 167 196 155 135 183 132 220 94 118 186 19 242 208 164 95 73 247 149 94 148 58 223 132 78 175 50 15 138 241 76 253 196 211 104 156 135 131 143 23 199 45 184 90 22 183 75 51 102 126 107 172 44 159 162 159 242 145 93 231 107 66 222 27 108 111 162 200 68 14 9 250 56 0 109 78 143 107 134 122 184 132 206 180 163 102 96 149 20 218 28 43 1 152 163 159 95 117 145 200 197 169 9 150 254 173 52 47 120 45 152 52 97 185 192 217 109 75 147 23 250 68 87 176 29 42 212 204 153 119 55 246 134 243 28 17 32 105 223 95 191 237 156 169 231 221 73 245 232 245 90 10 210 133 159 254 191 169 142 181 237 228 69 20 176 37 182 67 214 42 78 212 62 99 198 168 130 34 164 8 79 195 93 90 175 134 92 1 71 140 226 213 196 14 111 242 77 32 143 32 84 192 42 152 151 33 70 178 116 20 164 144 92 137 207 12 185 49 173 23 19 76 232 191 198 94 223 76 0 122 110 182 226 28 87 78 69 156 38 239 3 158 9 35 173 45 117 97 211 64 99 112 24 30 17 102 185 78 20 31 64 215 114 86 157 162 34 62 83 77 52 107 138 211 238 191 197 140 46 81 180 104 121 105 245 89 207 101 52 130 225 219 212 159 91 200 125 160 202 172 240 114 1 122 46 232 219 77 130 25 247 142 138 228 75 234 244 114 61 29 76 252 255 46 132 185 49 206 191 10 207 95 123 56 190 86 253 168 116 147 134 174 225 95 35 43 67 38 35 224 105 49 21 231 235 166 198 107 73 2 229 233 148 122 131 186 130 171 25 6 100 93 204 231 194 54 66 172 155 44 208 197 82 63 164 8 159 109 247 223 132 93 88 103 37 245 109 223 254 94 37 41 41 53 234 233 186 176 178 213 167 199 89 220 107 11 72 148 117 133 176 11 66 76 85 105 103 182 107 214 90 58 47 11 213 112 23 121 169 91 5 100 50 85 7 207 47 25 3 0 222 32 86 15 47 96 72 46 120 202 34 2 23 242 144 240 240 61 233 44 248 145 40 28 163 181 128 107 229 102 25 117 145 117 79 93 184 58 220 143 142 195 247 140 24 41 150 255 218 139 35 55 150 181 137 144 82 219 155 44 25 137 20 70 207 198 100 85 11 28 8 48 209 158 64 31 243 67 39 86 12 106 29 15 58 150 123 192 63 248 242 194 145 189 110 40 34 154 67 231 65 224 185 75 115 204 80 34 74 7 196 241 40 114 79 249 34 38 71 46 130 242 192 101 120 38 159 107 179 95 210 227 7 201 184 235 212 132 116 209 226 163 69 33 141 101 99 162 206 76 216 4 178 147 230 11 129 249 249 231 58 39 42 135 226 51 187 126 190 105 181 158 12 37 241 153 210 31 109 166 238 153 78 238 158 47 134 211 227 220 24 17 221 251 210 191 220 159 117 223 27 54 123 12 145 54 71 82 42 15 52 50 49 98 219 210 72 101 56 139 57 6 135 193 45 54 37 36 16 76 97 43 181 140 159 54 173 2 230 170 8 103 226 18 33 239 155 3 113 148 201 64 206 63 114 127 196 164 192 132 182 3 236 239 220 5 73 193 96 147 244 210 66 22 203 170 31 58 35 40 182 132 52 242 79 233 254 227 118 180 8 53 131 95 34 87 14 39 93 160 12 155 191 45 171 46 54 140 80 126 79 177 77 129 49 139 191 119 160 104 130 244 192 244 35 110 252 225 120 146 42 183 34 114 14 131 42 44 5 113 132 186 234 247 56 40 213 28 169 61 236 71 212 141 92 127 37 139 159 59 210 229 133 183 38 191 143 89 102 123 130 90 70 139 170 85 110 99 59 28 123 156 65 254 46 216 220 19 171 94 41 200 230 225 223 157 210 53 117 187 7 231 18 112 142 106 206 143 64 122 59 133 194 114 6 251 199 217 83 146 156 144 174 80 109 86 90 244 240 118 9 199 19 161 90 64 228 174 37 125 139 111 215 90 79 135 136 202 80 90 202 216 15 177 177 63 237 51 99 56 237 76 19 178 39 179 39 58 44 134 191 9 169 92 244 50 222 165 79 54 105 140 47 77 44 162 81 132 214 166 60 240 26 15 2 77 53 246 76 122 188 191 147 89 131 6 32 98 134 165 84 160 195 211 185 133 95 104 65 0 31 132 33 243 238 231 136 70 229 77 121 203 0 113 219 248 169 47 233 223 141 244 66 211 254 226 85 98 162 235 178 209 170 100 131 62 64 90 87 233 229 98 69 115 146 78 4 189 17 99 174 121 153 243 161 149 203 17 101 213 124 174 5 220 221 212 75 181 40 105 74 227 109 77 151 187 50 80 96 156 162 132 60 221 5 230 128 155 46 164 61 113 123 193 219 127 17 17 9 46 110 90 163 129 67 27 68 62 101 93 73 123 146 21 81 155 52 233 55 28 130 241 143 171 72 112 87 0 245 121 39 235 29 241 236 115 139 176 193 157 89 196 183 175 42 19 226 41 231 129 159 164 46 117 251 143 191 172 221 95 219 60 171 35 251 185 8 142 238 184 176 214 88 64 198 85 91 38 176 195 203 181 70 215 255 127 10 55 193 95 230 178 19 23 217 227 31 247 211 29 25 98 209 17 96 66 249 171 126 33 91 96 144 67 17 21 198 122 11 53 115 214 182 93 236 8 42 254 115 40 55 52 57 179 21 184 231 240 121 103 60 126 228 28 62 225 85 87 8 135 150 180 155 140 250 49 88 122 199 35 23 27 143 212 87 133 210 145 112 36 160 49 101 145 70 178 9 45 122 157 106 214 133 174 171 88 52 3 141 219 110 238 170 165 143 128 94 21 61 149 13 160 144 38 179 55 19 237 71 111 114 10 179 108 86 19 36 226 231 247 166 82 97 194 142 84 115 211 186 206 8 135 13 249 76 8 160 51 61 171 7 165 101 134 53 106 126 130 183 233 54 150 52 223 50 134 234 162 157 189 251 84 201 238 155 228 94 22 145 226 60 41 50 159 113 191 233 186 217 1 229 135 125 110 210 98 102 178 124 40 33 229 148 198 190 207 192 143 43 201 114 216 145 64 103 204 134 87 133 165 80 101 131 213 120 5 4 61 251 97 20 76 51 255 200 63 44 33 7 37 94 197 240 234 69 240 113 22 222 93 43 255 117 38 25 222 245 254 254 217 190 235 162 79 148 182 106 67 93 184 232 186 138 159 179 188 172 119 96 205 126 189 249 128 246 34 164 217 2 109 27 61 78 25 107 205 214 55 206 209 146 133 194 189 198 175 253 57 112 194 180 196 74 107 86 104 126 107 183 139 212 23 164 234 33 244 252 192 241 114 107 197 219 1 35 120 194 192 113 129 72 178 136 240 161 158 42 115 128 43 185 94 221 33 50 129 96 57 64 74 34 32 94 109 30 224 197 211 165 206 59 212 3 194 83 253 7 181 8 218 243 35 83 182 225 141 52 99 197 54 93 163 70 92 29 121 245 168 110 80 208 219 123 215 149 230 210 66 45 219 210 231 22 149 29 51 59 170 173 19 138 167 103 7 118 50 126 10 212 146 91 188 11 137 162 118 173 178 25 47 220 85 147 53 97 92 248 91 105 221 143 5 185 197 156 214 110 91 220 112 68 225 131 244 26 9 111 227 194 102 251 35 131 177 148 5 173 190 61 254 155 182 97 235 47 77 199 3 133 100 119 231 152 134 142 146 170 200 121 35 247 67 237 254 21 158 6 37 142 92 98 147 150 119 217 47 134 66 69 56 121 167 54 126 130 226 3 222 70 145 209 82 150 180 68 149 61 204 181 173 244 188 207 117 3 162 37 90 69 49 151 128 34 185 228 106 105 60 246 229 118 224 173 135 199 166 241 239 96 108 31 214 165 124 71 66 187 29 178 126 124 120 12 84 78 229 211 35 166 133 224 17 251 25 91 59 45 64 77 48 157 84 249 200 217 69 73 162 212 238 147 154 190 211 237 160 159 88 166 138 62 115 228 53 124 106 86 80 137 242 26 5 104 169 105 88 28 139 147 22 183 207 13 240 89 191 234 49 44 228 197 54 46 187 134 169 169 177 43 34 239 107 204 16 99 236 14 14 178 12 234 92 162 241 191 125 249 141 105 211 117 134 162 40 199 34 68 200 179 24 55 40 204 166 80 92 17 245 77 194 15 66 159 129 187 224 193 251 32 55 194 219 185 66 152 0 8 4 243 86 29 107 124 199 152 172 192 227 85 218 192 225 33 241 83 154 65 241 211 245 27 29 247 115 210 140 200 203 220 121 127 12 18 180 52 5 205 163 194 31 237 1 87 117 187 50 102 25 39 143 151 59 43 31 236 229 100 119 160 223 29 159 185 38 86 245 232 74 140 93 93 81 216 209 194 198 155 171 20 180 81 202 88 215 121 169 127 65 163 6 47 61 96 28 101 226 150 47 195 201 238 93 119 24 28 42 66 92 192 133 221 90 96 13 162 233 210 184 137 109 170 72 211 182 127 239 153 98 12 108 32 60 77 89 106 248 16 183 122 120 209 162 40 146 168 58 114 27 214 183 216 22 215 231 144 193 99 153 174 84 208 103 25 23 194 233 238 188 117 201 194 204 179 169 70 169 194 33 97 193 241 57 117 136 93 9 25 79 81 185 10 93 155 237 26 137 181 31 127 123 24 132 163 219 137 223 125 103 225 174 102 47 192 229 119 130 26 204 28 200 101 78 105 212 101 111 232 29 35 55 143 144 153 23 24 94 242 31 67 85 67 187 201 94 54 168 92 88 63 249 17 110 15 23 99 7 218 31 57 178 230 57 100 168 181 222 200 148 254 35 251 23 228 48 230 109 10 127 193 229 21 44 178 92 65 60 193 233 131 172 102 172 125 11 125 43 207 162 168 147 65 91 237 91 253 104 16 82 124 211 4 79 33 204 78 246 86 229 146 246 235 181 124 223 255 71 13 149 12 81 172 64 115 119 228 36 156 126 86 152 141 225 130 82 79 178 187 139 206 229 0 157 211 248 90 109 98 178 68 103 168 218 16 60 36 18 243 6 67 132 46 79 187 45 99 142 181 195 78 221 71 104 43 132 142 17 150 132 124 9 113 219 220 157 122 16 244 63 164 194 59 161 0 231 246 200 36 178 205 233 31 167 182 234 185 9 127 233 245 112 109 97 31 218 154 218 31 196 56 238 222 206 141 202 153 202 201 250 128 164 241 17 106 37 99 93 225 46 90 198 188 28 177 114 183 85 44 48 170 50 229 206 56 101 8 3 50 50 10 8 194 238 117 229 56 113 71 60 174 226 63 226 45 252 143 8 247 218 204 54 92 181 92 202 111 219 175 90 195 158 170 96 149 183 107 60 135 91 113 233 46 115 19 75 143 208 177 209 210 100 32 174 224 53 93 249 37 164 166 138 59 247 234 39 211 184 56 36 40 13 221 178 104 29 103 140 215 255 143 156 104 65 0 17 220 97 11 239 201 170 193 222 10 127 101 132 22 77 226 14 18 172 170 169 45 158 134 181 186 120 146 86 190 52 52 27 91 182 12 83 233 145 66 74 120 198 104 250 164 175 97 77 162 187 81 217 10 96 42 94 87 5 74 152 10 234 68 172 14 226 156 157 180 114 68 142 126 234 214 158 42 203 247 14 189 22 166 200 144 73 53 58 56 146 97 150 66 219 241 78 150 13 87 208 70 200 153 208 189 199 58 22 151 162 40 231 15 194 122 138 41 65 84 124 50 246 202 45 83 180 61 44 219 236 73 3 134 68 191 46 146 123 131 110 15 210 21 245 108 40 213 139 11 113 49 104 42 112 155 4 158 77 188 129 81 160 85 160 80 185 231 221 237 189 180 63 72 154 250 115 61 229 54 96 174 150 138 18 53 208 92 10 168 121 240 71 44 150 211 196 116 249 74 174 9 58 16 94 32 102 213 183 64 21 223 237 194 98 251 194 97 60 19 185 161 248 253 243 157 147 208 13 209 11 229 94 235 11 97 84 12 190 106 234 184 163 58 25 79 132 33 148 66 65 174 43 137 236 96 169 117 197 135 212 80 167 20 168 63 174 3 61 56 206 53 62 140 133 41 135 203 250 54 21 125 226 239 135 128 82 214 25 139 150 199 15 253 184 97 85 61 25 122 155 26 222 204 70 52 78 58 219 207 250 14 135 178 102 125 77 98 87 71 250 103 188 81 59 6 224 229 4 231 164 100 61 213 165 21 97 69 27 99 205 114 252 172 115 195 128 34 106 114 55 122 207 209 43 155 66 225 84 194 153 34 15 125 253 78 9 224 152 60 119 41 223 107 104 13 85 177 28 144 26 149 79 21 247 9 8 16 74 56 127 206 194 137 66 247 45 86 218 132 120 63 111 54 230 238 181 235 18 243 80 70 176 216 70 215 62 40 74 53 96 35 102 76 85 205 75 205 91 65 206 232 204 93 244 169 69 170 107 98 57 142 9 171 46 89 145 210 93 51 202 62 86 50 181 98 35 156 137 205 42 3 156 205 220 2 9 83 38 48 147 23 152 213 78 230 108 106 18 63 208 55 15 27 55 136 156 154 192 249 91 254 5 174 41 255 128 206 51 75 152 174 3 18 82 250 187 50 41 135 38 107 107 125 166 14 120 190 4 150 23 192 229 22 66 179 42 151 235 86 217 60 140 132 105 163 125 9 231 171 44 216 43 64 41 87 169 136 104 101 214 234 65 193 164 119 227 5 7 27 104 40 95 50 6 199 150 59 219 151 154 153 17 118 190 160 40 156 214 168 0 234 197 85 15 227 193 104 106 39 197 8 111 147 160 188 243 82 162 86 220 96 40 211 249 176 196 175 173 189 72 180 86 195 242 215 209 102 43 77 93 229 235 29 211 42 144 205 74 74 67 75 96 30 109 155 98 211 185 86 149 253 219 136 7 94 143 142 177 162 164 218 120 197 105 105 51 247 107 106 174 87 131 152 210 216 140 11 45 171 130 137 118 20 162 167 104 53 103 193 179 196 150 138 101 240 235 167 20 182 89 135 77 23 18 116 16 96 235 111 5 80 174 163 118 206 210 205 122 122 67 94 224 76 209 113 252 206 66 38 172 203 206 73 146 174 20 226 119 3 172 194 109 60 223 38 81 235 247 26 249 166 189 20 229 107 165 116 219 135 39 9 196 19 147 140 201 157 122 132 66 112 165 18 94 86 226 192 234 131 250 232 251 53 149 207 148 80 53 2 243 170 73 181 122 201 180 21 6 173 112 14 215 215 40 207 237 216 170 121 50 204 19 115 213 115 251 161 197 190 124 54 105 18 243 48 199 161 25 29 83 152 176 222 254 192 12 151 101 195 165 181 195 53 84 247 77 121 122 68 20 190 140 217 246 199 195 80 46 135 245 179 118 40 152 141 219 76 192 248 161 68 241 229 160 120 87 145 118 76 46 44 89 69 161 10 240 6 88 147 204 197 185 99 57 205 114 158 243 60 163 47 147 57 236 173 238 103 188 7 193 143 229 148 228 26 227 57 54 101 167 132 144 173 158 132 232 94 15 63 241 191 93 4 39 29 89 225 50 194 114 31 139 46 238 222 116 170 215 216 5 184 170 31 163 70 56 186 234 141 3 201 201 96 189 106 217 82 23 234 245 248 140 224 106 17 211 224 162 218 219 112 198 74 81 35 109 141 111 101 131 248 102 194 148 150 105 114 157 220 156 97 139 174 49 21 50 148 52 144 29 6 93 26 232 253 78 83 75 155 143 123 33 1 63 152 136 223 87 138 186 150 140 57 211 89 106 105 220 58 182 222 115 174 139 162 52 186 126 43 161 46 10 100 4 241 164 77 82 216 4 116 213 195 62 74 123 97 255 126 192 105 225 57 57 131 147 208 124 149 73 184 96 107 176 200 12 230 200 118 41 109 179 100 146 82 121 80 236 189 209 68 219 102 6 81 252 251 168 29 159 179 194 196 90 20 8 31 224 226 165 111 139 102 119 160 148 112 44 214 73 117 135 202 217 128 66 186 229 45 184 12 191 217 153 252 94 211 145 81 3 101 243 103 238 255 35 249 149 126 231 199 85 212 242 135 60 177 68 105 55 189 155 225 174 97 169 43 208 109 226 101 89 86 42 222 123 168 255 95 18 95 124 20 231 209 49 66 205 142 106 240 227 10 42 69 71 35 89 210 148 32 58 255 104 127 189 181 94 228 163 5 104 7 109 26 4 223 60 248 120 125 254 10 115 177 70 100 150 65 208 197 38 174 182 40 176 102 133 44 79 28 122 110 88 122 184 86 46 42 203 116 104 5 42 89 177 231 152 247 116 145 81 118 246 102 33 9 200 43 157 173 66 206 41 18 153 205 59 107 14 195 203 69 9 58 252 20 163 217 145 88 243 237 126 118 105 63 82 221 177 190 247 119 123 206 45 118 44 140 111 41 221 37 99 63 33 181 89 26 225 158 42 13 254 190 204 192 163 148 163 197 152 184 206 243 144 127 126 193 215 246 98 170 253 176 43 184 50 144 40 142 215 180 6 231 29 116 127 31 39 249 168 32 194 173 96 100 207 218 209 15 169 196 147 94 144 249 135 48 165 112 249 206 165 99 195 231 127 41 109 203 80 251 1 45 172 90 38 48 33 106 11 175 142 97 211 201 242 75 211 41 212 91 121 117 103 249 154 198 228 50 186 34 22 57 216 253 84 69 123 191 97 23 28 20 12 51 6 219 14 200 71 173 55 86 94 35 242 75 120 198 48 179 24 137 98 149 31 23 35 204 10 4 112 149 36 74 229 41 94 125 168 142 6 152 23 220 190 109 199 232 251 193 93 236 189 69 142 240 186 130 108 253 188 207 174 61 224 205 224 123 225 221 50 61 75 122 154 175 229 202 102 194 239 199 221 140 160 205 151 198 12 4 88 57 19 198 79 181 226 27 85 195 110 47 176 211 222 36 234 29 25 146 159 194 31 211 168 199 207 176 35 144 239 18 226 38 108 157 126 138 98 45 230 6 191 19 160 29 165 177 92 154 81 200 25 26 182 184 133 113 18 36 71 102 89 247 250 3 34 45 9 83 92 24 194 167 151 214 237 161 51 47 38 113 90 135 37 117 160 147 63 186 153 110 119 238 221 163 155 153 79 202 173 2 180 74 206 143 247 56 83 62 172 234 254 126 136 167 219 110 63 185 102 230 67 248 110 50 103 120 34 44 34 35 226 138 34 137 248 18 243 10 214 158 78 115 40 79 16 45 11 106 159 42 226 135 184 248 31 49 197 168 171 140 8 254 118 222 245 232 5 121 87 160 243 78 167 180 201 233 160 63 210 29 129 87 78 154 247 254 13 123 38 144 97 27 215 76 13 159 101 22 217 65 141 188 177 107 229 252 6 61 101 104 135 253 94 25 63 225 132 43 200 7 238 42 239 185 222 74 26 163 174 96 145 172 40 249 33 62 44 130 167 51 137 155 59 173 105 241 67 63 103 69 253 194 121 163 224 142 48 249 149 76 52 120 161 238 19 237 250 38 11 46 191 193 11 11 172 27 155 72 127 202 102 69 180 9 61 88 10 207 87 135 220 55 174 17 71 165 162 197 221 1 0 116 97 4 7 165 15 205 25 68 236 179 230 178 40 54 218 185 88 188 174 199 246 180 129 18 55 211 135 236 122 127 56 169 205 207 4 97 36 182 37 74 146 15 117 166 101 213 131 91 74 78 177 9 0 117 78 199 190 253 127 239 0 64 140 38 178 49 168 128 139 95 246 62 162 200 75 22 170 76 114 147 222 26 7 7 199 121 33 50 102 222 41 144 107 145 37 32 254 238 125 169 82 48 45 185 79 2 159 152 170 159 134 101 83 149 41 192 114 71 191 193 57 219 198 131 136 61 133 137 252 116 99 4 245 238 185 57 169 44 67 145 207 153 213 77 198 6 19 169 75 29 182 82 197 42 149 52 95 135 221 13 183 183 242 154 196 60 166 64 162 153 90 98 135 51 110 34 35 236 122 101 224 228 196 228 29 121 192 226 131 9 50 189 213 251 168 107 60 102 71 39 94 221 167 200 200 214 3 17 95 170 194 183 58 105 229 10 39 244 164 74 131 165 125 33 121 28 117 141 128 46 166 132 149 122 5 110 47 158 30 195 209 169 6 213 77 201 9 128 224 137 215 163 46 200 148 76 146 187 36 169 199 12 18 234 135 157 46 105 210 4 204 108 97 184 197 36 43 99 174 50 209 197 45 203 38 157 120 46 173 113 193 28 21 15 69 234 49 182 82 179 13 168 129 207 181 100 215 225 188 166 123 146 249 186 168 119 10 174 45 14 15 101 197 57 210 17 46 241 20 9 60 196 107 98 65 60 205 31 235 187 132 124 15 143 63 121 4 100 220 229 210 122 215 130 226 12 38 106 177 97 184 109 217 172 77 88 50 116 78 181 36 162 2 238 23 146 94 242 99 156 154 221 147 59 28 107 232 75 113 237 178 60 217 91 48 12 129 55 22 141 7 68 224 146 26 102 249 206 244 102 179 253 221 235 208 100 168 184 192 211 78 144 110 118 96 46 191 202 23 77 55 166 44 188 238 96 41 234 103 254 30 204 209 83 156 143 222 51 249 233 52 136 90 162 137 130 64 251 98 188 247 238 196 108 192 105 48 247 161 214 224 217 72 30 150 178 116 221 94 67 103 136 16 191 230 143 253 71 21 4 204 158 4 136 185 17 106 231 231 203 204 141 178 216 208 157 65 144 171 144 215 84 76 92 199 185 114 4 63 189 222 43 81 58 58 102 234 15 44 150 33 189 65 13 67 64 176 104 181 187 74 207 254 96 157 118 216 146 19 128 218 228 121 25 3 78 148 227 252 107 195 97 248 128 198 129 65 178 149 223 161 250 53 135 130 95 118 245 132 248 128 30 241 210 67 194 72 164 19 253 96 173 67 85 224 250 218 144 113 159 92 88 188 117 189 12 40 94 79 34 225 113 23 95 172 27 64 58 87 39 181 134 222 89 141 106 242 146 67 28 49 15 217 110 202 137 134 184 81 149 57 176 18 141 73 158 246 72 123 102 204 132 77 25 50 199 178 74 84 69 222 84 186 220 8 60 96 244 164 249 245 11 44 90 96 170 204 105 177 28 234 248 147 28 254 239 63 18 104 114 8 114 48 176 102 71 176 93 21 166 50 166 114 206 80 1 177 113 165 177 208 181 135 54 178 167 203 155 78 113 62 23 224 165 31 35 35 221 19 160 49 237 73 111 112 70 220 129 162 240 12 45 49 43 156 43 165 232 62 184 162 156 176 189 73 230 41 91 6 68 119 103 28 144 27 240 229 83 72 154 204 57 161 114 53 119 60 141 129 3 213 214 77 109 104 158 79 27 46 215 189 161 108 150 67 87 214 114 69 119 181 165 213 96 226 142 252 196 74 115 73 239 110 171 84 11 85 89 74 40 127 231 220 11 128 73 41 106 130 193 142 129 208 220 151 38 24 117 196 64 46 50 186 191 67 73 114 129 255 26 129 191 175 134 96 244 63 206 60 173 5 37 104 152 221 189 238 181 231 223 180 13 105 64 4 151 34 35 86 168 208 3 143 70 199 15 100 190 229 3 195 177 2 107 110 86 103 9 77 32 208 254 51 34 250 140 109 232 149 189 237 175 51 114 154 64 101 63 79 103 183 55 3 244 197 16 63 22 45 72 79 65 204 118 198 213 152 95 139 233 15 62 203 245 137 120 160 165 37 178 251 218 35 90 77 42 71 44 236 209 193 69 25 223 227 144 167 38 58 249 94 123 247 64 12 78 119 128 237 237 118 24 2 4 190 212 101 239 45 111 71 218 180 56 117 225 40 93 167 38 183 20 74 239 195 109 8 237 198 158 232 31 234 232 240 150 129 73 73 96 91 211 105 134 67 170 181 241 249 248 139 43 113 87 241 247 33 168 212 179 59 153 66 135 105 134 222 247 109 215 157 35 155 87 82 123 220 226 249 72 68 234 198 113 231 23 104 31 118 253 211 22 234 222 43 40 249 62 195 241 232 254 90 84 91 137 60 116 107 202 141 219 191 169 102 124 25 20 190 182 66 212 81 26 211 192 113 63 247 72 94 13 7 67 149 30 188 112 38 53 215 66 130 214 79 133 0 81 84 180 66 228 162 122 237 128 31 33 236 155 82 240 198 220 148 144 212 5 235 129 3 21 176 221 22 36 79 91 142 8 52 134 72 3 104 220 173 246 184 77 39 147 116 7 241 253 136 227 177 241 26 60 86 16 65 30 142 212 199 30 86 128 8 231 233 219 12 217 148 153 112 146 81 109 161 20 191 208 192 62 3 96 220 96 225 77 45 131 43 245 92 196 33 107 157 95 175 112 222 47 166 241 91 98 216 163 213 72 149 57 197 195 68 36 245 189 1 121 76 133 128 239 103 210 109 135 40 8 100 162 213 89 31 91 19 116 246 12 173 83 250 191 195 133 192 201 27 194 131 208 117 233 143 22 216 189 161 39 184 38 22 50 99 208 22 65 39 183 27 25 84 60 173 104 166 252 96 139 164 20 118 250 204 234 91 62 179 158 33 244 57 52 159 36 24 48 206 140 172 157 188 82 78 55 1 146 56 217 196 103 230 38 162 194 126 168 84 106 111 220 42 227 180 210 203 79 72 124 47 107 90 14 139 166 107 216 87 124 212 83 32 246 181 69 75 119 111 203 52 115 16 210 13 1 42 143 123 15 93 59 149 220 253 171 3 21 155 35 110 211 41 241 208 131 136 126 30 119 250 66 251 219 226 142 51 157 146 40 54 22 197 212 227 134 170 169 30 170 57 20 160 95 141 135 209 152 93 195 170 156 163 175 16 191 79 143 118 68 254 187 214 189 55 104 174 60 223 84 72 216 115 155 126 170 68 4 227 52 134 44 68 136 2 98 117 81 228 49 222 26 105 19 65 48 70 9 220 195 118 74 31 160 68 185 122 202 9 155 13 162 104 187 148 117 165 2 88 116 233 218 42 94 212 149 222 169 189 208 245 172 199 79 120 248 197 233 176 250 177 19 98 51 211 188 127 221 7 106 112 42 139 94 59 134 188 232 147 139 36 13 235 80 133 163 217 37 139 81 138 56 72 238 200 89 164 172 88 191 27 116 20 74 125 213 208 99 183 94 218 17 57 96 253 110 249 131 101 152 162 198 111 74 132 92 28 30 193 24 1 183 248 33 127 174 97 50 191 236 195 221 173 6 12 109 104 171 14 117 188 178 67 215 31 27 88 226 148 0 119 248 3 173 244 182 136 30 221 180 30 161 193 28 164 28 69 162 23 52 215 148 118 175 128 51 189 2 18 107 142 175 166 216 210 59 132 146 144 22 54 214 161 174 144 155 135 52 145 92 176 147 143 195 77 78 242 136 36 7 222 121 32 210 6 145 150 136 71 98 28 230 248 135 125 157 144 243 243 198 18 15 135 32 244 131 44 109 252 19 203 129 227 216 77 54 46 224 19 214 97 57 175 124 239 65 247 22 234 165 97 9 186 46 181 102 215 2 17 72 7 24 182 50 229 149 121 151 194 156 4 55 41 177 179 170 255 47 75 12 115 32 212 26 179 55 19 218 87 23 176 250 84 158 57 221 107 225 70 133 123 30 135 198 114 120 63 72 21 176 247 40 18 212 25 24 189 205 71 226 127 117 104 151 12 136 108 47 105 190 58 175 7 140 195 252 156 193 104 98 198 5 202 115 186 239 131 168 180 94 197 74 178 87 132 168 237 171 243 177 168 156 91 222 22 15 250 16 62 207 114 200 17 119 91 231 89 232 36 51 160 222 204 13 238 57 196 24 54 202 247 3 119 135 199 174 14 27 98 242 235 243 179 14 65 39 171 5 19 180 243 181 74 54 7 72 193 29 82 161 54 100 126 140 8 91 24 247 231 111 41 245 227 55 117 118 54 141 8 220 52 227 220 214 86 175 184 7 108 225 16 255 111 146 111 56 180 208 242 253 219 94 131 67 132 249 78 85 205 238 4 223 15 66 197 118 18 168 133 238 13 227 136 6 66 55 161 63 154 101 207 119 66 145 235 31 194 243 71 47 34 76 18 197 216 175 211 106 176 96 155 175 166 79 28 246 76 235 5 26 227 212 25 231 199 81 52 186 154 132 29 202 176 67 244 146 65 146 222 103 45 22 21 67 51 74 119 98 181 17 87 191 150 168 181 138 249 172 195 45 22 51 36 129 243 202 86 149 189 168 129 243 36 0 115 239 70 55 95 158 203 226 255 142 211 185 152 226 97 229 83 64 108 186 241 69 234 0 236 112 200 235 50 245 102 193 166 226 3 222 68 34 74 129 222 111 133 96 144 163 0 7 163 115 236 23 151 24 251 23 241 162 161 138 92 79 190 64 132 246 11 196 253 179 112 208 136 172 115 208 162 252 25 163 171 113 172 60 5 74 34 76 57 115 127 130 249 204 160 127 95 187 58 125 197 23 240 217 75 34 38 52 236 100 59 24 111 33 114 163 156 22 250 197 28 54 201 74 7 117 169 163 159 172 18 67 78 67 33 61 48 70 126 223 128 136 128 183 223 46 12 78 164 29 59 33 188 131 120 169 22 66 227 75 55 117 141 204 184 136 26 68 37 206 248 217 8 100 105 200 7 132 21 226 189 98 156 146 202 40 103 162 249 69 20 138 87 29 225 3 75 55 168 194 124 45 41 222 17 125 187 172 27 135 204 84 237 124 62 203 77 72 237 169 224 49 46 187 231 227 78 182 132 242 228 16 226 139 223 52 184 133 151 210 112 19 93 1 23 244 12 137 246 150 184 131 77 204 127 207 86 48 142 77 89 240 6 9 102 26 202 115 139 183 30 29 224 17 107 235 67 114 173 87 75 144 90 98 219 76 133 191 74 228 79 103 185 33 32 127 216 153 21 6 164 12 186 126 81 3 62 31 228 120 108 120 151 55 149 22 158 3 80 100 11 19 251 42 166 0 95 125 253 102 171 129 91 204 149 255 28 139 210 243 84 44 15 129 224 146 177 150 251 19 86 5 232 192 9 208 179 93 233 102 105 8 165 185 113 83 41 57 42 140 167 43 145 21 72 247 183 223 181 24 45 43 134 88 25 153 197 140 68 218 37 225 76 220 146 137 124 178 45 245 29 91 205 232 38 72 204 214 86 186 127 80 226 48 244 98 211 171 213 26 33 250 95 47 67 113 134 249 190 186 136 199 195 70 210 187 163 168 167 29 67 38 100 201 104 64 201 53 82 174 203 76 110 40 60 89 166 80 66 242 17 66 157 127 54 68 62 109 153 85 76 10 227 22 90 112 11 28 164 237 161 26 210 208 203 111 15 238 15 220 70 113 191 187 240 150 150 234 159 47 238 29 16 185 179 206 206 244 90 61 194 14 130 125 30 91 12 58 57 176 143 181 207 64 214 94 127 193 99 203 32 172 171 119 54 136 159 141 241 80 157 147 220 169 119 135 71 214 142 177 60 227 23 34 64 48 135 107 24 205 212 69 225 164 191 80 234 158 34 151 162 192 82 168 69 79 163 36 23 146 160 221 152 69 143 205 87 141 236 159 11 36 72 196 156 95 250 148 186 177 131 31 234 183 130 61 143 35 202 24 135 84 187 203 93 170 134 12 15 237 30 171 155 140 44 150 91 234 175 120 144 88 11 72 57 198 95 241 54 70 152 57 233 231 252 221 60 134 240 209 37 105 236 18 182 188 38 35 144 94 140 95 137 71 230 56 16 17 124 129 239 182 92 34 53 37 179 102 145 184 189 36 170 54 24 35 43 123 249 156 54 0 81 2 215 104 22 178 107 182 68 211 47 93 28 214 250 222 244 50 110 215 47 203 136 73 31 38 123 140 77 58 116 44 102 119 45 203 31 241 108 101 11 222 2 47 157 118 251 242 38 47 137 11 7 219 132 12 207 167 81 233 54 19 23 187 234 143 254 2 160 53 117 50 109 177 4 225 160 48 234 127 244 78 220 252 63 205 102 78 249 78 111 133 55 54 41 161 149 169 200 109 144 111 40 235 69 83 46 215 197 2 74 103 57 48 96 155 136 109 201 99 228 69 150 15 253 74 141 253 182 19 96 161 221 251 62 62 178 205 87 109 25 11 64 139 70 184 189 203 192 228 252 213 174 44 158 1 239 35 6 155 134 63 80 160 218 54 62 33 23 128 93 1 148 124 5 164 55 188 86 222 228 221 102 32 208 224 121 124 218 41 141 230 76 118 240 13 19 255 229 11 9 22 188 153 21 38 190 9 80 90 11 148 62 117 231 104 95 228 51 175 233 21 41 111 86 234 159 12 36 76 216 188 203 181 176 247 135 162 67 202 25 12 199 144 226 161 118 87 145 87 183 7 255 97 129 184 170 236 40 21 174 50 2 23 234 85 216 181 235 0 35 169 138 172 139 249 107 40 95 242 64 15 73 57 77 133 50 47 118 169 181 222 247 69 90 3 134 62 197 104 149 10 251 181 241 159 157 18 116 191 224 43 98 126 160 97 104 105 200 14 20 73 150 183 127 76 80 88 189 114 47 196 166 106 129 54 109 122 180 70 80 250 121 200 150 79 231 100 63 147 182 189 53 157 123 44 20 143 221 165 17 255 114 167 23 207 174 180 196 120 173 53 9 139 186 82 209 234 40 8 9 45 61 155 51 244 8 102 206 196 29 160 136 27 182 179 141 230 251 244 75 14 120 212 102 110 82 214 38 247 211 90 140 199 228 140 165 175 212 208 141 234 80 182 224 113 171 66 93 3 187 77 136 240 94 19 209 246 2 35 249 92 238 146 123 254 52 89 72 67 122 179 193 165 49 186 245 178 27 43 47 239 62 141 231 247 203 90 205 69 38 213 104 4 218 131 205 22 255 215 237 167 211 198 68 150 158 50 67 57 241 103 148 24 40 213 149 169 55 183 229 19 188 57 220 124 215 65 125 142 82 235 165 5 243 166 47 151 163 93 203 184 245 162 76 84 146 124 198 239 111 63 117 10 225 102 168 122 187 98 101 177 69 61 151 45 101 171 231 25 83 226 41 16 68 73 212 209 49 224 179 1 3 74 109 127 13 6 31 225 143 156 91 36 4 208 186 76 153 249 212 217 78 130 201 56 255 157 107 155 127 212 232 40 50 62 67 175 30 166 142 205 56 112 112 6 208 248 113 96 132 57 186 233 59 66 123 162 213 121 76 64 49 149 38 100 147 203 33 141 210 181 166 245 76 108 20 108 173 178 161 194 218 125 150 82 101 41 1 157 36 141 52 9 67 116 95 161 54 250 232 26 36 15 233 223 36 68 164 180 87 54 242 90 19 212 24 37 141 225 101 220 143 234 5 58 159 129 90 4 40 24 75 161 246 38 249 177 244 219 211 18 136 119 148 84 209 161 101 179 75 229 219 24 144 184 230 167 153 254 31 242 156 212 51 133 240 45 183 79 50 128 254 190 216 212 120 68 33 5 234 228 16 14 43 238 25 52 248 124 4 101 151 198 59 68 17 173 167 159 158 34 219 63 98 167 233 53 233 233 143 52 52 208 110 183 101 77 139 55 108 244 113 17 181 52 153 175 147 228 147 215 236 105 166 242 126 9 57 131 72 9 134 97 54 175 41 200 120 224 20 182 128 186 125 10 17 15 190 53 151 168 206 13 24 98 160 21 178 225 229 50 142 160 219 220 22 184 143 203 152 248 22 249 198 159 182 208 222 244 149 168 116 180 87 158 176 229 158 239 240 85 205 216 125 62 136 182 146 210 150 71 38 115 187 114 220 42 220 246 77 224 237 190 143 148 218 155 133 34 192 96 82 80 227 180 112 220 62 252 128 64 149 47 228 71 254 139 85 246 77 223 149 87 152 151 46 248 252 67 59 206 221 199 209 63 92 214 233 11 239 90 52 126 217 171 143 90 64 114 249 58 86 33 236 114 168 75 161 90 212 79 148 22 16 74 54 100 104 4 227 26 223 115 117 105 123 131 123 50 73 66 175 171 69 16 46 164 221 160 120 5 152 22 122 72 92 169 248 162 218 84 55 209 125 243 70 251 52 52 201 72 217 173 82 160 20 238 96 229 171 219 56 103 180 233 3 70 14 206 112 117 14 38 110 211 155 101 196 251 154 89 27 105 6 68 132 124 160 237 33 189 18 251 27 211 150 247 34 150 250 88 210 240 217 125 163 213 166 122 51 18 13 207 36 246 125 128 239 124 88 179 6 193 189 42 18 170 75 24 207 96 101 78 36 42 87 183 181 147 1 136 185 0 143 46 138 192 245 228 115 232 22 212 209 6 212 132 174 58 6 30 6 36 115 35 9 122 71 205 131 16 114 230 30 68 153 220 113 93 124 187 47 107 41 128 64 72 253 170 131 22 163 193 131 111 236 91 11 68 187 183 182 81 126 182 161 162 255 65 151 74 13 195 251 32 52 85 214 187 36 180 61 194 141 171 161 129 22 0 196 195 66 15 144 168 80 58 179 153 120 199 153 16 229 42 99 5 10 82 14 241 78 27 0 123 96 224 57 200 9 147 149 133 203 84 172 32 215 21 104 147 251 169 250 142 35 170 130 254 186 250 196 238 198 118 181 229 254 226 206 50 222 192 128 118 128 18 211 204 39 236 112 145 15 228 117 18 162 235 189 217 5 237 134 186 168 249 196 159 233 55 128 193 234 40 34 10 75 207 20 3 227 115 31 162 160 108 93 62 252 167 58 196 163 71 100 1 237 171 68 217 7 131 124 201 237 252 82 127 163 21 169 94 106 11 4 55 104 241 243 217 173 161 60 175 92 93 188 93 208 127 130 94 54 227 97 191 229 97 170 51 89 127 220 205 86 58 135 34 114 183 184 4 49 6 192 191 9 180 60 176 156 227 124 16 254 104 105 131 255 63 136 89 61 188 170 173 167 51 227 32 10 130 255 19 69 19 95 191 155 173 173 132 249 254 229 32 50 237 255 52 203 205 55 100 208 11 36 224 120 229 196 178 213 118 105 123 51 231 50 4 127 135 237 62 66 185 186 122 244 88 184 32 138 169 171 187 224 83 232 88 156 228 147 143 229 78 89 59 95 81 192 106 2 110 242 79 222 79 128 130 89 50 70 11 176 74 177 177 140 147 197 1 195 212 40 205 23 197 40 224 42 222 101 206 211 62 196 108 229 55 31 20 125 190 129 11 41 67 232 87 23 115 20 179 139 157 85 93 122 244 63 84 21 214 71 71 170 23 161 101 253 117 13 56 237 39 214 61 140 182 175 124 123 162 211 183 216 250 178 209 244 34 27 55 117 83 168 92 217 150 188 100 53 172 34 62 161 215 69 162 164 185 233 211 108 97 117 83 58 0 123 140 149 132 200 223 221 13 112 215 77 51 93 177 122 122 160 107 237 167 110 76 129 119 151 14 47 38 202 68 147 52 22 141 210 231 131 109 67 29 0 209 89 97 12 67 241 40 62 23 255 145 39 131 62 249 145 33 116 33 7 28 211 141 12 31 33 24 128 190 17 230 245 163 27 221 26 116 6 171 232 100 218 26 116 236 212 153 148 87 252 31 163 101 76 252 130 41 100 101 144 126 8 77 25 113 149 200 255 31 66 119 153 26 36 206 73 103 193 212 4 98 2 230 101 245 15 181 105 149 227 106 134 238 66 188 175 129 168 124 149 127 148 232 16 220 5 0 94 89 117 93 5 110 24 202 61 245 173 206 159 69 101 79 182 54 196 66 232 156 17 102 82 165 176 84 80 246 6 252 57 146 38 173 37 172 76 161 204 249 145 207 85 186 1 45 64 188 88 53 224 81 158 231 121 119 185 138 248 225 194 49 86 109 202 196 83 107 150 193 58 172 196 188 86 242 24 152 196 178 27 34 129 8 169 157 23 60 141 29 121 33 249 224 139 219 47 230 193 9 74 245 34 119 76 6 94 183 59 55 245 155 176 190 225 86 60 17 71 88 249 104 112 23 197 233 166 14 241 213 111 208 127 25 95 22 182 46 105 17 127 220 146 110 252 116 242 160 229 201 6 186 164 121 173 99 121 230 104 48 180 73 177 29 150 48 142 70 79 254 209 226 121 97 135 183 231 156 189 249 97 48 234 69 9 205 214 159 42 35 80 134 183 111 65 96 132 32 113 61 169 11 253 172 154 110 159 178 82 16 63 199 238 251 15 59 25 102 148 236 38 207 48 9 96 147 167 81 134 183 181 165 235 181 205 132 165 125 192 88 64 36 162 19 207 28 19 147 150 168 254 129 18 245 44 214 31 30 208 25 9 84 253 183 32 200 193 205 100 200 187 134 170 182 58 93 35 238 16 248 58 180 174 230 214 11 63 98 173 53 1 224 133 66 166 175 44 83 73 179 156 14 195 84 128 133 60 51 153 22 198 217 71 59 113 167 228 190 104 205 196 204 24 86 195 12 205 63 121 84 15 40 93 172 82 77 129 250 93 65 13 58 214 151 20 154 186 16 145 222 134 27 143 43 161 47 70 85 118 5 203 103 0 238 195 91 85 98 47 86 21 52 78 83 19 241 202 226 137 181 203 52 222 57 14 62 1 63 40 253 126 94 96 103 121 36 35 47 181 143 231 106 0 200 222 190 29 191 153 107 212 168 58 138 22 75 177 16 167 132 21 221 89 138 191 32 31 176 33 65 202 163 180 155 131 159 110 60 201 3 49 94 7 86 59 118 64 132 1 129 150 93 127 132 207 251 92 133 121 202 124 22 46 199 180 236 133 230 199 203 52 190 5 86 236 188 53 137 7 38 53 215 47 63 139 97 204 63 250 172 191 8 31 92 4 25 214 140 192 32 160 48 33 121 195 83 154 226 162 193 52 199 144 166 126 131 61 84 157 165 198 197 236 16 221 32 46 33 60 218 158 133 173 33 87 183 3 54 138 236 106 231 18 205 106 120 156 62 3 229 191 56 18 30 86 178 184 231 40 113 64 55 184 201 148 253 203 10 66 137 25 33 204 165 217 131 184 116 217 75 129 168 191 77 38 192 246 29 56 31 31 242 41 121 80 2 194 207 138 210 77 140 90 168 151 109 39 28 210 251 103 168 95 242 55 253 186 198 37 154 243 210 183 62 126 53 49 217 50 211 49 72 138 8 45 117 126 98 60 244 197 42 113 123 95 140 189 112 107 72 132 137 119 226 123 242 51 161 233 45 15 16 243 167 120 134 225 184 1 115 129 42 28 174 136 173 159 1 6 27 41 45 164 221 115 126 187 156 206 32 22 171 124 232 12 185 174 120 155 254 162 146 181 244 178 47 242 22 99 113 108 143 101 133 45 42 92 91 55 200 144 12 45 87 68 65 36 156 95 183 247 172 245 17 236 7 160 113 127 218 127 20 6 107 134 223 45 27 165 73 0 83 220 60 244 160 185 143 27 48 210 34 120 29 246 103 187 55 201 249 68 172 139 20 81 158 52 22 14 23 96 44 125 200 149 218 203 29 228 113 175 114 15 121 7 228 183 126 234 212 237 1 35 166 217 231 250 168 230 44 95 85 157 51 115 129 20 123 19 221 200 142 255 121 38 12 83 36 46 78 190 205 23 222 14 244 79 38 45 171 107 236 85 218 77 241 145 172 20 124 163 235 191 199 74 217 138 195 204 81 166 206 241 160 219 203 203 73 7 82 123 189 166 165 16 184 164 88 15 79 121 112 165 251 69 179 212 51 141 10 238 85 251 109 207 4 24 196 154 121 79 57 95 119 187 89 61 212 105 36 185 92 222 46 2 107 64 156 197 240 128 2 59 51 22 225 234 14 168 17 60 161 179 126 186 219 155 120 199 54 171 189 253 169 45 106 250 145 252 184 145 165 232 187 193 106 249 29 255 68 255 115 54 53 7 17 152 4 255 102 251 1 39 77 204 95 165 83 184 163 247 124 22 163 84 255 210 252 40 245 146 27 248 86 156 220 127 158 135 120 143 186 183 21 210 96 21 118 87 251 51 207 180 6 211 187 67 228 82 204 122 20 142 137 67 33 39 112 124 217 112 37 189 38 13 251 132 35 111 231 49 107 242 30 84 92 102 199 47 236 165 111 7 95 60 91 151 233 33 116 208 255 33 58 170 71 159 251 229 78 136 73 203 243 97 94 84 242 143 85 137 72 112 57 197 119 149 250 155 183 196 134 207 171 150 206 117 55 18 186 122 144 107 75 125 197 85 217 204 24 136 122 120 25 53 4 224 58 11 248 49 189 39 18 79 111 78 203 255 210 146 21 64 152 63 73 247 93 9 30 127 138 203 118 183 133 27 8 53 105 162 66 146 59 33 112 135 66 82 100 208 205 93 194 45 176 182 38 178 39 182 199 6 173 41 16 197 30 117 194 192 111 212 93 36 83 67 19 7 179 240 9 13 10 114 101 115 75 17 14 84 55 32 220 140 186 66 35 187 214 131 197 44 33 163 9 86 93 96 139 73 140 110 181 125 56 175 16 77 132 43 241 163 25 228 9 226 74 157 99 250 116 86 188 130 167 53 40 90 155 143 77 148 90 242 35 115 187 55 126 153 231 175 190 137 73 64)! ! !InterpreterSupportCode class methodsFor: 'source files' stamp: 'JMM 2/18/2001 20:45'! macDirectoryFile ^ '/* Adjustments for pluginized VM * * Note: The Mac support files have not yet been fully converted to * pluginization. For the time being, it is assumed that they are linked * with the VM. When conversion is complete, they will no longer import * "sq.h" and they will access all VM functions and variables through * the interpreterProxy mechanism. Feb 2nd 2001, JMM rewrote, using more current file manager logic. 3.0.7 return correct response on findimage */ #include "sq.h" #include "FilePlugin.h" /* End of adjustments for pluginized VM */ #include #include #ifndef __MPW__ #include #else #include #include #include #endif #include /*** The interface to the directory primitive is path based. That is, the client supplies a Squeak string describing the path to the directory on every call. To avoid traversing this path on every call, a cache is maintained of the last path seen, along with the Mac volume and folder reference numbers corresponding to that path. ***/ /*** Constants ***/ #define ENTRY_FOUND 0 #define NO_MORE_ENTRIES 1 #define BAD_PATH 2 #define DELIMITOR '':'' #define MAX_PATH 2000 /*** Variables ***/ char lastPath[MAX_PATH + 1]; int lastPathValid = false; FSSpec lastSpec; /*** Functions ***/ int convertToSqueakTime(int macTime); int equalsLastPath(char *pathString, int pathStringLength); int lookupPath(char *pathString, int pathStringLength, FSSpec *spec,Boolean noDrillDown); int recordPath(char *pathString, int pathStringLength, FSSpec *spec); void makePascalStringFromSqName(char *pathString, int pathStringLength,unsigned char *name); OSErr makeFSSpec(char *pathString, int pathStringLength,FSSpec *spec); OSErr getSpecAndFInfo(char *filename, int filenameSize,FSSpec *spec,FInfo *finderInfo); int fetchFileInfo(CInfoPBRec *pb,int dirIndex,FSSpec *spec,unsigned char *name, Boolean doAlias, Boolean *isFolder); int doItTheHardWay(unsigned char *pathString,FSSpec *spec,CInfoPBRec *pb,Boolean noDrillDown); pascal OSErr FSMakeFSSpecCompat(short vRefNum, long dirID, ConstStr255Param fileName, FSSpec *spec); OSErr FSpLocationFromFullPath(short fullPathLength, const void *fullPath, FSSpec *spec); pascal OSErr GetFullPath(short vRefNum, long dirID, ConstStr255Param name, short *fullPathLength, Handle *fullPath); pascal OSErr FSpGetFullPath(const FSSpec *spec, short *fullPathLength, Handle *fullPath); OSErr squeakFindImage(const FSSpecPtr defaultLocationfssPtr,FSSpecPtr documentfsSpec); pascal void findImageEventProc(NavEventCallbackMessage callBackSelector, NavCBRecPtr callBackParms, NavCallBackUserData callBackUD); pascal Boolean findImageFilterProc(AEDesc* theItem, void* info, NavCallBackUserData callBackUD, NavFilterModes filterMode); pascal short DialogHook(short item, DialogPtr theDialog, void *userData); OSErr __path2fss(const char * pathName, FSSpecPtr spec) { return lookupPath((char *) pathName, strlen(pathName),spec,true); } int convertToSqueakTime(int macTime) { /* Squeak epoch is Jan 1, 1901, 3 non-leap years earlier than Mac one */ return macTime + (3 * 365 * 24 * 60 * 60); } void makePascalStringFromSqName(char *pathString, int pathStringLength,unsigned char *name) { /* copy file name into a Pascal string */ name[0] = pathStringLength; strncpy((char *)name+1,pathString,pathStringLength); } OSErr makeFSSpec(char *pathString, int pathStringLength,FSSpec *spec) { char name[256]; if (pathStringLength > 255 ) return -1; strncpy((char *) name,pathString,pathStringLength); name[pathStringLength] = 0x00; return __path2fss((char *) name, spec); } int dir_Create(char *pathString, int pathStringLength) { /* Create a new directory with the given path. By default, this directory is created in the current directory. Use a full path name such as "MyDisk:Working:New Folder" to create folders elsewhere. */ //JMM tests create file in Vm directory, other place, other volume FSSpec spec; OSErr err; long createdDirID; if ((err = makeFSSpec(pathString, pathStringLength,&spec)) == -1) return false; return FSpDirCreate(&spec,smSystemScript,&createdDirID) == noErr; } int dir_Delete(char *pathString, int pathStringLength) { /* Delete the existing directory with the given path. */ FSSpec spec; OSErr err; if ((err = makeFSSpec(pathString, pathStringLength,&spec)) == -1) return false; return FSpDelete(&spec) == noErr; } int dir_Delimitor(void) { return DELIMITOR; } int dir_Lookup(char *pathString, int pathStringLength, int index, /* outputs: */ char *name, int *nameLength, int *creationDate, int *modificationDate, int *isDirectory, int *sizeIfFile) { /* Lookup the index-th entry of the directory with the given path, starting at the root of the file system. Set the name, name length, creation date, creation time, directory flag, and file size (if the entry is a file). Return: 0 if a entry is found at the given index 1 if the directory has fewer than index entries 2 if the given path has bad syntax or does not reach a directory */ int okay; HVolumeParam volumeParams; CInfoPBRec dirParams; FSSpec spec; Boolean isFolder; OSErr err; /* default return values */ *name = 0; *nameLength = 0; *creationDate = 0; *modificationDate = 0; *isDirectory = false; *sizeIfFile = 0; if ((pathStringLength == 0)) { /* get volume info */ volumeParams.ioNamePtr = (unsigned char *) name; volumeParams.ioVRefNum = 0; volumeParams.ioVolIndex = index; okay = PBHGetVInfoSync((HParmBlkPtr) &volumeParams) == noErr; if (okay) { CopyPascalStringToC((ConstStr255Param) name,name); *nameLength = strlen(name); *creationDate = convertToSqueakTime(volumeParams.ioVCrDate); *modificationDate = convertToSqueakTime(volumeParams.ioVLsMod); *isDirectory = true; *sizeIfFile = 0; return ENTRY_FOUND; } else { return NO_MORE_ENTRIES; } } else { /* get file or directory info */ if (!!equalsLastPath(pathString, pathStringLength)) { /* lookup and cache the refNum for this path */ err = lookupPath(pathString, pathStringLength, &spec,false); if (err == noErr) recordPath(pathString, pathStringLength, &spec); else return BAD_PATH; } spec = lastSpec; okay = fetchFileInfo(&dirParams,index,&spec,(unsigned char *) name,true,&isFolder); if (okay) { CopyPascalStringToC((ConstStr255Param) name,name); *nameLength = strlen(name); *creationDate = convertToSqueakTime(dirParams.hFileInfo.ioFlCrDat); *modificationDate = convertToSqueakTime(dirParams.hFileInfo.ioFlMdDat); if (((dirParams.hFileInfo.ioFlAttrib & kioFlAttribDirMask) !!= 0) || isFolder) { *isDirectory = true; *sizeIfFile = 0; } else { *isDirectory = false; *sizeIfFile = dirParams.hFileInfo.ioFlLgLen; } return ENTRY_FOUND; } else return NO_MORE_ENTRIES; } } OSErr getSpecAndFInfo(char *filename, int filenameSize,FSSpec *spec,FInfo *finderInfo) { OSErr err; if ((err = makeFSSpec(filename, filenameSize,spec)) !!= noErr) return err; if ((err= FSpGetFInfo(spec,finderInfo)) !!= noErr) return err; return noErr; } dir_SetMacFileTypeAndCreator(char *filename, int filenameSize, char *fType, char *fCreator) { /* Set the Macintosh type and creator of the given file. */ /* Note: On other platforms, this is just a noop. */ FSSpec spec; FInfo finderInfo; if (getSpecAndFInfo(filename,filenameSize,&spec,&finderInfo) !!= noErr) return false; finderInfo.fdType = *((int *) fType); finderInfo.fdCreator = *((int *) fCreator); return FSpSetFInfo(&spec,&finderInfo) == noErr; } dir_GetMacFileTypeAndCreator(char *filename, int filenameSize, char *fType, char *fCreator) { /* Get the Macintosh type and creator of the given file. */ /* Note: On other platforms, this is just a noop. */ FSSpec spec; FInfo finderInfo; if (getSpecAndFInfo(filename,filenameSize,&spec,&finderInfo) !!= noErr) return false; *((int *) fType) = finderInfo.fdType; *((int *) fCreator) = finderInfo.fdCreator; return true; } int equalsLastPath(char *pathString, int pathStringLength) { /* Return true if the lastPath cache is valid and the given Squeak string equals it. */ int i, ch; if (!!lastPathValid || (pathStringLength > MAX_PATH)) { return false; } for (i = 0; i < pathStringLength; i++) { ch = lastPath[i]; if ((ch == 0) || (ch !!= pathString[i])) return false; } return lastPath[i] == 0; } /* JMM 2001/02/02 rewrote */ int lookupPath(char *pathString, int pathStringLength, FSSpec *spec,Boolean noDrillDown) { /* Resolve the given path and return the resulting folder or volume reference number in *refNumPtr. Return error if the path is bad. */ CInfoPBRec pb; Str255 tempName; OSErr err; Boolean ignore; /* First locate by farily normal methods, with perhaps an alias lookup */ strncpy((char*)tempName,pathString,pathStringLength); tempName[0] = pathStringLength; err = FSMakeFSSpecCompat(0,0,tempName,spec); if (err == noErr) { if (noDrillDown == false) { fetchFileInfo(&pb,0,spec,spec->name,true,&ignore); } return noErr; } /* Than failed, we might have an alias chain, or other issue so first setup for directory or file then do it the hard way */ strncpy((char *)tempName,pathString,pathStringLength); if (noDrillDown) { tempName[pathStringLength] = 0x00; } else { tempName[pathStringLength] = '':''; tempName[pathStringLength+1] = 0x00; } err = doItTheHardWay(tempName,spec,&pb,noDrillDown); return err; } /* This method is used to lookup paths, chunk by chunk. It builds specs for each chuck and fetchs the file information, Note the special case when noDrilldown */ int doItTheHardWay(unsigned char *pathString,FSSpec *spec,CInfoPBRec *pb,Boolean noDrillDown) { char *token; Str255 lookup; Boolean ignore,firstTime=true; OSErr err; token = strtok((char*) pathString,":"); if (token == 0) return -1; while (token) { if (firstTime) { strncpy((char*) lookup+1,(char*) token,63); lookup[0] = strlen(token)+1; lookup[lookup[0]] = '':''; firstTime = false; } else { strncpy((char*) lookup+2,(char*) token,63); lookup[0] = strlen(token)+1; lookup[1] = '':''; } if ((err = FSMakeFSSpecCompat(spec->vRefNum,spec->parID, lookup, spec)) !!= noErr) return err; fetchFileInfo(pb,0,spec,spec->name,true,&ignore); token = strtok(NULL,":"); } if (noDrillDown) spec->parID = pb->dirInfo.ioDrParID; return noErr; } /*Get the file ID that unique IDs this file or directory, also resolve any alias if required */ int fetchFileInfo(CInfoPBRec *pb,int dirIndex,FSSpec *spec,unsigned char *name,Boolean doAlias,Boolean *isFolder) { int i; long aliasGestaltInfo; *isFolder = false; pb->hFileInfo.ioNamePtr = name; pb->hFileInfo.ioFVersNum = 0; pb->hFileInfo.ioFDirIndex = dirIndex; pb->hFileInfo.ioVRefNum = spec->vRefNum; pb->hFileInfo.ioDirID = spec->parID; if (PBGetCatInfoSync(pb) == noErr) { if ((pb->hFileInfo.ioFlFndrInfo.fdFlags & kIsAlias) && doAlias) { FSSpec spec2; Boolean isAlias; OSErr err; err = FSMakeFSSpecCompat(spec->vRefNum, spec->parID, name,&spec2); #if TARGET_CPU_PPC if ((Gestalt(gestaltAliasMgrAttr, &aliasGestaltInfo) == noErr) && aliasGestaltInfo & (1<parID = pb->hFileInfo.ioDirID; return true; } return false; } int recordPath(char *pathString, int pathStringLength, FSSpec *spec) { /* Copy the given Squeak string into the lastPath cache. */ if (pathStringLength > MAX_PATH) { lastPath[0] = 0; /* set to empty string */ lastPathValid = false; lastSpec = *spec; return; } strncpy(lastPath,pathString,pathStringLength); lastPath[pathStringLength] = 0; /* string terminator */ lastPathValid = true; lastSpec = *spec; } pascal OSErr GetFullPath(short vRefNum, long dirID, ConstStr255Param name, short *fullPathLength, Handle *fullPath) { OSErr result; FSSpec spec; *fullPathLength = 0; *fullPath = NULL; result = FSMakeFSSpecCompat(vRefNum, dirID, name, &spec); if ( (result == noErr) || (result == fnfErr) ) { result = FSpGetFullPath(&spec, fullPathLength, fullPath); } return ( result ); } pascal OSErr FSpGetFullPath(const FSSpec *spec, short *fullPathLength, Handle *fullPath) { OSErr result; OSErr realResult; FSSpec tempSpec; CInfoPBRec pb; *fullPathLength = 0; *fullPath = NULL; /* Default to noErr */ realResult = result = noErr; #if 0 //The following code doesn''t seem to work in OS X, the BlockMoveData crashes the // machine, the the FSMakeFSSpecCompat works, so go figure... KG 4/1/01 /* work around Nav Services "bug" (it returns invalid FSSpecs with empty names) */ if ( spec->name[0] == 0 ) { result = FSMakeFSSpecCompat(spec->vRefNum, spec->parID, spec->name, &tempSpec); } else { /* Make a copy of the input FSSpec that can be modified */ BlockMoveData(spec, &tempSpec, sizeof(FSSpec)); } #endif 0 result = FSMakeFSSpecCompat(spec->vRefNum, spec->parID, spec->name, &tempSpec); if ( result == noErr ) { if ( tempSpec.parID == fsRtParID ) { /* The object is a volume */ /* Add a colon to make it a full pathname */ ++tempSpec.name[0]; tempSpec.name[tempSpec.name[0]] = '':''; /* We''re done */ result = PtrToHand(&tempSpec.name[1], fullPath, tempSpec.name[0]); *fullPathLength = tempSpec.name[0]; } else { /* The object isn''t a volume */ /* Is the object a file or a directory? */ pb.dirInfo.ioNamePtr = tempSpec.name; pb.dirInfo.ioVRefNum = tempSpec.vRefNum; pb.dirInfo.ioDrDirID = tempSpec.parID; pb.dirInfo.ioFDirIndex = 0; result = PBGetCatInfoSync(&pb); // Allow file/directory name at end of path to not exist. realResult = result; if ( (result == noErr) || (result == fnfErr) ) { /* if the object is a directory, append a colon so full pathname ends with colon */ if ( (result == noErr) && (pb.hFileInfo.ioFlAttrib & kioFlAttribDirMask) !!= 0 ) { ++tempSpec.name[0]; tempSpec.name[tempSpec.name[0]] = '':''; } /* Put the object name in first */ result = PtrToHand(&tempSpec.name[1], fullPath, tempSpec.name[0]); *fullPathLength = tempSpec.name[0]; if ( result == noErr ) { /* Get the ancestor directory names */ pb.dirInfo.ioNamePtr = tempSpec.name; pb.dirInfo.ioVRefNum = tempSpec.vRefNum; pb.dirInfo.ioDrParID = tempSpec.parID; do /* loop until we have an error or find the root directory */ { pb.dirInfo.ioFDirIndex = -1; pb.dirInfo.ioDrDirID = pb.dirInfo.ioDrParID; result = PBGetCatInfoSync(&pb); if ( result == noErr ) { /* Append colon to directory name */ ++tempSpec.name[0]; tempSpec.name[tempSpec.name[0]] = '':''; /* Add directory name to beginning of fullPath */ (void) Munger(*fullPath, 0, NULL, 0, &tempSpec.name[1], tempSpec.name[0]); *fullPathLength += tempSpec.name[0]; result = MemError(); } } while ( (result == noErr) && (pb.dirInfo.ioDrDirID !!= fsRtDirID) ); } } } } if ( result == noErr ) { /* Return the length */ /// *fullPathLength = GetHandleSize(*fullPath); result = realResult; // return realResult in case it was fnfErr } else { /* Dispose of the handle and return NULL and zero length */ if ( *fullPath !!= NULL ) { DisposeHandle(*fullPath); } *fullPath = NULL; *fullPathLength = 0; } return ( result ); } pascal OSErr FSMakeFSSpecCompat(short vRefNum, long dirID, ConstStr255Param fileName, FSSpec *spec) { OSErr result; /* Let the file system create the FSSpec if it can since it does the job */ /* much more efficiently than I can. */ result = FSMakeFSSpec(vRefNum, dirID, fileName, spec); /* Fix a bug in Macintosh PC Exchange''s MakeFSSpec code where 0 is */ /* returned in the parID field when making an FSSpec to the volume''s */ /* root directory by passing a full pathname in MakeFSSpec''s */ /* fileName parameter. Fixed in Mac OS 8.1 */ if ( (result == noErr) && (spec->parID == 0) ) spec->parID = fsRtParID; return ( result ); } OSErr FSpLocationFromFullPath(short fullPathLength, const void *fullPath, FSSpec *spec) { AliasHandle alias; OSErr result; Boolean wasChanged; Str32 nullString; /* Create a minimal alias from the full pathname */ nullString[0] = 0; /* null string to indicate no zone or server name */ result = NewAliasMinimalFromFullPath(fullPathLength, fullPath, nullString, nullString, &alias); if ( result == noErr ) { /* Let the Alias Manager resolve the alias. */ result = ResolveAlias(NULL, alias, spec, &wasChanged); /* work around Alias Mgr sloppy volume matching bug */ if ( spec->vRefNum == 0 ) { /* invalidate wrong FSSpec */ spec->parID = 0; spec->name[0] = 0; result = nsvErr; } DisposeHandle((Handle)alias); /* Free up memory used */ } return ( result ); } typedef struct { StandardFileReply *theSFR; FSSpec *itemSpec; } HookRecord, *HookRecordPtr; OSErr squeakFindImage(const FSSpecPtr defaultLocationfssPtr,FSSpecPtr documentFSSpec) { NavDialogOptions dialogOptions; AEDesc defaultLocation; NavEventUPP eventProc = NewNavEventUPP(findImageEventProc); NavObjectFilterUPP filterProc = NewNavObjectFilterUPP(findImageFilterProc); OSErr anErr = noErr; #if !!TARGET_API_MAC_CARBON if ((Ptr) NavGetDefaultDialogOptions==(Ptr)kUnresolvedCFragSymbolAddress ) { //System pre 8.5 or system 7.x // point my hook data record at the reply record and at // the file spec for the system file StandardFileReply mySFR; HookRecord hookRec; DlgHookYDUPP myDlgHookUPP; SFTypeList mySFTypeList; Point dialogPt; hookRec.itemSpec = defaultLocationfssPtr; hookRec.theSFR = &mySFR; SetPt(&dialogPt, -1, -1); // Set up the universal proc pointer to your hook routine with this // macro defined in StandardFile.h. **NOTE** This is different // from the macro used for System 6 dialog hooks, and you should get // a compiler error if you try to use the wrong UPP with the wrong call. myDlgHookUPP = NewDlgHookYDProc(DialogHook); // call Std File CustomGetFile(nil, -1, mySFTypeList, &mySFR, 0, dialogPt, myDlgHookUPP, nil, nil, nil, &hookRec); // Dispose of the routine descriptor, since they do allocate memory.. DisposeRoutineDescriptor(myDlgHookUPP); *documentFSSpec = mySFR.sfFile; return !!mySFR.sfGood; } #endif // Specify default options for dialog box anErr = NavGetDefaultDialogOptions(&dialogOptions); if (anErr == noErr) { // Adjust the options to fit our needs // Set default location option dialogOptions.dialogOptionFlags |= kNavSelectDefaultLocation; dialogOptions.dialogOptionFlags |= kNavNoTypePopup; // Clear preview option dialogOptions.dialogOptionFlags ^= kNavAllowPreviews; // make descriptor for default location anErr = AECreateDesc(typeFSS, defaultLocationfssPtr, sizeof(*defaultLocationfssPtr), &defaultLocation ); if (anErr == noErr) { // Get ''open'' resource. A nil handle being returned is OK, // this simply means no automatic file filtering. NavTypeListHandle typeList = (NavTypeListHandle)GetResource( ''open'', 128); NavReplyRecord reply; // Call NavGetFile() with specified options and // declare our app-defined functions and type list anErr = NavGetFile (&defaultLocation, &reply, &dialogOptions, eventProc, nil, filterProc, typeList, nil); if (anErr == noErr && reply.validRecord) { // Deal with multiple file selection long count; anErr = AECountItems(&(reply.selection), &count); // Set up index for file list if (anErr == noErr) { long index; for (index = 1; index <= 1; index++) { AEKeyword theKeyword; DescType actualType; Size actualSize; // Get a pointer to selected file anErr = AEGetNthPtr(&(reply.selection), index, typeFSS, &theKeyword, &actualType,documentFSSpec, sizeof(FSSpec), &actualSize); } } // Dispose of NavReplyRecord, resources, descriptors anErr = NavDisposeReply(&reply); } if (typeList !!= NULL) { ReleaseResource( (Handle)typeList); } (void) AEDisposeDesc(&defaultLocation); } } DisposeNavEventUPP(eventProc); DisposeNavObjectFilterUPP(filterProc); return anErr; } pascal void findImageEventProc(NavEventCallbackMessage callBackSelector, NavCBRecPtr callBackParms, NavCallBackUserData callBackUD) { // WindowPtr window = // (WindowPtr)callBackParms->eventData.event->message; switch (callBackSelector) { case kNavCBEvent: switch (((callBackParms->eventData) .eventDataParms).event->what) { case updateEvt: // MyHandleUpdateEvent(window, // (EventRecord*)callBackParms->eventData.event); break; } break; } } pascal Boolean findImageFilterProc(AEDesc* theItem, void* info, NavCallBackUserData callBackUD, NavFilterModes filterMode) { OSErr theErr = noErr; Boolean display = true; NavFileOrFolderInfo* theInfo = (NavFileOrFolderInfo*)info; if (theItem->descriptorType == typeFSS) if (!!theInfo->isFolder) if (theInfo->fileAndFolder.fileInfo.finderInfo.fdType !!= ''STim'') display = false; return display; } #if !!TARGET_API_MAC_CARBON // this dialog hook for System 7 std file selects // the file specified by the hookRecord supplied as userData pascal short DialogHook(short item, DialogPtr theDialog, void *userData) { HookRecordPtr hookRecPtr; hookRecPtr = (HookRecordPtr) userData; // hookRecPtr->itemSpec points to the FSSpec of the item to be selected // hookRecPtr->theSFR points to the standard file reply record // make sure we''re dealing with the proper dialog if (GetWRefCon(theDialog) == sfMainDialogRefCon) { // just when opening the dialog... if (item == sfHookFirstCall) { // make the reply record hold the spec of the specified item hookRecPtr->theSFR->sfFile = *hookRecPtr->itemSpec; // ThereÕs a gotcha in Standard File when using sfHookChangeSelection. // Even though New Inside Macintosh: Files has a sample that doesn''t set // the sfScript field, it should be set, or the last object in the // selected directory will always be selected. hookRecPtr->theSFR->sfScript = smSystemScript; // tell std file to change the selection to that item item = sfHookChangeSelection; } } return item; } #endif #ifndef __MPW__ #include #include int fflush(FILE * file) { fpos_t position; /* mm 970708 */ ParamBlockRec pb; OSErr error; if (!!file) return(__flush_all()); if (file->state.error || file->mode.file_kind == __closed_file) return(EOF); if (file->mode.io_mode == __read) /* mm 980430 */ return 0; /* mm 980430 */ if (file->state.io_state >= __rereading) file->state.io_state = __reading; if (file->state.io_state == __reading) file->buffer_len = 0; if (file->state.io_state !!= __writing) { file->state.io_state = __neutral; /* mm 970905 */ return(0); } #ifndef _No_Disk_File_OS_Support if (file->mode.file_kind !!= __disk_file || (position = ftell(file)) < 0) position = 0; #else position = 0; #endif if (__flush_buffer(file, NULL)) { set_error(file); return(EOF); } file->state.io_state = __neutral; file->position = position; file->buffer_len = 0; pb.ioParam.ioRefNum = file->handle; error = PBFlushFileSync(&pb); return(0); } #endif '! ! !InterpreterSupportCode class methodsFor: 'source files' stamp: 'JMM 2/18/2001 20:46'! macWindowFile ^ '#include "sq.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifndef __MPW__ #include #endif #include #include #ifndef __MPW__ #include #endif #include #include #include #include #include /*** Compilation Options: * * define PLUGIN to compile code for Netscape or IE Plug-in * define MAKE_PROFILE to compile code for profiling * ***/ //#define PLUGIN //#define MAKE_PROFILE //#define IHAVENOHEAD //Aug 7th 2000,JMM Added logic for interrupt driven dispatching //Sept 1st 2000, JMM fix problem with modifier information being passed back incorrectly. //Sept 1st 2000, JMM use floating point for time versus 64bit math (faster!!) //Sept 1st 2000, JMM watch mouse movement foreground only, ignore when squeak in background. //Sept 18th 2000, JMM fix to cmpSize //Sept 19th 2000, JMM Sept 1st fix to keyboard modifier info broke cmd shift //Sept 27 2000, JMM fix to documentPath //Nov 13 2000, JMM logic to read/write image from VM. //Nov 22 2000, JMM Bob Arning found a bug with the duplicate mouse event logic (we were altering the event then recording the altered value) //Nov 30 2000, JMM Use Open Transport clock versus upTime, solves some issues for jitter and it''s faster //Dec 5th 2000, JMM poll 60 times a second... do event polling via checkForInterrupts and drive semaphore //Dec 6th 2000, JMM added logic to interface with power manger (1997 was there but dropped..., back again for ibooks) //Jan 14th 2001, KG Did some carbon porting. //Feb 2nd 2001, JMM V3.0 added zoom window support, full path support //Feb 2nd 2001, JMM V3.04 do an open window dialog at startup time if no image file //Feb 14th 2001, JMM V3.06 don''t cache image read/writes //Feb 17th 2001, JMM V3.07 fix OS bug in 7.5.5 on activate event #if TARGET_API_MAC_CARBON #define EnableMenuItemCarbon(m1,v1) EnableMenuItem(m1,v1); #define DisableMenuItemCarbon(m1,v1) DisableMenuItem(m1,v1); #else #ifndef NewAEEventHandlerUPP #define NewAEEventHandlerUPP NewAEEventHandlerProc #endif #define EnableMenuItemCarbon(m1,v1) EnableItem(m1,v1); #define DisableMenuItemCarbon(m1,v1) DisableItem(m1,v1); inline Rect *GetPortBounds(CGrafPtr w,Rect *r) { *r = w->portRect; return &w->portRect;} inline Rect *GetRegionBounds(RgnHandle region, Rect * bounds) { *bounds = (*region)->rgnBBox; return &(*region)->rgnBBox;} inline BitMap *GetQDGlobalsScreenBits(BitMap *bm){*bm = qd.screenBits; return &qd.screenBits; } inline BitMap * GetPortBitMapForCopyBits (CGrafPtr w) { return &((GrafPtr)w)->portBits;} inline pascal long InvalWindowRect(WindowRef window, const Rect * bounds) {InvalRect (bounds);} #endif /*** Enumerations ***/ enum { appleID = 1, fileID, editID }; enum { quitItem = 1 }; /* The following prototype is missing from the CW11 header files: */ pascal void ExitToShell(void); /*** Variables -- Imported from Browser Plugin Module ***/ #ifdef PLUGIN extern int pluginArgCount; extern char *pluginArgName[100]; extern char *pluginArgValue[100]; #endif /*** Variables -- Imported from Virtual Machine ***/ extern int fullScreenFlag; extern int interruptCheckCounter; extern int interruptKeycode; extern int interruptPending; /* set to true by recordKeystroke if interrupt key is pressed */ extern unsigned char *memory; extern int savedWindowSize; /* set from header when image file is loaded */ /*** Variables -- image and path names ***/ #define IMAGE_NAME_SIZE 300 char imageName[IMAGE_NAME_SIZE + 1]; /* full path to image file */ #define SHORTIMAGE_NAME_SIZE 100 char shortImageName[SHORTIMAGE_NAME_SIZE + 1]; /* just the image file name */ #define DOCUMENT_NAME_SIZE 300 char documentName[DOCUMENT_NAME_SIZE + 1]; /* full path to document file */ #define VMPATH_SIZE 300 char vmPath[VMPATH_SIZE + 1]; /* full path to interpreter''s directory */ /*** Variables -- Mac Related ***/ MenuHandle appleMenu = nil; MenuHandle editMenu = nil; int menuBarHeight = 20; RgnHandle menuBarRegion = nil; /* if non-nil, then menu bar has been hidden */ MenuHandle fileMenu = nil; CTabHandle stColorTable = nil; PixMapHandle stPixMap = nil; WindowPtr stWindow = nil; OTTimeStamp timeStart; Boolean gTapPowerManager=false; Boolean gDisablePowerManager=false; const long gDisableIdleTickCount=60*10; long gDisableIdleTickLimit=0; Boolean gThreadManager=false; ThreadID gSqueakThread = kNoThreadID; ThreadEntryUPP gSqueakThreadUPP; Boolean gAllowAccessToFilePlease=false; #ifdef __MPW__ QDGlobals qd; #endif /*** Variables -- Event Recording ***/ #define MAX_EVENT_BUFFER 1024 int inputSemaphoreIndex = 0;/* if non-zero the event semaphore index */ sqInputEvent eventBuffer[MAX_EVENT_BUFFER]; int eventBufferGet = 0; int eventBufferPut = 0; /* declaration of the event message hook */ typedef int (*eventMessageHook)(EventRecord* event); eventMessageHook messageHook = NULL; eventMessageHook postMessageHook = NULL; #define KEYBUF_SIZE 64 int keyBuf[KEYBUF_SIZE]; /* circular buffer */ int keyBufGet = 0; /* index of next item of keyBuf to read */ int keyBufPut = 0; /* index of next item of keyBuf to write */ int keyBufOverflows = 0; /* number of characters dropped */ int buttonState = 0; /* mouse button and modifier state when mouse button went down or 0 if not pressed */ int cachedButtonState = 0; /* buffered mouse button and modifier state for last mouse click even if button has since gone up; this cache is kept until the next time ioGetButtonState() is called to avoid missing short clicks */ Point savedMousePosition; /* mouse position when window is inactive */ int windowActive = true; /* true if the Squeak window is the active window */ /* This table maps the 5 Macintosh modifier key bits to 4 Squeak modifier bits. (The Mac shift and caps lock keys are both mapped to the single Squeak shift bit). Mac bits: