1 /* This is a generated file, edit the .stub.php file instead.
2 * Stub hash: c14e6403cfd75718156b409dc476f088aa0b5540 */
3
4 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3___construct, 0, 0, 1)
5 ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
6 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE")
7 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, encryptionKey, IS_STRING, 0, "\"\"")
8 ZEND_END_ARG_INFO()
9
10 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3_open, 0, 1, IS_VOID, 0)
11 ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
12 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE")
13 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, encryptionKey, IS_STRING, 0, "\"\"")
14 ZEND_END_ARG_INFO()
15
16 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3_close, 0, 0, 0)
17 ZEND_END_ARG_INFO()
18
19 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3_version, 0, 0, IS_ARRAY, 0)
20 ZEND_END_ARG_INFO()
21
22 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3_lastInsertRowID, 0, 0, IS_LONG, 0)
23 ZEND_END_ARG_INFO()
24
25 #define arginfo_class_SQLite3_lastErrorCode arginfo_class_SQLite3_lastInsertRowID
26
27 #define arginfo_class_SQLite3_lastExtendedErrorCode arginfo_class_SQLite3_lastInsertRowID
28
29 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3_lastErrorMsg, 0, 0, IS_STRING, 0)
30 ZEND_END_ARG_INFO()
31
32 #define arginfo_class_SQLite3_changes arginfo_class_SQLite3_lastInsertRowID
33
34 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3_busyTimeout, 0, 1, _IS_BOOL, 0)
35 ZEND_ARG_TYPE_INFO(0, milliseconds, IS_LONG, 0)
36 ZEND_END_ARG_INFO()
37
38 #if !defined(SQLITE_OMIT_LOAD_EXTENSION)
39 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3_loadExtension, 0, 1, _IS_BOOL, 0)
40 ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0)
41 ZEND_END_ARG_INFO()
42 #endif
43
44 #if SQLITE_VERSION_NUMBER >= 3006011
45 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3_backup, 0, 1, _IS_BOOL, 0)
46 ZEND_ARG_OBJ_INFO(0, destination, SQLite3, 0)
47 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, sourceDatabase, IS_STRING, 0, "\"main\"")
48 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, destinationDatabase, IS_STRING, 0, "\"main\"")
49 ZEND_END_ARG_INFO()
50 #endif
51
52 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3_escapeString, 0, 1, IS_STRING, 0)
53 ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
54 ZEND_END_ARG_INFO()
55
56 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_SQLite3_prepare, 0, 1, SQLite3Stmt, MAY_BE_FALSE)
57 ZEND_ARG_TYPE_INFO(0, query, IS_STRING, 0)
58 ZEND_END_ARG_INFO()
59
60 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3_exec, 0, 1, _IS_BOOL, 0)
61 ZEND_ARG_TYPE_INFO(0, query, IS_STRING, 0)
62 ZEND_END_ARG_INFO()
63
64 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_SQLite3_query, 0, 1, SQLite3Result, MAY_BE_FALSE)
65 ZEND_ARG_TYPE_INFO(0, query, IS_STRING, 0)
66 ZEND_END_ARG_INFO()
67
68 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3_querySingle, 0, 1, IS_MIXED, 0)
69 ZEND_ARG_TYPE_INFO(0, query, IS_STRING, 0)
70 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, entireRow, _IS_BOOL, 0, "false")
71 ZEND_END_ARG_INFO()
72
73 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3_createFunction, 0, 2, _IS_BOOL, 0)
74 ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0)
75 ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
76 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, argCount, IS_LONG, 0, "-1")
77 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "0")
78 ZEND_END_ARG_INFO()
79
80 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3_createAggregate, 0, 3, _IS_BOOL, 0)
81 ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0)
82 ZEND_ARG_TYPE_INFO(0, stepCallback, IS_CALLABLE, 0)
83 ZEND_ARG_TYPE_INFO(0, finalCallback, IS_CALLABLE, 0)
84 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, argCount, IS_LONG, 0, "-1")
85 ZEND_END_ARG_INFO()
86
87 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3_createCollation, 0, 2, _IS_BOOL, 0)
88 ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0)
89 ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
90 ZEND_END_ARG_INFO()
91
92 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3_openBlob, 0, 0, 3)
93 ZEND_ARG_TYPE_INFO(0, table, IS_STRING, 0)
94 ZEND_ARG_TYPE_INFO(0, column, IS_STRING, 0)
95 ZEND_ARG_TYPE_INFO(0, rowid, IS_LONG, 0)
96 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, database, IS_STRING, 0, "\"main\"")
97 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "SQLITE3_OPEN_READONLY")
98 ZEND_END_ARG_INFO()
99
100 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3_enableExceptions, 0, 0, _IS_BOOL, 0)
101 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, enable, _IS_BOOL, 0, "false")
102 ZEND_END_ARG_INFO()
103
104 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3_enableExtendedResultCodes, 0, 0, _IS_BOOL, 0)
105 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, enable, _IS_BOOL, 0, "true")
106 ZEND_END_ARG_INFO()
107
108 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3_setAuthorizer, 0, 1, _IS_BOOL, 0)
109 ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 1)
110 ZEND_END_ARG_INFO()
111
112 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3Stmt___construct, 0, 0, 2)
113 ZEND_ARG_OBJ_INFO(0, sqlite3, SQLite3, 0)
114 ZEND_ARG_TYPE_INFO(0, query, IS_STRING, 0)
115 ZEND_END_ARG_INFO()
116
117 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3Stmt_bindParam, 0, 2, _IS_BOOL, 0)
118 ZEND_ARG_TYPE_MASK(0, param, MAY_BE_STRING|MAY_BE_LONG, NULL)
119 ZEND_ARG_TYPE_INFO(1, var, IS_MIXED, 0)
120 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "SQLITE3_TEXT")
121 ZEND_END_ARG_INFO()
122
123 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3Stmt_bindValue, 0, 2, _IS_BOOL, 0)
124 ZEND_ARG_TYPE_MASK(0, param, MAY_BE_STRING|MAY_BE_LONG, NULL)
125 ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0)
126 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "SQLITE3_TEXT")
127 ZEND_END_ARG_INFO()
128
129 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SQLite3Stmt_clear, 0, 0, _IS_BOOL, 0)
130 ZEND_END_ARG_INFO()
131
132 #define arginfo_class_SQLite3Stmt_close arginfo_class_SQLite3Stmt_clear
133
134 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_SQLite3Stmt_execute, 0, 0, SQLite3Result, MAY_BE_FALSE)
135 ZEND_END_ARG_INFO()
136
137 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_SQLite3Stmt_getSQL, 0, 0, MAY_BE_STRING|MAY_BE_FALSE)
138 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, expand, _IS_BOOL, 0, "false")
139 ZEND_END_ARG_INFO()
140
141 #define arginfo_class_SQLite3Stmt_paramCount arginfo_class_SQLite3_lastInsertRowID
142
143 #define arginfo_class_SQLite3Stmt_readOnly arginfo_class_SQLite3Stmt_clear
144
145 #define arginfo_class_SQLite3Stmt_reset arginfo_class_SQLite3Stmt_clear
146
147 #define arginfo_class_SQLite3Result___construct arginfo_class_SQLite3_close
148
149 #define arginfo_class_SQLite3Result_numColumns arginfo_class_SQLite3_lastInsertRowID
150
151 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_SQLite3Result_columnName, 0, 1, MAY_BE_STRING|MAY_BE_FALSE)
152 ZEND_ARG_TYPE_INFO(0, column, IS_LONG, 0)
153 ZEND_END_ARG_INFO()
154
155 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_SQLite3Result_columnType, 0, 1, MAY_BE_LONG|MAY_BE_FALSE)
156 ZEND_ARG_TYPE_INFO(0, column, IS_LONG, 0)
157 ZEND_END_ARG_INFO()
158
159 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_SQLite3Result_fetchArray, 0, 0, MAY_BE_ARRAY|MAY_BE_FALSE)
160 ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "SQLITE3_BOTH")
161 ZEND_END_ARG_INFO()
162
163 #define arginfo_class_SQLite3Result_reset arginfo_class_SQLite3Stmt_clear
164
165 #define arginfo_class_SQLite3Result_finalize arginfo_class_SQLite3_close
166
167
168 ZEND_METHOD(SQLite3, open);
169 ZEND_METHOD(SQLite3, close);
170 ZEND_METHOD(SQLite3, version);
171 ZEND_METHOD(SQLite3, lastInsertRowID);
172 ZEND_METHOD(SQLite3, lastErrorCode);
173 ZEND_METHOD(SQLite3, lastExtendedErrorCode);
174 ZEND_METHOD(SQLite3, lastErrorMsg);
175 ZEND_METHOD(SQLite3, changes);
176 ZEND_METHOD(SQLite3, busyTimeout);
177 #if !defined(SQLITE_OMIT_LOAD_EXTENSION)
178 ZEND_METHOD(SQLite3, loadExtension);
179 #endif
180 #if SQLITE_VERSION_NUMBER >= 3006011
181 ZEND_METHOD(SQLite3, backup);
182 #endif
183 ZEND_METHOD(SQLite3, escapeString);
184 ZEND_METHOD(SQLite3, prepare);
185 ZEND_METHOD(SQLite3, exec);
186 ZEND_METHOD(SQLite3, query);
187 ZEND_METHOD(SQLite3, querySingle);
188 ZEND_METHOD(SQLite3, createFunction);
189 ZEND_METHOD(SQLite3, createAggregate);
190 ZEND_METHOD(SQLite3, createCollation);
191 ZEND_METHOD(SQLite3, openBlob);
192 ZEND_METHOD(SQLite3, enableExceptions);
193 ZEND_METHOD(SQLite3, enableExtendedResultCodes);
194 ZEND_METHOD(SQLite3, setAuthorizer);
195 ZEND_METHOD(SQLite3Stmt, __construct);
196 ZEND_METHOD(SQLite3Stmt, bindParam);
197 ZEND_METHOD(SQLite3Stmt, bindValue);
198 ZEND_METHOD(SQLite3Stmt, clear);
199 ZEND_METHOD(SQLite3Stmt, close);
200 ZEND_METHOD(SQLite3Stmt, execute);
201 ZEND_METHOD(SQLite3Stmt, getSQL);
202 ZEND_METHOD(SQLite3Stmt, paramCount);
203 ZEND_METHOD(SQLite3Stmt, readOnly);
204 ZEND_METHOD(SQLite3Stmt, reset);
205 ZEND_METHOD(SQLite3Result, __construct);
206 ZEND_METHOD(SQLite3Result, numColumns);
207 ZEND_METHOD(SQLite3Result, columnName);
208 ZEND_METHOD(SQLite3Result, columnType);
209 ZEND_METHOD(SQLite3Result, fetchArray);
210 ZEND_METHOD(SQLite3Result, reset);
211 ZEND_METHOD(SQLite3Result, finalize);
212
213
214 static const zend_function_entry class_SQLite3_methods[] = {
215 ZEND_MALIAS(SQLite3, __construct, open, arginfo_class_SQLite3___construct, ZEND_ACC_PUBLIC)
216 ZEND_ME(SQLite3, open, arginfo_class_SQLite3_open, ZEND_ACC_PUBLIC)
217 ZEND_ME(SQLite3, close, arginfo_class_SQLite3_close, ZEND_ACC_PUBLIC)
218 ZEND_ME(SQLite3, version, arginfo_class_SQLite3_version, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
219 ZEND_ME(SQLite3, lastInsertRowID, arginfo_class_SQLite3_lastInsertRowID, ZEND_ACC_PUBLIC)
220 ZEND_ME(SQLite3, lastErrorCode, arginfo_class_SQLite3_lastErrorCode, ZEND_ACC_PUBLIC)
221 ZEND_ME(SQLite3, lastExtendedErrorCode, arginfo_class_SQLite3_lastExtendedErrorCode, ZEND_ACC_PUBLIC)
222 ZEND_ME(SQLite3, lastErrorMsg, arginfo_class_SQLite3_lastErrorMsg, ZEND_ACC_PUBLIC)
223 ZEND_ME(SQLite3, changes, arginfo_class_SQLite3_changes, ZEND_ACC_PUBLIC)
224 ZEND_ME(SQLite3, busyTimeout, arginfo_class_SQLite3_busyTimeout, ZEND_ACC_PUBLIC)
225 #if !defined(SQLITE_OMIT_LOAD_EXTENSION)
226 ZEND_ME(SQLite3, loadExtension, arginfo_class_SQLite3_loadExtension, ZEND_ACC_PUBLIC)
227 #endif
228 #if SQLITE_VERSION_NUMBER >= 3006011
229 ZEND_ME(SQLite3, backup, arginfo_class_SQLite3_backup, ZEND_ACC_PUBLIC)
230 #endif
231 ZEND_ME(SQLite3, escapeString, arginfo_class_SQLite3_escapeString, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
232 ZEND_ME(SQLite3, prepare, arginfo_class_SQLite3_prepare, ZEND_ACC_PUBLIC)
233 ZEND_ME(SQLite3, exec, arginfo_class_SQLite3_exec, ZEND_ACC_PUBLIC)
234 ZEND_ME(SQLite3, query, arginfo_class_SQLite3_query, ZEND_ACC_PUBLIC)
235 ZEND_ME(SQLite3, querySingle, arginfo_class_SQLite3_querySingle, ZEND_ACC_PUBLIC)
236 ZEND_ME(SQLite3, createFunction, arginfo_class_SQLite3_createFunction, ZEND_ACC_PUBLIC)
237 ZEND_ME(SQLite3, createAggregate, arginfo_class_SQLite3_createAggregate, ZEND_ACC_PUBLIC)
238 ZEND_ME(SQLite3, createCollation, arginfo_class_SQLite3_createCollation, ZEND_ACC_PUBLIC)
239 ZEND_ME(SQLite3, openBlob, arginfo_class_SQLite3_openBlob, ZEND_ACC_PUBLIC)
240 ZEND_ME(SQLite3, enableExceptions, arginfo_class_SQLite3_enableExceptions, ZEND_ACC_PUBLIC)
241 ZEND_ME(SQLite3, enableExtendedResultCodes, arginfo_class_SQLite3_enableExtendedResultCodes, ZEND_ACC_PUBLIC)
242 ZEND_ME(SQLite3, setAuthorizer, arginfo_class_SQLite3_setAuthorizer, ZEND_ACC_PUBLIC)
243 ZEND_FE_END
244 };
245
246
247 static const zend_function_entry class_SQLite3Stmt_methods[] = {
248 ZEND_ME(SQLite3Stmt, __construct, arginfo_class_SQLite3Stmt___construct, ZEND_ACC_PRIVATE)
249 ZEND_ME(SQLite3Stmt, bindParam, arginfo_class_SQLite3Stmt_bindParam, ZEND_ACC_PUBLIC)
250 ZEND_ME(SQLite3Stmt, bindValue, arginfo_class_SQLite3Stmt_bindValue, ZEND_ACC_PUBLIC)
251 ZEND_ME(SQLite3Stmt, clear, arginfo_class_SQLite3Stmt_clear, ZEND_ACC_PUBLIC)
252 ZEND_ME(SQLite3Stmt, close, arginfo_class_SQLite3Stmt_close, ZEND_ACC_PUBLIC)
253 ZEND_ME(SQLite3Stmt, execute, arginfo_class_SQLite3Stmt_execute, ZEND_ACC_PUBLIC)
254 ZEND_ME(SQLite3Stmt, getSQL, arginfo_class_SQLite3Stmt_getSQL, ZEND_ACC_PUBLIC)
255 ZEND_ME(SQLite3Stmt, paramCount, arginfo_class_SQLite3Stmt_paramCount, ZEND_ACC_PUBLIC)
256 ZEND_ME(SQLite3Stmt, readOnly, arginfo_class_SQLite3Stmt_readOnly, ZEND_ACC_PUBLIC)
257 ZEND_ME(SQLite3Stmt, reset, arginfo_class_SQLite3Stmt_reset, ZEND_ACC_PUBLIC)
258 ZEND_FE_END
259 };
260
261
262 static const zend_function_entry class_SQLite3Result_methods[] = {
263 ZEND_ME(SQLite3Result, __construct, arginfo_class_SQLite3Result___construct, ZEND_ACC_PRIVATE)
264 ZEND_ME(SQLite3Result, numColumns, arginfo_class_SQLite3Result_numColumns, ZEND_ACC_PUBLIC)
265 ZEND_ME(SQLite3Result, columnName, arginfo_class_SQLite3Result_columnName, ZEND_ACC_PUBLIC)
266 ZEND_ME(SQLite3Result, columnType, arginfo_class_SQLite3Result_columnType, ZEND_ACC_PUBLIC)
267 ZEND_ME(SQLite3Result, fetchArray, arginfo_class_SQLite3Result_fetchArray, ZEND_ACC_PUBLIC)
268 ZEND_ME(SQLite3Result, reset, arginfo_class_SQLite3Result_reset, ZEND_ACC_PUBLIC)
269 ZEND_ME(SQLite3Result, finalize, arginfo_class_SQLite3Result_finalize, ZEND_ACC_PUBLIC)
270 ZEND_FE_END
271 };
272
register_class_SQLite3(void)273 static zend_class_entry *register_class_SQLite3(void)
274 {
275 zend_class_entry ce, *class_entry;
276
277 INIT_CLASS_ENTRY(ce, "SQLite3", class_SQLite3_methods);
278 class_entry = zend_register_internal_class_ex(&ce, NULL);
279 class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE;
280
281 return class_entry;
282 }
283
register_class_SQLite3Stmt(void)284 static zend_class_entry *register_class_SQLite3Stmt(void)
285 {
286 zend_class_entry ce, *class_entry;
287
288 INIT_CLASS_ENTRY(ce, "SQLite3Stmt", class_SQLite3Stmt_methods);
289 class_entry = zend_register_internal_class_ex(&ce, NULL);
290 class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE;
291
292 return class_entry;
293 }
294
register_class_SQLite3Result(void)295 static zend_class_entry *register_class_SQLite3Result(void)
296 {
297 zend_class_entry ce, *class_entry;
298
299 INIT_CLASS_ENTRY(ce, "SQLite3Result", class_SQLite3Result_methods);
300 class_entry = zend_register_internal_class_ex(&ce, NULL);
301 class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE;
302
303 return class_entry;
304 }
305