gologin 1.0.49 → 1.0.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/browser-user-data-manager.js +4 -1
- package/cookies-manager.js +14 -5
- package/gologin.js +4 -3
- package/package.json +1 -1
- package/profile_export_example.csv +2 -0
package/README.md
CHANGED
|
@@ -103,7 +103,10 @@ For debugging use `DEBUG=* node example.js` command
|
|
|
103
103
|
To use GoLogin with Selenium see `selenium/example.js`
|
|
104
104
|
|
|
105
105
|
## Full GoLogin API
|
|
106
|
-
<a href="https://api.gologin.com/docs" target="_blank">
|
|
106
|
+
**Swagger:** <a href="https://api.gologin.com/docs" target="_blank">link here</a>
|
|
107
|
+
|
|
108
|
+
**Postman:** <a href="https://documenter.getpostman.com/view/21126834/Uz5GnvaL" target="_blank">link here</a>
|
|
109
|
+
|
|
107
110
|
|
|
108
111
|
## For local profiles
|
|
109
112
|
|
|
@@ -113,7 +113,10 @@ class BrowserUserDataManager {
|
|
|
113
113
|
|
|
114
114
|
const fileContent = await readFile(path.resolve(__dirname, 'fonts_config'), 'utf-8');
|
|
115
115
|
const result = fileContent.replace(/\$\$GOLOGIN_FONTS\$\$/g, path.join(profilePath, FONTS_DIR_NAME));
|
|
116
|
-
|
|
116
|
+
|
|
117
|
+
const defaultFolderPath = path.join(profilePath, 'Default');
|
|
118
|
+
await mkdir(defaultFolderPath, { recursive: true });
|
|
119
|
+
await writeFile(path.join(defaultFolderPath, 'fonts_config'), result);
|
|
117
120
|
}
|
|
118
121
|
|
|
119
122
|
static setExtPathsAndRemoveDeleted(settings = {}, profileExtensionsCheckRes = []) {
|
package/cookies-manager.js
CHANGED
|
@@ -29,8 +29,8 @@ class CookiesManager {
|
|
|
29
29
|
const chunckedCookiesArr = this.chunk(cookiesArr, MAX_SQLITE_VARIABLES);
|
|
30
30
|
|
|
31
31
|
return chunckedCookiesArr.map((cookies) => {
|
|
32
|
-
const queryPlaceholders = cookies.map(() => '(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)').join(', ');
|
|
33
|
-
const query = `insert or replace into cookies (creation_utc,
|
|
32
|
+
const queryPlaceholders = cookies.map(() => '(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)').join(', ');
|
|
33
|
+
const query = `insert or replace into cookies (creation_utc, host_key, top_frame_site_key, name, value, encrypted_value, path, expires_utc, is_secure, is_httponly, last_access_utc, has_expires, is_persistent, priority, samesite, source_scheme, source_port, is_same_party, last_update_utc) values ${queryPlaceholders}`;
|
|
34
34
|
const queryParams = cookies.flatMap((cookie) => {
|
|
35
35
|
const creationDate = cookie.creationDate ? cookie.creationDate : this.unixToLDAP(todayUnix);
|
|
36
36
|
let expirationDate = cookie.session ? 0 : this.unixToLDAP(cookie.expirationDate);
|
|
@@ -38,6 +38,10 @@ class CookiesManager {
|
|
|
38
38
|
const samesite = Object.keys(SAME_SITE).find((key) => SAME_SITE[key] === (cookie.sameSite || '-1'));
|
|
39
39
|
const isSecure =
|
|
40
40
|
cookie.name.startsWith('__Host-') || cookie.name.startsWith('__Secure-') ? 1 : Number(cookie.secure);
|
|
41
|
+
|
|
42
|
+
const sourceScheme = isSecure === 1 ? 2 : 1;
|
|
43
|
+
const sourcePort = isSecure === 1 ? 443 : 80;
|
|
44
|
+
// eslint-disable-next-line no-undefined
|
|
41
45
|
let isPersistent = [undefined, null].includes(cookie.session)
|
|
42
46
|
? Number(expirationDate !== 0)
|
|
43
47
|
: Number(!cookie.session);
|
|
@@ -49,19 +53,24 @@ class CookiesManager {
|
|
|
49
53
|
|
|
50
54
|
return [
|
|
51
55
|
creationDate,
|
|
52
|
-
'', // top_frame_site_key
|
|
53
56
|
cookie.domain,
|
|
57
|
+
'', // top_frame_site_key
|
|
54
58
|
cookie.name,
|
|
55
59
|
'', // value
|
|
60
|
+
encryptedValue,
|
|
56
61
|
cookie.path,
|
|
57
62
|
expirationDate,
|
|
58
63
|
isSecure,
|
|
59
64
|
Number(cookie.httpOnly),
|
|
60
65
|
0, // last_access_utc
|
|
66
|
+
expirationDate === 0 ? 0 : 1, // has_expires
|
|
61
67
|
isPersistent,
|
|
62
|
-
|
|
68
|
+
1, // default priority value (https://github.com/chromium/chromium/blob/main/net/cookies/cookie_constants.h)
|
|
63
69
|
samesite,
|
|
64
|
-
|
|
70
|
+
sourceScheme,
|
|
71
|
+
sourcePort,
|
|
72
|
+
0, // is_same_party
|
|
73
|
+
0, // last_update_utc
|
|
65
74
|
];
|
|
66
75
|
});
|
|
67
76
|
|
package/gologin.js
CHANGED
|
@@ -484,6 +484,7 @@ class GoLogin {
|
|
|
484
484
|
};
|
|
485
485
|
profile.geoLocation = this.getGeolocationParams(profileGeolocation, tzGeoLocation);
|
|
486
486
|
profile.name = name;
|
|
487
|
+
profile.profile_id = this.profile_id;
|
|
487
488
|
|
|
488
489
|
profile.webRtc = {
|
|
489
490
|
mode: _.get(profile, 'webRTC.mode') === 'alerted' ? 'public' : _.get(profile, 'webRTC.mode'),
|
|
@@ -749,7 +750,7 @@ class GoLogin {
|
|
|
749
750
|
this.port = remote_debugging_port;
|
|
750
751
|
|
|
751
752
|
const ORBITA_BROWSER = this.executablePath || this.browserChecker.getOrbitaPath;
|
|
752
|
-
|
|
753
|
+
debug(`ORBITA_BROWSER=${ORBITA_BROWSER}`)
|
|
753
754
|
const env = {};
|
|
754
755
|
Object.keys(process.env).forEach((key) => {
|
|
755
756
|
env[key] = process.env[key];
|
|
@@ -1045,11 +1046,11 @@ class GoLogin {
|
|
|
1045
1046
|
});
|
|
1046
1047
|
|
|
1047
1048
|
if (response.body.statusCode === 400) {
|
|
1048
|
-
throw new Error(`gologin failed account creation with status code, ${
|
|
1049
|
+
throw new Error(`gologin failed account creation with status code, ${response.statusCode} DATA ${JSON.stringify(response.body.message)}`);
|
|
1049
1050
|
}
|
|
1050
1051
|
|
|
1051
1052
|
if (response.body.statusCode === 500) {
|
|
1052
|
-
throw new Error(`gologin failed account creation with status code, ${
|
|
1053
|
+
throw new Error(`gologin failed account creation with status code, ${response.statusCode}`);
|
|
1053
1054
|
}
|
|
1054
1055
|
debug(JSON.stringify(response.body));
|
|
1055
1056
|
return response.body.id;
|
package/package.json
CHANGED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
_id,name,notes,proxy,os,isM1,timezone.enabled,timezone.fillBasedOnIp,timezone.timezone,geolocation.accuracy,geolocation.customize,geolocation.enabled,geolocation.fillBasedOnIp,geolocation.latitude,geolocation.longitude,geolocation.mode,cookies,webGLMetadata.renderer,webGLMetadata.vendor,proxy.autoProxyRegion,proxy.torProxyRegion,audioContext.mode,audioContext.noise,browserType,canvas.mode,canvas.noise,chromeExtensions,clientRects.mode,clientRects.noise,devicePixelRatio,dns,extensions.enabled,extensions.preloadCustom,fonts.enableDomRect,fonts.enableMasking,fonts.families,googleServicesEnabled,lockEnabled,mediaDevices.audioInputs,mediaDevices.audioOutputs,mediaDevices.enableMasking,mediaDevices.uid,mediaDevices.videoInputs,navigator.deviceMemory,navigator.hardwareConcurrency,navigator.language,navigator.maxTouchPoints,navigator.platform,navigator.resolution,navigator.userAgent,plugins.enableFlash,plugins.enableVulnerable,proxyEnabled,startUrl,storage.bookmarks,storage.extensions,storage.history,storage.local,storage.passwords,storage.session,updateUALastChosenBrowserV,userChromeExtensions,webGL.getClientRectsNoise,webGL.mode,webGL.noise,webGLMetadata.mode,webRTC.customize,webRTC.enabled,webRTC.fillBasedOnIp,webRTC.localIpMasking,webRTC.localIps,webRTC.mode,webRTC.publicIp,webglParams.antialiasing,webglParams.extensions,webglParams.glCanvas,webglParams.glParamValues,webglParams.shaiderPrecisionFormat,webglParams.supportedFunctions,webglParams.textureMaxAnisotropyExt
|
|
2
|
+
"62ceac1ebf5c65e7b9737e90",divine-moon,,gologin://us,lin,,true,true,,10,true,true,true,0,0,prompt,"[{""sameSite"":""unspecified"",""url"":""http://accounts.youtube.com/accounts"",""domain"":""accounts.youtube.com"",""name"":""CheckConnectionTempCookie418"",""value"":""583900"",""path"":""/accounts"",""secure"":false,""httpOnly"":false,""hostOnly"":true,""session"":false,""expirationDate"":1657711797},{""sameSite"":""no_restriction"",""url"":""https://google.com/"",""domain"":"".google.com"",""name"":""NID"",""value"":""511=pmrVWL6S6C04qFVhNbPwFk7VuJS3Q4GIbuYcwLeIBx8qxFPkraAGDr89L_9v1OxfCdvukGBBXLZzQ-Zx17qqxmKesRDAwk91GzT2uXWM6n_62DBXD0K5Dt2vBPtnVV15UA-AkE1ujldxEDI5FJjzN6RJ_VLYK3YaJax_Drdhp_I"",""path"":""/"",""secure"":true,""httpOnly"":true,""hostOnly"":false,""session"":false,""expirationDate"":1673522989.3169844},{""sameSite"":""unspecified"",""url"":""https://accounts.google.com/"",""domain"":""accounts.google.com"",""name"":""__Host-GAPS"",""value"":""1:XwbHhqGMbhJNRMbV1-WjwIE3WM3iqA:SGVT-tDrpcVPTnu3"",""path"":""/"",""secure"":true,""httpOnly"":true,""hostOnly"":true,""session"":false,""expirationDate"":1720783788.086744}]",,Google Inc.,us,us,noise,2.992842533846e-8,chrome,off,0.3554128,[],noise,5.40273,1.34375,,true,true,true,true,"[""AIGDT"",""AMGDT"",""Alef"",""Ani"",""AnjaliOldLipi"",""Caladea"",""Chilanka"",""David Libre"",""DejaVu Sans"",""DejaVu Sans Condensed"",""DejaVu Sans Light"",""DejaVu Serif"",""Droid Sans"",""Frank Ruehl"",""Frank Ruehl Libre"",""Frank Ruehl Libre Black"",""Frank Ruehl Libre Light"",""FreeMono"",""FreeSans"",""FreeSerif"",""Gargi"",""Gubbi"",""Jamrul"",""KacstBook"",""KacstLetter"",""KacstNaskh"",""Kalapi"",""Kalimati"",""Karumbi"",""Khmer OS"",""Khmer UI"",""Kinnari"",""Liberation Mono"",""Liberation Sans"",""Liberation Sans Narrow"",""Liberation Serif"",""Lohit Devanagari"",""Loma"",""Meera"",""Meera Inimai"",""Miriam"",""Miriam Fixed"",""Miriam Libre"",""Mitra Mono"",""Mukti Narrow"",""Nakula"",""Navuli"",""Nimbus Roman"",""Nimbus Sans"",""Nimbus Sans Narrow"",""Norasi"",""Noto Sans"",""Noto Sans Arabic UI"",""Noto Sans CJK JP"",""Noto Sans CJK KR"",""Noto Sans CJK SC"",""Noto Sans CJK TC"",""Noto Sans Mono CJK HK"",""Noto Sans Mono CJK KR"",""Noto Sans Mono CJK SC"",""Noto Sans Mono CJK TC"",""Noto Serif"",""Noto Serif CJK JP"",""Noto Serif CJK KR"",""Noto Serif CJK SC"",""Noto Serif Georgian"",""Oswald"",""Padauk"",""Pagul"",""Phetsarath OT"",""Pothana2000"",""Purisa"",""Roboto Light"",""Roboto Medium"",""Roboto Thin"",""Rubik"",""Sahadeva"",""Samyak Devanagari"",""Samyak Gujarati"",""Source Code Pro"",""Source Code Pro Black"",""Source Code Pro Extra Light"",""Source Code Pro Light"",""Source Code Pro Medium"",""Source Code Pro Semibold"",""Source Sans Pro"",""Source Sans Pro Black"",""Source Sans Pro Extra Light"",""Source Sans Pro Semibold"",""Source Serif Pro"",""Source Serif Pro Light"",""Source Serif Pro Semibold"",""Suruma"",""Tibetan Machine Uni"",""Tlwg Mono"",""Tlwg Typist"",""URW Gothic L"",""Uroob"",""Vemana2000""]",false,false,1,1,true,b04187cb002a40aeb4382c7c2d9cc3ccb395aee9613241af81df212fd0,0,8,8,"en-US,en;q=0.9",0,Linux x86_64,1600x900,"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36",true,true,true,https://iphey.com,true,true,true,true,true,true,,[],5.40273,noise,35.999,mask,true,true,true,true,[],alerted,,false,"[""ANGLE_instanced_arrays"",""EXT_blend_minmax"",""EXT_color_buffer_half_float"",""EXT_float_blend"",""EXT_frag_depth"",""EXT_sRGB"",""EXT_shader_texture_lod"",""EXT_texture_compression_rgtc"",""EXT_texture_filter_anisotropic"",""KHR_parallel_shader_compile"",""OES_element_index_uint"",""OES_fbo_render_mipmap"",""OES_standard_derivatives"",""OES_texture_float"",""OES_texture_float_linear"",""OES_texture_half_float"",""OES_texture_half_float_linear"",""OES_vertex_array_object"",""WEBGL_color_buffer_float"",""WEBGL_compressed_texture_astc"",""WEBGL_compressed_texture_s3tc"",""WEBGL_compressed_texture_s3tc_srgb"",""WEBGL_debug_renderer_info"",""WEBGL_debug_shaders"",""WEBGL_depth_texture"",""WEBGL_draw_buffers"",""WEBGL_lose_context"",""WEBGL_multi_draw"",""WEBKIT_EXT_texture_filter_anisotropic"",""WEBKIT_WEBGL_compressed_texture_s3tc"",""WEBKIT_WEBGL_depth_texture"",""WEBKIT_WEBGL_lose_context""]",webgl,"[{""name"":""ALIASED_LINE_WIDTH_RANGE"",""value"":{""0"":1,""1"":7}},{""name"":""ALIASED_POINT_SIZE_RANGE"",""value"":{""0"":1,""1"":255}},{""name"":[""DEPTH_BITS"",""STENCIL_BITS""],""value"":""n/a""},{""name"":""MAX_3D_TEXTURE_SIZE"",""value"":""n/a""},{""name"":""MAX_ARRAY_TEXTURE_LAYERS"",""value"":""n/a""},{""name"":""MAX_COLOR_ATTACHMENTS"",""value"":""n/a""},{""name"":""MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_COMBINED_TEXTURE_IMAGE_UNITS"",""value"":32},{""name"":""MAX_COMBINED_UNIFORM_BLOCKS"",""value"":""n/a""},{""name"":""MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_CUBE_MAP_TEXTURE_SIZE"",""value"":8192},{""name"":""MAX_DRAW_BUFFERS"",""value"":""n/a""},{""name"":""MAX_FRAGMENT_INPUT_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_FRAGMENT_UNIFORM_BLOCKS"",""value"":""n/a""},{""name"":""MAX_FRAGMENT_UNIFORM_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_FRAGMENT_UNIFORM_VECTORS"",""value"":1024},{""name"":""MAX_PROGRAM_TEXEL_OFFSET"",""value"":""n/a""},{""name"":""MAX_RENDERBUFFER_SIZE"",""value"":8192},{""name"":""MAX_SAMPLES"",""value"":""n/a""},{""name"":""MAX_TEXTURE_IMAGE_UNITS"",""value"":16},{""name"":""MAX_TEXTURE_LOD_BIAS"",""value"":""n/a""},{""name"":""MAX_TEXTURE_SIZE"",""value"":8192},{""name"":""MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS"",""value"":""n/a""},{""name"":""MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_UNIFORM_BLOCK_SIZE"",""value"":""n/a""},{""name"":""MAX_UNIFORM_BUFFER_BINDINGS"",""value"":""n/a""},{""name"":""MAX_VARYING_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_VARYING_VECTORS"",""value"":16},{""name"":""MAX_VERTEX_ATTRIBS"",""value"":16},{""name"":""MAX_VERTEX_OUTPUT_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_VERTEX_TEXTURE_IMAGE_UNITS"",""value"":16},{""name"":""MAX_VERTEX_UNIFORM_BLOCKS"",""value"":""n/a""},{""name"":""MAX_VERTEX_UNIFORM_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_VERTEX_UNIFORM_VECTORS"",""value"":1024},{""name"":""MAX_VIEWPORT_DIMS"",""value"":{""0"":8192,""1"":8192}},{""name"":""MIN_PROGRAM_TEXEL_OFFSET"",""value"":""n/a""},{""name"":[""RED_BITS"",""GREEN_BITS"",""BLUE_BITS"",""ALPHA_BITS""],""value"":""n/a""},{""name"":""RENDERER"",""value"":""WebKit WebGL""},{""name"":""SHADING_LANGUAGE_VERSION"",""value"":""WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)""},{""name"":""UNIFORM_BUFFER_OFFSET_ALIGNMENT"",""value"":""n/a""},{""name"":""VENDOR"",""value"":""WebKit""},{""name"":""VERSION"",""value"":""WebGL 1.0 (OpenGL ES 2.0 Chromium)""}]",highp/highp,"[{""name"":""beginQuery"",""supported"":false},{""name"":""beginTransformFeedback"",""supported"":false},{""name"":""bindBufferBase"",""supported"":false},{""name"":""bindBufferRange"",""supported"":false},{""name"":""bindSampler"",""supported"":false},{""name"":""bindTransformFeedback"",""supported"":false},{""name"":""bindVertexArray"",""supported"":false},{""name"":""blitFramebuffer"",""supported"":false},{""name"":""clearBufferfi"",""supported"":false},{""name"":""clearBufferfv"",""supported"":false},{""name"":""clearBufferiv"",""supported"":false},{""name"":""clearBufferuiv"",""supported"":false},{""name"":""clientWaitSync"",""supported"":false},{""name"":""compressedTexImage3D"",""supported"":false},{""name"":""compressedTexSubImage3D"",""supported"":false},{""name"":""copyBufferSubData"",""supported"":false},{""name"":""copyTexSubImage3D"",""supported"":false},{""name"":""createQuery"",""supported"":false},{""name"":""createSampler"",""supported"":false},{""name"":""createTransformFeedback"",""supported"":false},{""name"":""createVertexArray"",""supported"":false},{""name"":""deleteQuery"",""supported"":false},{""name"":""deleteSampler"",""supported"":false},{""name"":""deleteSync"",""supported"":false},{""name"":""deleteTransformFeedback"",""supported"":false},{""name"":""deleteVertexArray"",""supported"":false},{""name"":""drawArraysInstanced"",""supported"":false},{""name"":""drawBuffers"",""supported"":false},{""name"":""drawElementsInstanced"",""supported"":false},{""name"":""drawRangeElements"",""supported"":false},{""name"":""endQuery"",""supported"":false},{""name"":""endTransformFeedback"",""supported"":false},{""name"":""fenceSync"",""supported"":false},{""name"":""framebufferTextureLayer"",""supported"":false},{""name"":""getActiveUniformBlockName"",""supported"":false},{""name"":""getActiveUniformBlockParameter"",""supported"":false},{""name"":""getActiveUniforms"",""supported"":false},{""name"":""getBufferSubData"",""supported"":false},{""name"":""getFragDataLocation"",""supported"":false},{""name"":""getIndexedParameter"",""supported"":false},{""name"":""getInternalformatParameter"",""supported"":false},{""name"":""getQuery"",""supported"":false},{""name"":""getQueryParameter"",""supported"":false},{""name"":""getSamplerParameter"",""supported"":false},{""name"":""getSyncParameter"",""supported"":false},{""name"":""getTransformFeedbackVarying"",""supported"":false},{""name"":""getUniformBlockIndex"",""supported"":false},{""name"":""getUniformIndices"",""supported"":false},{""name"":""invalidateFramebuffer"",""supported"":false},{""name"":""invalidateSubFramebuffer"",""supported"":false},{""name"":""isQuery"",""supported"":false},{""name"":""isSampler"",""supported"":false},{""name"":""isSync"",""supported"":false},{""name"":""isTransformFeedback"",""supported"":false},{""name"":""isVertexArray"",""supported"":false},{""name"":""pauseTransformFeedback"",""supported"":false},{""name"":""readBuffer"",""supported"":false},{""name"":""renderbufferStorageMultisample"",""supported"":false},{""name"":""resumeTransformFeedback"",""supported"":false},{""name"":""samplerParameterf"",""supported"":false},{""name"":""samplerParameteri"",""supported"":false},{""name"":""texImage3D"",""supported"":false},{""name"":""texStorage2D"",""supported"":false},{""name"":""texStorage3D"",""supported"":false},{""name"":""texSubImage3D"",""supported"":false},{""name"":""transformFeedbackVaryings"",""supported"":false},{""name"":""uniform1ui"",""supported"":false},{""name"":""uniform1uiv"",""supported"":false},{""name"":""uniform2ui"",""supported"":false},{""name"":""uniform2uiv"",""supported"":false},{""name"":""uniform3ui"",""supported"":false},{""name"":""uniform3uiv"",""supported"":false},{""name"":""uniform4ui"",""supported"":false},{""name"":""uniform4uiv"",""supported"":false},{""name"":""uniformBlockBinding"",""supported"":false},{""name"":""uniformMatrix2x3fv"",""supported"":false},{""name"":""uniformMatrix2x4fv"",""supported"":false},{""name"":""uniformMatrix3x2fv"",""supported"":false},{""name"":""uniformMatrix3x4fv"",""supported"":false},{""name"":""uniformMatrix4x2fv"",""supported"":false},{""name"":""uniformMatrix4x3fv"",""supported"":false},{""name"":""vertexAttribDivisor"",""supported"":false},{""name"":""vertexAttribI4i"",""supported"":false},{""name"":""vertexAttribI4iv"",""supported"":false},{""name"":""vertexAttribI4ui"",""supported"":false},{""name"":""vertexAttribI4uiv"",""supported"":false},{""name"":""vertexAttribIPointer"",""supported"":false},{""name"":""waitSync"",""supported"":false}]",16
|