日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nodejs源码—初始化

發布時間:2025/7/14 编程问答 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nodejs源码—初始化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

相信很多的人,每天在終端不止一遍的執行著node這條命令,對于很多人來說,它就像一個黑盒,并不知道背后到底發生了什么,本文將會為大家揭開這個神秘的面紗,由于本人水平有限,所以只是講一個大概其,主要關注的過程就是node模塊的初始化,event loop和v8的部分基本沒有深入,這些部分可以關注一下我以后的文章。(提示本文非常的長,希望大家不要看煩~) 本文node基于10.5.0

node是什么?

這個問題很多人都會回答就是v8 + libuv,但是除了這個兩個庫以外node還依賴許多優秀的開源庫,可以通過process.versions來看一下:

  • http_parser主要用于解析http數據包的模塊,在這個庫的作者也是ry,一個純c的庫,無任何依賴
  • v8這個大家就非常熟悉了,一個優秀的js引擎
  • uv這個就是ry實現的libuv,其封裝了libev和IOCP,實現了跨平臺,node中的i/o就是它,盡管js是單線程的,但是libuv并不是,其有一個線程池來處理這些i/o操作。
  • zlib主要來處理壓縮操作,諸如熟悉的gzip操作
  • ares是c-ares,這個庫主要用于解析dns,其也是異步的
  • modules就是node的模塊系統,其遵循的規范為commonjs,不過node也支持了ES模塊,不過需要加上參數并且文件名后綴需要為mjs,通過源碼看,node將ES模塊的名稱作為了一種url來看待,具體可以參見這里
  • nghttp2如其名字一樣,是一個http2的庫
  • napi是在node8出現,node10穩定下來的,可以給編寫node原生模塊更好的體驗(終于不用在依賴于nan,每次更換node版本還要重新編譯一次了)
  • openssl非常著名的庫,tls模塊依賴于這個庫,當然還包括https
  • icu就是small-icu,主要用于解決跨平臺的編碼問題,versions對象中的unicode,cldr,tz也源自icu,這個的定義可以參見這里

從這里可以看出的是process對象在node中非常的重要,個人的理解,其實node與瀏覽器端最主要的區別,就在于這個process對象

注:node只是用v8來進行js的解析,所以不一定非要依賴v8,也可以用其他的引擎來代替,比如利用微軟的ChakraCore,對應的node倉庫

node初始化

經過上面的一通分析,對node的所有依賴有了一定的了解,下面來進入正題,看一下node的初始化過程:

挖坑

node_main.cc為入口文件,可以看到的是除了調用了node::Start之外,還做了兩件事情:

NODE_SHARED_MODE忽略SIGPIPE信號

SIGPIPE信號出現的情況一般在socket收到RST packet之后,扔向這個socket寫數據時產生,簡單來說就是client想server發請求,但是這時候client已經掛掉,這時候就會產生SIGPIPE信號,產生這個信號會使server端掛掉,其實node::PlatformInit中也做了這種操作,不過只是針對non-shared lib build

改變緩沖行為

stdout的默認緩沖行為為_IOLBF(行緩沖),但是對于這種來說交互性會非常的差,所以將其改為_IONBF(不緩沖)

探索

node.cc文件中總共有三個Start函數,先從node_main.cc中掉的這個Start函數開始看:

int Start(int argc, char** argv) {// 退出之前終止libuv的終端行為,為正常退出的情況atexit([] () { uv_tty_reset_mode(); });// 針對平臺進行初始化PlatformInit();// ...Init(&argc, const_cast<const char**>(argv), &exec_argc, &exec_argv);// ...v8_platform.Initialize(v8_thread_pool_size);// 熟悉的v8初始化函數V8::Initialize();// ..const int exit_code =Start(uv_default_loop(), argc, argv, exec_argc, exec_argv); } 復制代碼

上面函數只保留了一些關鍵不走,先來看看PlatformInit

PlatfromInit

unix中將一切都看作文件,進程啟動時會默認打開三個i/o設備文件,也就是stdin stdout stderr,默認會分配0 1 2三個描述符出去,對應的文件描述符常量為STDIN_FILENO STDOUT_FILENO STDERR_FILENO,而windows中沒有文件描述符的這個概念,對應的是句柄,PlatformInit首先是檢查是否將這個三個文件描述符已經分配出去,若沒有,則利用open("/dev/null", O_RDWR)分配出去,對于windows做了同樣的操作,分配句柄出去,而且windows只做了這一個操作;對于unix來說還會針對SIGINT(用戶調用Ctrl-C時發出)和SIGTERM(SIGTERM與SIGKILL類似,但是不同的是該信號可以被阻塞和處理,要求程序自己退出)信號來做一些特殊處理,這個處理與正常退出時一樣;另一個重要的事情就是下面這段代碼:

struct rlimit lim;// soft limit 不等于 hard limit, 意味著可以增加if (getrlimit(RLIMIT_NOFILE, &lim) == 0 && lim.rlim_cur != lim.rlim_max) {// Do a binary search for the limit.rlim_t min = lim.rlim_cur;rlim_t max = 1 << 20;// But if there's a defined upper bound, don't search, just set it.if (lim.rlim_max != RLIM_INFINITY) {min = lim.rlim_max;max = lim.rlim_max;}do {lim.rlim_cur = min + (max - min) / 2;// 對于mac來說 hard limit 為unlimited// 但是內核有限制最大的文件描述符,超過這個限制則設置失敗if (setrlimit(RLIMIT_NOFILE, &lim)) {max = lim.rlim_cur;} else {min = lim.rlim_cur;}} while (min + 1 < max);} 復制代碼

這個件事情也就是提高一個進程允許打開的最大文件描述符,但是在mac上非常的奇怪,執行ulimit -H -n得到hard limit是unlimited,所以我認為mac上的最大文件描述符會被設置為1 << 20,但是最后經過實驗發現最大只能為24576,非常的詭異,最后經過一頓搜索,查到了原來mac的內核對能打開的文件描述符也有限制,可以用sysctl -A | grep kern.maxfiles進行查看,果然這個數字就是24576

Init

Init函數調用了RegisterBuiltinModules:

// node.cc void RegisterBuiltinModules() { #define V(modname) _register_##modname();NODE_BUILTIN_MODULES(V) #undef V }// node_internals.h #define NODE_BUILTIN_MODULES(V) NODE_BUILTIN_STANDARD_MODULES(V) NODE_BUILTIN_OPENSSL_MODULES(V) NODE_BUILTIN_ICU_MODULES(V) 復制代碼

從名字也可以看出上面的過程是進行c++模塊的初始化,node利用了一些宏定義的方式,主要關注NODE_BUILTIN_STANDARD_MODULES這個宏:

#define NODE_BUILTIN_STANDARD_MODULES(V)V(async_wrap) V(buffer)... 復制代碼

結合上面的定義,可以得出編譯后的代碼大概為:

void RegisterBuiltinModules() {_register_async_wrap();_register_buffer(); } 復制代碼

而這些_register又是從哪里來的呢?以buffer來說,對應c++文件為src/node_buffer.cc,來看這個文件的最后一行,第二個參數是模塊的初始化函數:

NODE_BUILTIN_MODULE_CONTEXT_AWARE(buffer, node::Buffer::Initialize) 復制代碼

這個宏存在于node_internals.h中:

#define NODE_MODULE_CONTEXT_AWARE_CPP(modname, regfunc, priv, flags)static node::node_module _module = {NODE_MODULE_VERSION, flags, nullptr, __FILE__, nullptr, (node::addon_context_register_func) (regfunc),// 暴露給js使用的模塊的初始化函數NODE_STRINGIFY(modname), priv, nullptr }; void _register_ ## modname() { node_module_register(&_module); }#define NODE_BUILTIN_MODULE_CONTEXT_AWARE(modname, regfunc) NODE_MODULE_CONTEXT_AWARE_CPP(modname, regfunc, nullptr, NM_F_BUILTIN) 復制代碼

發現調用的_register_buffer實質上調用的是node_module_register(&_module),每一個c++模塊對應的為一個node_module結構體,再來看看node_module_register發生了什么:

extern "C" void node_module_register(void* m) {struct node_module* mp = reinterpret_cast<struct node_module*>(m);if (mp->nm_flags & NM_F_BUILTIN) {mp->nm_link = modlist_builtin;modlist_builtin = mp;}... } 復制代碼

由此可以見,c++模塊被存儲在了一個鏈表中,后面process.binding()本質上就是在這個鏈表中查找對應c++模塊,node_module是鏈表中的一個節點,除此之外Init還初始化了一些變量,這些變量基本上都是取決于環境變量用getenv獲得即可

v8初始化

到執行完Init為止,還沒有涉及的js與c++的交互,在將一些環境初始化之后,就要開始用v8這個大殺器了,v8_platform是一個結構體,可以理解為是node對于v8的v8::platform一個封裝,緊接著的就是對v8進行初始化,自此開始具備了與js進行交互的能力,初始化v8之后,創建了一個libuv事件循環就進入了下一個Start函數

第二個Start函數

inline int Start(uv_loop_t* event_loop,int argc, const char* const* argv,int exec_argc, const char* const* exec_argv) {std::unique_ptr<ArrayBufferAllocator, decltype(&FreeArrayBufferAllocator)>allocator(CreateArrayBufferAllocator(), &FreeArrayBufferAllocator);Isolate* const isolate = NewIsolate(allocator.get());// ...{Locker locker(isolate);Isolate::Scope isolate_scope(isolate);HandleScope handle_scope(isolate);} } 復制代碼

首先創建了一個v8的Isolate(隔離),隔離在v8中非常常見,仿佛和進程一樣,不同隔離不共享資源,有著自己得堆棧,但是正是因為這個原因在多線程的情況下,要是對每一個線程都創建一個隔離的話,那么開銷會非常的大(可喜可賀的是node有了worker_threads),這時候可以借助Locker來進行同步,同時也保證了一個Isolate同一時刻只能被一個線程使用;下面兩行就是v8的常規套路,下一步一般就是創建一個Context(最簡化的一個流程可以參見v8的hello world),HandleScope叫做句柄作用域,一般都是放在函數的開頭,來管理函數創建的一些句柄(水平有限,暫時不深究,先挖個坑);第二個Start的主要流程就是這個,下面就會進入最后一個Start函數,這個函數可以說是非常的關鍵,會揭開所有的謎題

解開謎題

inline int Start(Isolate* isolate, IsolateData* isolate_data,int argc, const char* const* argv,int exec_argc, const char* const* exec_argv) {HandleScope handle_scope(isolate);// 常規套路Local<Context> context = NewContext(isolate);Context::Scope context_scope(context);Environment env(isolate_data, context, v8_platform.GetTracingAgentWriter());env.Start(argc, argv, exec_argc, exec_argv, v8_is_profiling);// ... 復制代碼

可以見到v8的常見套路,創建了一個上下文,這個上下文就是js的執行環境,Context::Scope是用來管理這個Context,Environment可以理解為一個node的運行環境,記錄了isolate,event loop等,Start的過程主要是做了一些libuv的初始化以及process對象的定義:

auto process_template = FunctionTemplate::New(isolate());process_template->SetClassName(FIXED_ONE_BYTE_STRING(isolate(), "process"));auto process_object =process_template->GetFunction()->NewInstance(context()).ToLocalChecked();set_process_object(process_object);SetupProcessObject(this, argc, argv, exec_argc, exec_argv); 復制代碼

SetupProcessObject生成了一個c++層面上的process對象,這個已經基本上和平時node中的process對象一致,但是還會有一些出入,比如沒有binding等,完成了這個過程之后就開始了LoadEnvironment

LoadEnvironment

Local<String> loaders_name =FIXED_ONE_BYTE_STRING(env->isolate(), "internal/bootstrap/loaders.js"); MaybeLocal<Function> loaders_bootstrapper =GetBootstrapper(env, LoadersBootstrapperSource(env), loaders_name); Local<String> node_name =FIXED_ONE_BYTE_STRING(env->isolate(), "internal/bootstrap/node.js"); MaybeLocal<Function> node_bootstrapper =GetBootstrapper(env, NodeBootstrapperSource(env), node_name); 復制代碼

先將lib/internal/bootstrap文件夾下的兩個文件讀進來,然后利用GetBootstrapper來執行js代碼分別得到了一個函數,一步步來看,先看看GetBootstrapper為什么可以執行js代碼,查看這個函數可以發現主要是因為ExecuteString:

MaybeLocal<v8::Script> script =v8::Script::Compile(env->context(), source, &origin); ... MaybeLocal<Value> result = script.ToLocalChecked()->Run(env->context()); 復制代碼

這個主要利用了v8的能力,對js文件進行了解析和執行,打開loaders.js看看其參數,需要五個,撿兩個最重要的來說,分別是process和getBinding,這里面往后繼續看LoadEnvironment發現process對象就是剛剛生成的,而getBinding是函數GetBinding:

node_module* mod = get_builtin_module(*module_v); Local<Object> exports; if (mod != nullptr) {exports = InitModule(env, mod, module); } else if (!strcmp(*module_v, "constants")) {exports = Object::New(env->isolate());CHECK(exports->SetPrototype(env->context(),Null(env->isolate())).FromJust());DefineConstants(env->isolate(), exports); } else if (!strcmp(*module_v, "natives")) { // NativeModule _sourceexports = Object::New(env->isolate());DefineJavaScript(env, exports); } else {return ThrowIfNoSuchModule(env, *module_v); }args.GetReturnValue().Set(exports); 復制代碼

其作用就是根據傳參來初始化指定的模塊,當然也有比較特殊的兩個分別是constants和natives(后面再看),get_builtin_module調用的就是FindModule,還記得之前在Init過程中將模塊都注冊到的鏈表嗎?FindModule就是遍歷這個鏈表找到相應的模塊:

struct node_module* mp; for (mp = list; mp != nullptr; mp = mp->nm_link) {if (strcmp(mp->nm_modname, name) == 0)break; } 復制代碼

InitModule就是調用之前注冊模塊定義的初始化函數,還以buffer看的話,就是執行node::Buffer::Initialize函數,打開著函數來看和平時寫addon的方式一樣,也會暴露一個對象出來供js調用;LoadEnvironment下面就是將process, GetBinding等作為傳入傳給上面生成好的函數并且利用v8來執行,來到了大家熟悉的領域,來看看loaders.js:

const moduleLoadList = []; ObjectDefineProperty(process, 'moduleLoadList', {value: moduleLoadList,configurable: true,enumerable: true,writable: false }); 復制代碼

定義了一個已經加載的Module的數組,也可以在node通過process.moduleLoadList來看看加載了多少的原生模塊進來

process.binding

process.binding = function binding(module) {module = String(module);let mod = bindingObj[module];if (typeof mod !== 'object') {mod = bindingObj[module] = getBinding(module);moduleLoadList.push(`Binding ${module}`);}return mod; }; 復制代碼

終于到了這個方法,翻看lib中的js文件,有著非常多的這種調用,這個函數就是對GetBinding做了一個js層面的封裝,做的無非是查看一下這個模塊是否已經加載完成了,是的話直接返回回去,不需要再次初始化了,所以利用prcoess.binding加載了對應的c++模塊(可以執行一下process.binding('buffer'),然后再去node_buffer.cc中看看)繼續向下看,會發現定義了一個class就是NativeModule,發現其有一個靜態屬性:

加載js

NativeModule._source = getBinding('natives'); 復制代碼

返回到GetBinding函數,看到的是一個if分支就是這種情況:

exports = Object::New(env->isolate()); DefineJavaScript(env, exports); 復制代碼

來看看DefineJavaScript發生了什么樣的事情,這個函數發現只能在頭文件(node_javascript.h)里面找到,但是根本找不到具體的實現,這是個什么鬼???去翻一下node.gyp文件發現這個文件是用js2c.py這個文件生成的,去看一下這個python文件,可以發現許多的代碼模板,每一個模板都是用Render返回的,data參數就是js文件的內容,最終會被轉換為c++中的byte數組,同時定義了一個將其轉換為字符串的方法,那么問題來了,這些文件都是那些呢?答案還是在node.gyp中,就是library_files數組,發現包含了lib下的所有的文件和一些dep下的js文件,DefineJavaScript這個文件做的就是將待執行的js代碼注冊下,所以NativeModule._source中存儲的是一些待執行的js代碼,來看一下NativeModule.require:

NativeModule

const cached = NativeModule.getCached(id); if (cached && (cached.loaded || cached.loading)) {return cached.exports; } moduleLoadList.push(`NativeModule ${id}`);const nativeModule = new NativeModule(id);nativeModule.cache(); nativeModule.compile();return nativeModule.exports; 復制代碼

可以發現NativeModule也有著緩存的策略,require先把其放到_cache中再次require就不會像第一次那樣執行這個模塊,而是直接用緩存中執行好的,后面說的Module與其同理,看一下compile的實現:

let source = NativeModule.getSource(this.id); source = NativeModule.wrap(source);NativeModule.wrap = function(script) {return NativeModule.wrapper[0] + script + NativeModule.wrapper[1]; }; NativeModule.wrapper = ['(function (exports, require, module, process) {','\n});' ]; 復制代碼

首先從_source中取出相應的模塊,然后對這個模塊進行包裹成一個函數,執行函數用的是什么呢?

const script = new ContextifyScript(source, this.filename, 0, 0,codeCache[this.id], false, undefined );this.script = script; const fn = script.runInThisContext(-1, true, false); const requireFn = this.id.startsWith('internal/deps/') ?NativeModule.requireForDeps :NativeModule.require; fn(this.exports, requireFn, this, process); 復制代碼

本質上就是調用了vm編譯自婦產得到函數,然后給其傳入了一些參數并執行,this.exports就是一個對象,require區分了一下是否加載node依賴的js文件,this也就是參數module,這也說明了兩者的關系,exports就是module的一個屬性,也解釋了為什么exports.xx之后再指定module.exports = yy會將xx忽略掉,還記得LoadEnvironment嗎?bootstrap/loaders.js執行完之后執行了bootstrap/node.js,可以說這個文件是node真正的入口,比如定義了global對象上的屬性,比如console setTimeout等,由于篇幅有限,來挑一個最常用的場景,來看看這個是什么一回事:

else if (process.argv[1] && process.argv[1] !== '-') {const path = NativeModule.require('path');process.argv[1] = path.resolve(process.argv[1]);const CJSModule = NativeModule.require('internal/modules/cjs/loader');...CJSModule.runMain(); } 復制代碼

這個過程就是熟悉的node index.js這個過程,可以看到的對于開發者自己的js來說,在node中對應的class是Module,相信這個文件大家很多人都了解,與NativeModule相類似,不同的是,需要進行路徑的解析和模塊的查找等,來大致的看一下這個文件,先從上面調用的runMain來看:

if (experimentalModules) {// ... } else {Module._load(process.argv[1], null, true); } 復制代碼

Module

node中開啟--experimental-modules可以加載es模塊,也就是可以不用babel轉義就可以使用import/export啦,這個不是重點,重點來看普通的commonnjs模塊,process.argv[1]一般就是要執行的入口文件,下面看看Module._load:

Module._load = function(request, parent, isMain) {if (parent) {debug('Module._load REQUEST %s parent: %s', request, parent.id);}// 查找文件具體位置var filename = Module._resolveFilename(request, parent, isMain);// 存在緩存,則不需要再次執行var cachedModule = Module._cache[filename];if (cachedModule) {updateChildren(parent, cachedModule, true);return cachedModule.exports;}// 加載node原生模塊,原生模塊不需要緩存,因為NativeModule中也存在緩存if (NativeModule.nonInternalExists(filename)) {debug('load native module %s', request);return NativeModule.require(filename);}// 加載并執行一個模塊var module = new Module(filename, parent);if (isMain) {process.mainModule = module;module.id = '.';}Module._cache[filename] = module;// 調用load方法進行加載tryModuleLoad(module, filename);return module.exports; }; 復制代碼

這里看每一個Module有一個parent的屬性,假如a.js中引入了b.js,那么Module b的parent就是Module a,利用resolveFilename可以得到文件具體的位置,這個過程而后調用load函數來加載文件,可以看到的是區分了幾種類型,分別是.js .json .node,對應的.js是讀文件然后執行,.json是直接讀文件后JSON.parse一下,.node是調用dlopen,Module.compile于NativeModule.compile相類似都是想包裹一層成為函數,然后調用了vm編譯得到這個函數,最后傳入參數來執行,對于Module來說,包裹的代碼如下:

Module.wrapper = ['(function (exports, require, module, __filename, __dirname) { ','\n});' ]; 復制代碼

執行完上述過程后,前期工作就已經做得比較充分了,再次回到最后一個Start函數來看,從代碼中可以看到開始了node的event loop,這就是node的初始化過程,關于event loop需要對libuv有一定的了解,可以說node真正離不開的是libuv,具體這方面的東西,可以繼續關注我后面的文章

總結

總結一下這個過程,以首次加載沒有任何緩存的情況開看:require('fs'),先是調用了Module.require,而后發現為原生模塊,于是調用NativeModule.require,從NativeModule._source將lib/fs的內容拿出來包裹一下然后執行,這個文件第一行就可以看到process.binding,這個本質上是加載原生的c++模塊,這個模塊在初始化的時候將其注冊到了一個鏈表中,加載的過程就是將其拿出來然后執行

以上內容如果有錯誤的地方,還請大佬指出,萬分感激,另外一件重要的事情就是:我所在團隊也在招人,如果有興趣可以將簡歷發至zhoupeng.1996@bytedance.com

轉載于:https://juejin.im/post/5b93fdd76fb9a05cf7157525

總結

以上是生活随笔為你收集整理的nodejs源码—初始化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

欧美a级成人淫片免费看 | 六月色婷婷 | 麻花豆传媒一二三产区 | 狠狠狠狠狠操 | www.99av| 日韩亚洲在线 | 9999在线| av中文字幕在线免费观看 | 日日夜夜天天人人 | 日韩一区二区三区视频在线 | 国产系列在线观看 | 五月婷婷电影网 | 免费观看www7722午夜电影 | 欧美福利精品 | 久久撸在线视频 | 欧美男同视频网站 | 亚洲在线成人精品 | 国产日产精品一区二区三区四区 | 天天久久夜夜 | 狠狠狠色| 国产亚洲在线观看 | 超碰97免费| bbb搡bbb爽爽爽 | 黄色中文字幕在线 | 91九色在线视频 | 欧美日韩精 | 西西444www | 天天爽夜夜爽精品视频婷婷 | 国产亚洲资源 | 91网页版在线观看 | 夜夜躁天天躁很躁波 | 欧美日韩中文字幕综合视频 | 婷婷色六月天 | 天天干,天天操,天天射 | 国产99在线免费 | 色婷婷激情四射 | 亚洲精品中文在线观看 | 国产日产av| 日韩中文字幕在线看 | 丁香婷婷在线观看 | 国产最新视频在线 | 777视频在线观看 | 日日夜夜天天久久 | 国产精品夜夜夜一区二区三区尤 | 91九色蝌蚪视频网站 | 欧美一级艳片视频免费观看 | 亚洲精品国产第一综合99久久 | 91在线91拍拍在线91 | 欧美日韩免费观看一区=区三区 | 久久综合9988久久爱 | 激情av资源 | 天天做天天爱夜夜爽 | av怡红院 | 综合激情网... | 精品国产日本 | 国产91丝袜在线播放动漫 | 91日韩在线播放 | 国产精品自产拍在线观看桃花 | 国产精品精品国产 | 国产精品青草综合久久久久99 | 又长又大又黑又粗欧美 | 婷婷新五月 | 欧美午夜寂寞影院 | 国产视频黄| 国产免费av一区二区三区 | 久久精品欧美一区二区三区麻豆 | av天天在线观看 | 天天色天天综合网 | 懂色av一区二区在线播放 | 一二区av | 午夜精品久久久久久久久久 | 在线天堂中文在线资源网 | 免费国产在线视频 | 国产视频在线免费观看 | 人成在线免费视频 | 中文字幕在线观看视频一区 | 久久爱综合 | 久久99这里只有精品 | 午夜免费福利视频 | 激情欧美一区二区三区 | 亚洲区二区 | 91天天操 | 91丨九色丨国产在线 | 久久国产经典 | 波多野结衣在线观看一区二区三区 | 激情综合色播五月 | 97精品国产97久久久久久 | 美女网站色 | 国语久久 | 亚洲97在线 | 欧美日韩中文视频 | 色a综合 | 国产一级视频在线观看 | 免费看91的网站 | 视频在线精品 | 成人免费视频a | 韩国精品在线 | 日韩激情中文字幕 | 久久久久影视 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 成人黄色在线观看视频 | 亚洲第一成网站 | 视频一区二区在线 | 18久久久| 色偷偷av男人天堂 | www.黄色在线 | 九色视频网 | 久久婷婷精品视频 | 成人福利在线 | 男女视频久久久 | 日韩欧美精品一区二区三区经典 | 久久久久久久久久影院 | 欧美日韩一区二区三区不卡 | 色欧美88888久久久久久影院 | 国产精品免费不 | 97成人精品区在线播放 | 五月婷婷网站 | 久久综合九色综合97婷婷女人 | 国产自在线观看 | 久久视屏网 | 很污的网站 | 99超碰在线观看 | 亚洲成人国产 | 欧洲精品视频一区二区 | 午夜精品一区二区三区在线播放 | 成人va视频| 国产一区二区在线播放视频 | .国产精品成人自产拍在线观看6 | av在线播放亚洲 | 久久综合干 | 一区三区在线欧 | 国内少妇自拍视频一区 | 日本丶国产丶欧美色综合 | 中日韩欧美精彩视频 | 一区二区三区四区在线 | 亚洲爱av| 亚洲精品日韩av | 91香蕉亚洲精品 | 欧美最猛性xxxx | 日本中文字幕在线电影 | 97高清视频 | 国产精品五月天 | 国产精品一区二区在线播放 | 久久久999 | 午夜电影久久久 | 91在线观看视频网站 | 波多野结衣日韩 | 国产成人一区二区三区在线观看 | 日日碰狠狠添天天爽超碰97久久 | 国产精品1区2区3区 久久免费视频7 | 亚洲免费不卡 | 人人澡人人澡人人 | 国产综合片 | 精品你懂的 | 97色免费视频 | 91丨九色丨91啦蝌蚪老版 | 久久尤物电影视频在线观看 | 麻豆91在线观看 | 久久草草影视免费网 | 欧美日韩中文在线 | 久久久久久伊人 | 免费观看mv大片高清 | 国产中文字幕在线观看 | 在线免费视频 你懂得 | 日韩精品一区二区电影 | 久久黄色网址 | 久久精品久久99精品久久 | 久草在线视频看看 | 亚洲作爱视频 | 亚洲 欧美 变态 国产 另类 | 亚洲更新最快 | 国产日产高清dvd碟片 | 在线精品亚洲一区二区 | 夜夜躁天天躁很躁波 | 欧美日韩精品在线 | 天天做天天爱天天爽综合网 | 日韩在线激情 | 亚洲视频每日更新 | 亚州av网站 | 91亚洲国产 | 国产成人久久久久 | 四虎影视精品成人 | 日本色小说视频 | 人人要人人澡人人爽人人dvd | 日韩欧美视频二区 | 欧美大荫蒂xxx | 亚洲精品视频大全 | 国产最新精品视频 | 久久综合国产伦精品免费 | 91在线你懂的 | 亚洲精品美女久久17c | 91成人在线免费观看 | 国产美女免费观看 | 久久精品一二区 | 草久草久 | 91视频啪| 久久久久免费精品视频 | 国产精品一区二区av麻豆 | 精品极品在线 | 伊人久久一区 | 国产一级黄色片免费看 | 免费成人在线视频网站 | 国产免费xvideos视频入口 | 亚洲欧美视频在线播放 | 国产精品久久久久久久久久久免费看 | 久久99视频免费 | 婷婷综合视频 | 国产成在线观看免费视频 | 97精品超碰一区二区三区 | 亚洲精品视频在线免费 | 特级毛片网 | 国产精品自在线 | 国产性xxxx | 五月婷婷伊人网 | av一本久道久久波多野结衣 | 激情视频在线观看网址 | 久久久国产视频 | 久久99久| 天天爽天天爽夜夜爽 | 天堂av在线中文在线 | 91丨九色丨蝌蚪丨老版 | 久久不射电影网 | 日韩乱码中文字幕 | 久久久久久久久久久综合 | 国产一级免费在线观看 | 福利av在线 | av免费看av| 欧美日韩观看 | 91资源在线视频 | av免费在线免费观看 | 九九导航 | 亚洲区视频在线观看 | 国产99久久久国产精品 | 国产色一区 | 三上悠亚一区二区在线观看 | 国产视频不卡一区 | www激情网 | 国产96在线 | av高清不卡 | 国产精品99在线播放 | 国产一区二区在线看 | 9999在线观看 | 国产r级在线观看 | 黄色免费观看视频 | 久久免费福利 | 在线电影播放 | 亚洲va欧洲va国产va不卡 | 亚洲久草网 | 婷婷视频在线观看 | 免费看三片 | 精品资源在线 | 狠狠做深爱婷婷综合一区 | 在线观看一区二区视频 | 国产日韩欧美视频在线观看 | 四虎免费在线观看视频 | 欧美精品久久久久久久久老牛影院 | 久亚洲 | 欧美一级裸体视频 | 中文字幕在线免费 | 精品国产不卡 | 欧美在线视频不卡 | 看全黄大色黄大片 | 美女久久久久久 | 亚州国产视频 | 国产精品久久久精品 | 在线观看中文字幕dvd播放 | 欧美精品网站 | 亚洲专区在线播放 | 天天操天天射天天插 | 国产精品一区二区在线观看 | 日韩色区| 国产精品嫩草影视久久久 | 欧美,日韩 | 天天操夜夜逼 | 日本一区二区三区视频在线播放 | 精品国产_亚洲人成在线 | 国产 视频 高清 免费 | 麻豆一区二区三区视频 | 久久久国产99久久国产一 | 久久久亚洲麻豆日韩精品一区三区 | 欧美日韩视频在线播放 | 久草在线观看视频免费 | 久久怡红院 | 日本少妇久久久 | 日韩爱爱网站 | 亚洲激精日韩激精欧美精品 | 国产精品av在线 | 亚洲美女视频网 | 人人干人人艹 | 国产精品久久久久久久久久久久午夜 | 精品福利视频在线 | 97超碰资源站 | 午夜电影av | 色橹橹欧美在线观看视频高清 | 婷婷中文在线 | 日日碰狠狠添天天爽超碰97久久 | 天堂v中文 | 激情黄色av| 亚洲 在线 | 国产专区在线 | 中文字幕 影院 | 免费a v观看 | 五月婷婷在线视频观看 | 国产精品久久久久亚洲影视 | 日韩丝袜在线观看 | 国偷自产中文字幕亚洲手机在线 | 91精品成人久久 | 色综合久久综合网 | 婷婷亚洲综合五月天小说 | 午夜精品视频一区 | 欧美日韩裸体免费视频 | 免费网址在线播放 | 91看片黄色| 国产第一福利网 | 久久激情视频 久久 | 国产成人一区二区啪在线观看 | 国产精品福利无圣光在线一区 | 久久精品欧美一区 | 视频在线一区 | 国产精品亚洲片夜色在线 | 午夜在线免费观看视频 | 热久久国产精品 | 青青草视频精品 | 国产亚洲va综合人人澡精品 | 久久tv| 中文字幕一区在线观看视频 | 亚洲一区免费在线 | 亚洲伦理一区二区 | 在线91播放 | 黄色毛片在线看 | 国产精品一区二区三区电影 | 91精品爽啪蜜夜国产在线播放 | 日韩在线第一区 | 免费的成人av | 美女国产免费 | 亚洲天天在线日亚洲洲精 | 91九色丨porny丨丰满6 | 毛片网站在线看 | 国产精品久久亚洲 | 国产原创av在线 | 国产精品久久久久影院 | 五月婷婷色综合 | 香蕉网站在线观看 | 超碰av在线播放 | 久操伊人| 97精品一区二区三区 | 亚洲韩国一区二区三区 | 国产99亚洲 | 久久九九国产视频 | 蜜桃视频在线观看一区 | 日韩在线观看网站 | 91视频一8mav | 免费亚洲视频在线观看 | 欧美精品久久久久久久久久 | 午夜视频在线观看一区二区三区 | 欧美日韩不卡一区二区三区 | 91新人在线观看 | 日本中文一区二区 | 91尤物国产尤物福利在线播放 | 国产裸体视频bbbbb | 欧美十八| 婷婷性综合 | 久99久在线视频 | 精品国产一区二区三区四区vr | 三级黄色理论片 | 亚洲年轻女教师毛茸茸 | 成年人在线免费看视频 | 天天插日日插 | 免费国产视频 | 五月天中文字幕mv在线 | 中文字幕高清免费日韩视频在线 | 欧美日韩精品在线观看视频 | 中文字幕一区二区在线播放 | 免费网站v | 在线免费观看黄色小说 | 亚洲视频1 | 婷香五月 | 日韩av福利在线 | 射射射综合网 | 久久久精品欧美一区二区免费 | 精品成人在线 | 亚洲成色777777在线观看影院 | 在线观看av中文字幕 | 精品自拍av | 国产在线一区二区三区播放 | 欧美一级片在线免费观看 | 日本不卡一区二区 | 亚洲一区精品二人人爽久久 | 天天色中文 | 麻豆av电影 | 日韩久久精品一区二区 | 国产视频高清 | 欧美日韩精品综合 | 99在线精品视频在线观看 | 国产精品永久免费观看 | 欧美成人xxxxxxxx | 久久综合狠狠综合 | 日韩极品视频在线观看 | 成人在线一区二区三区 | 91人人射| 国产精品精品视频 | 婷婷色五 | 天天艹日日干 | 国产看片免费 | 国模视频一区二区三区 | 日韩在线免费 | 国产99在线播放 | 69国产在线观看 | 探花系列在线 | 国产日韩精品一区二区 | 91精品啪在线观看国产 | 超碰在线免费福利 | 五月花激情| 日本最新中文字幕 | 欧美一区二区三区免费看 | 亚洲狠狠婷婷综合久久久 | 狠狠狠色狠狠色综合 | 久久精品视频免费播放 | 91高清视频 | 国产亚洲一区二区三区 | 性色av免费观看 | 久久综合加勒比 | 国产精品高潮久久av | 99久久免费看 | 天天躁天天操 | 欧美一级电影片 | 中文字幕av有码 | 97香蕉久久国产在线观看 | 麻花豆传媒mv在线观看 | 欧美日韩精品在线视频 | 国产在线视频导航 | 午夜精品久久久 | 黄网站污 | 亚洲国产精品久久久久婷婷884 | 综合色站导航 | 精品国产成人在线影院 | 日本久久免费视频 | 最新中文字幕视频 | 性色大片在线观看 | 日韩有码中文字幕在线 | 国产黄视频在线观看 | 国产成人久久精品亚洲 | 91成人免费| 日本三级久久久 | av在线收看 | 欧美色综合天天久久综合精品 | 一本到视频在线观看 | av电影免费在线播放 | 在线日韩中文 | 西西4444www大胆无视频 | 久久综合九色综合97_ 久久久 | 亚洲视频免费在线 | 日韩精品免费专区 | 在线欧美a | 国产视频一区二区三区在线 | 成人久久久久 | 欧美成人中文字幕 | 天天干天天拍天天操天天拍 | 伊人天堂久久 | 欧美日韩一区二区视频在线观看 | 亚洲视频999 | 亚洲欧美国内爽妇网 | 久久免费试看 | 在线观看免费色 | 国产黄大片 | 亚洲狠狠干 | 国产精品久久久久久电影 | 国产资源免费在线观看 | 国产高清视频免费观看 | 91麻豆精品国产91久久久无限制版 | 国产精品热 | 国产午夜亚洲精品 | 成人免费网站在线观看 | 国产成人精品免高潮在线观看 | 国产成人三级在线播放 | 五月激情久久久 | 免费看十八岁美女 | 丁香九月婷婷 | 亚洲专区欧美 | 日韩精品不卡在线观看 | 成人精品99 | 四虎在线影视 | 国产精品美女久久久免费 | av在线一级 | 97精品国产97久久久久久久久久久久 | 日韩中文久久 | 小草av在线播放 | 欧美色图东方 | 在线免费看黄色 | 亚洲欧美综合精品久久成人 | 婷婷电影在线观看 | 久久人人做| 久久久久久久久网站 | 香蕉在线播放 | 成人aaa毛片| 日韩专区一区二区 | 成人久久久久 | 国产色爽 | 午夜电影 电影 | 福利二区视频 | 久久精品牌麻豆国产大山 | 天堂入口网站 | 国产手机视频在线 | 69夜色精品国产69乱 | 精品久久久99 | 亚洲伦理一区 | www.亚洲精品在线 | 午夜黄色大片 | 91在线免费播放 | 久久99国产综合精品免费 | 国产黄色a | 99精品久久只有精品 | 色五丁香 | 亚洲精品麻豆视频 | 亚洲一区免费在线 | 欧美日韩不卡在线 | 欧美成人a在线 | 黄色小网站在线 | 亚洲男女精品 | 91成人在线看 | 久久精品久久精品久久 | 麻豆视频91 | 区一区二区三区中文字幕 | 免费人成网 | 9在线观看免费高清完整版 玖玖爱免费视频 | 麻豆91精品91久久久 | 久久久网站 | avhd高清在线谜片 | 免费看黄的| 91麻豆精品国产91久久久无限制版 | 香蕉视频网址 | 在线a人v观看视频 | 最新av观看 | 亚洲国产精品va在线看 | 97超碰成人 | 91亚洲激情| 五月开心六月伊人色婷婷 | 96av在线视频 | 久久草草热国产精品直播 | 日本视频不卡 | 99精品视频在线 | 亚州视频在线 | 国产精品亚洲人在线观看 | 亚洲春色综合另类校园电影 | 国产成人精品一区二区三区 | 欧美一区二视频在线免费观看 | 成人午夜电影在线播放 | 国产91av视频在线观看 | 久久久久久国产精品美女 | 免费观看高清 | 天天插综合 | 色www精品视频在线观看 | 国产精品手机播放 | 成人av资源在线 | 99国产在线 | 亚洲久在线 | 五月综合网 | 97视频在线免费观看 | 久久精品免费观看 | 91片黄在线观| 午夜18视频在线观看 | 九九久久久久久久久激情 | 在线看毛片网站 | 久久久久影视 | 日韩午夜电影 | 一区二区三区播放 | 色爽网站| 日韩在线电影一区二区 | 亚洲激情在线观看 | 亚洲综合干| 麻豆视频观看 | 天天操天天爱天天爽 | 久久久久久高潮国产精品视 | 91视视频在线直接观看在线看网页在线看 | 久久免费黄色 | 欧美日韩xxx | 亚洲www天堂com | 国产精品v欧美精品v日韩 | 亚洲在线观看av | 二区中文字幕 | 99热这里只有精品免费 | 日韩1页 | 在线观看成人小视频 | 久久久亚洲国产精品麻豆综合天堂 | 亚洲性少妇性猛交wwww乱大交 | 三级a毛片 | 99免费看片 | 激情五月六月婷婷 | 久99久中文字幕在线 | a在线观看国产 | 成人免费视频免费观看 | 探花系列在线 | 久久在线免费视频 | 亚洲免费一级电影 | 久久久久久精 | 黄色官网在线观看 | 亚洲一区二区三区毛片 | 免费看毛片网站 | 亚洲国产成人精品电影在线观看 | 成人黄色大片在线免费观看 | 中文字幕电影高清在线观看 | 日本精品va在线观看 | 日本在线精品视频 | 天堂中文在线播放 | 国产精品女人久久久久久 | av7777777| 97成人啪啪网 | 成人一级影视 | 国内久久 | 午夜av在线播放 | 最新不卡av | 欧美a级在线播放 | 国产在线视频一区二区三区 | 亚洲色五月 | 久草精品在线播放 | 四虎精品成人免费网站 | 欧美日韩国产高清视频 | 手机在线欧美 | 色婷婷综合久久久中文字幕 | 日韩v在线 | 99久久久久久久久久 | 精品久久久久久久久久久久久久久久 | 久久亚洲精品国产亚洲老地址 | 91看片淫黄大片一级在线观看 | 中文字幕av影院 | 国产无套精品久久久久久 | 国产爽妇网 | 精品视频一区在线观看 | 午夜久久福利视频 | 欧美精品在线视频 | 日韩网站在线免费观看 | 国产麻豆精品传媒av国产下载 | 国产视频欧美视频 | 中文在线a在线 | 中文在线天堂资源 | 国产精品国产三级在线专区 | 国产成人精品电影久久久 | 手机在线观看国产精品 | 天天射天天射天天射 | av网站在线免费观看 | 狠狠干美女 | 91精品福利在线 | www视频在线播放 | 国产精品久久久久久麻豆一区 | 久草在线播放视频 | 成人免费精品 | 国产二区av | 西西4444www大胆无视频 | 久久久精品亚洲 | 尤物九九久久国产精品的分类 | 伊人天天色| 五月天久久久久 | 91九色在线视频 | 91中文字幕视频 | 国产日韩在线一区 | 在线观看www视频 | 免费在线观看日韩 | 国产视频资源 | 欧美做受69| 国产精品成人a免费观看 | 综合在线色 | 三级黄色在线观看 | 亚洲女人av| 国产精品免费久久久久影院仙踪林 | 亚洲综合视频在线 | 亚洲春色成人 | 最近2019好看的中文字幕免费 | 国产亚洲精品福利 | 婷婷六月激情 | 国产精品国产三级国产aⅴ9色 | 91av手机在线 | 色网站视频| 中文av在线免费观看 | 亚洲精品国产精品国产 | 久久久久久久久久久国产精品 | 国产在线看| 欧美日韩精品在线播放 | 亚洲japanese制服美女 | 久久精品国产成人精品 | 中文字幕人成一区 | 久久天堂精品视频 | 成人一区在线观看 | 欧美男男激情videos | 在线精品观看国产 | 成人在线观看av | 久久看片 | 欧美精品你懂的 | 国产1级毛片 | 91av九色| 久久精品一区二区三区视频 | 国产精选在线观看 | 成人在线观看网址 | 日韩高清二区 | 成年美女黄网站色大片免费看 | 国产高清免费在线观看 | 国产永久免费高清在线观看视频 | 狠狠夜夜 | 在线亚洲精品 | 欧美成人999| 国产精品美女免费看 | 特级西西www44高清大胆图片 | 菠萝菠萝在线精品视频 | 免费看的黄色 | 97人人网| 91精品国自产在线 | 久久久精品影视 | aaawww| 少妇按摩av | av品善网| 99色在线 | 日本久久成人 | 麻花天美星空视频 | 中文字幕在线播放日韩 | 国产亚洲精品成人av久久ww | 99精品国产在热久久下载 | 久久久久一区二区三区四区 | 久久99在线| 精品国产视频在线观看 | 成人观看视频 | 免费看久久久 | 久久er99热精品一区二区 | 天天碰天天操 | 亚洲视频1区2区 | 极品美女被弄高潮视频网站 | 国产高清视频免费在线观看 | 麻豆精品国产传媒 | 成人网页在线免费观看 | 成人精品一区二区三区中文字幕 | 亚洲 欧美 另类人妖 | 国产精品不卡在线 | 国产精品区一区 | 人人干人人草 | 黄色一区三区 | 国产精品免费视频观看 | 国产精品成人自产拍在线观看 | 国产主播大尺度精品福利免费 | 日韩在线观看av | 免费国产在线观看 | 日韩av不卡在线 | 日韩久久久久久久久 | aaa亚洲精品一二三区 | 国产无区一区二区三麻豆 | 久久中国精品 | 91丨九色丨国产丨porny精品 | 国产精品18毛片一区二区 | 69视频永久免费观看 | 日韩精品免费在线视频 | 色婷婷视频在线 | 国产传媒中文字幕 | 久久国语露脸国产精品电影 | 不卡av在线免费观看 | 免费久久久久久久 | 91麻豆精品国产91久久久无需广告 | 亚洲激精日韩激精欧美精品 | 国产精品久久一卡二卡 | 日日麻批40分钟视频免费观看 | 欧美一区二区伦理片 | 久久99精品国产99久久6尤 | 欧美精品久久久 | 久久免费精彩视频 | 九九国产视频 | 日本黄色免费电影网站 | 国产偷国产偷亚洲清高 | 精品美女在线视频 | 亚洲视频1 | 在线观看午夜av | 午夜少妇一区二区三区 | 2021国产视频 | 久草视频资源 | 久久免费的精品国产v∧ | 久久久久| 操操操日日 | 日韩在线播放欧美字幕 | 欧美色久| 亚洲欧美日韩国产 | 欧美天天射 | 中文av一区二区 | 免费福利视频导航 | 天天添夜夜操 | 成人免费观看av | 中文字幕在线观看视频网站 | 国产黄色精品在线 | 亚洲日本韩国一区二区 | 久久久99精品免费观看app | 国产中文a| 亚洲第一成网站 | 97精品国产97久久久久久春色 | 黄色软件在线观看免费 | 在线有码中文 | av在线免费观看网站 | 在线观看中文字幕 | 1区2区3区在线观看 三级动图 | wwwwww国产| 日日天天干 | 国产主播99| 黄污网站在线 | 久久综合一本 | 久久久久久久久影视 | se婷婷 | 国产h片在线观看 | 欧美国产不卡 | 天天做日日爱夜夜爽 | 久久激情久久 | 欧美极度另类性三渗透 | 久久精品激情 | 久久毛片高清国产 | 日韩激情一二三区 | 免费成人在线电影 | 国产91精品一区二区 | 日韩中文字幕免费在线观看 | 久久精品久久久久 | 高清不卡一区二区在线 | 色综合色综合久久综合频道88 | 青青河边草免费视频 | 国产黄色精品在线观看 | 久久精品波多野结衣 | 91在线精品一区二区 | 蜜臀av性久久久久av蜜臀三区 | 91亚洲网站| 99精品久久只有精品 | 中文字幕在线观看视频网站 | 91黄在线看 | 亚洲春色奇米影视 | 91丨九色丨91啦蝌蚪老版 | 色视频网站免费观看 | 四虎国产精品成人免费4hu | 911久久 | 久久综合精品一区 | 日韩欧美69 | 日本黄色大片儿 | 欧美日韩二区在线 | 国产精品欧美久久 | 69精品视频在线观看 | 国产精品国产亚洲精品看不卡 | 中文字幕日本在线观看 | 日韩精品在线视频免费观看 | 在线亚洲天堂网 | 久久99亚洲精品久久 | 激情黄色一级片 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 深爱激情站 | 久久精视频 | 国产一区二区免费在线观看 | 亚洲一区在线看 | 日本久久久久久 | 伊人色**天天综合婷婷 | 欧美一区二区三区免费观看 | 精品福利网 | 久久国产精品色av免费看 | 亚洲最大av | 一区在线电影 | 麻豆91网站| 97精品国产97久久久久久春色 | 中文字幕成人在线观看 | 亚洲砖区区免费 | 2022久久国产露脸精品国产 | 亚欧日韩av | 91成人在线看 | 狠狠躁日日躁狂躁夜夜躁av | 国产视频日本 | 成人欧美一区二区三区在线观看 | 免费a级大片 | av中文天堂在线 | 丁香视频 | 最新色视频 | 久久精品久久精品久久39 | 亚洲自拍偷拍色图 | 久久久亚洲国产精品麻豆综合天堂 | 免费在线黄色av | 久久99久久99精品免观看粉嫩 | 久久免费激情视频 | 欧美午夜久久 | 日本精品久久久久中文字幕5 | 国产精品theporn | 高清国产在线一区 | 九九热久久免费视频 | 一区二区亚洲精品 | 九九热只有这里有精品 | 久久av在线| 911香蕉| 亚洲一区欧美激情 | 九九视频精品免费 | 国内精品久久久久影院一蜜桃 | 日日夜夜爱| 精品一区电影 | 最近高清中文字幕在线国语5 | 999在线视频| 在线一二区 | 国产精品久久在线观看 | av品善网 | 久久字幕网 | 黄色毛片大全 | 欧美高清视频不卡网 | 夜夜嗨av色一区二区不卡 | 久久精品视频在线播放 | 亚洲美女在线一区 | 国产精品一区二区中文字幕 | 91在线中字 | 精品国产观看 | 日韩最新在线视频 | 伊人狠狠 | 日韩午夜在线播放 | 久久视频这里有精品 | 成人欧美一区二区三区黑人麻豆 | 欧美热久久 | 欧美美女激情18p | 欧美午夜精品久久久久 | 日本资源中文字幕在线 | 香蕉视频在线免费 | 在线观看国产www | 中文字幕在线观看第一区 | 日本久久电影 | 九九热在线精品视频 | 久久精品国产一区 | 国产精品99免视看9 国产精品毛片一区视频 | 国产精品黑丝在线观看 | 一本一本久久a久久精品综合小说 | 成人黄色片在线播放 | av片在线观看免费 | 久久激情视频 | 天天爽综合网 | 亚洲小视频在线 | 亚洲午夜精品久久久 | 视频高清| 99久久久久久国产精品 | 在线黄色免费av | 日韩一区二区三区在线看 | 国产日本在线播放 | 99久久精品免费看国产免费软件 | 国产精品毛片一区视频播 | 日韩精品视频在线免费观看 | 久操伊人 | 丁香视频免费观看 | 亚洲91在线| 色a综合 | 综合在线亚洲 | 特级黄色片免费看 | 91精品视频导航 | 狠狠操导航 | 麻豆你懂的 | 精品理论片 | 在线观看视频精品 | 国产精品午夜免费福利视频 | 色综合久久中文字幕综合网 | av大全在线免费观看 | 久久久www| 午夜视频免费在线观看 | 黄色日本片 | 黄色一二级片 | 久久天天躁狠狠躁亚洲综合公司 | 在线观看的a站 | 成人免费观看完整版电影 | 国产自制av | 国产欧美在线一区 | 日韩亚洲国产精品 | 中文视频一区二区 | 亚洲国产综合在线 | 国产成人高清av | 91手机视频 | 久久 亚洲视频 | 日韩黄色av网站 | 亚洲精品一区二区久 | 国内精品久久久久影院一蜜桃 | 中文资源在线官网 | 成人午夜精品福利免费 | 亚洲aⅴ乱码精品成人区 | 免费福利片2019潦草影视午夜 | 成人免费大片黄在线播放 | 亚洲aⅴ在线观看 | 干综合网 | av高清不卡 | 国产三级香港三韩国三级 | 丁香 婷婷 激情 | 在线看国产精品 | 日韩精品视频一二三 | 99精品欧美一区二区三区 | 五月婷色 | 欧美最爽乱淫视频播放 | 天天曰天天爽 | 91福利社区在线观看 | 狠狠色丁香久久婷婷综合丁香 | 国产区av在线 | 亚洲精品影院在线观看 | 久久福利综合 | 亚洲 欧美日韩 国产 中文 | 中文字幕成人在线 | 国产97色| 干干日日| 欧美片网站yy| 青青久草在线 | 亚州精品国产 | 欧美日韩免费在线视频 | 六月色婷 | 国产精品9999久久久久仙踪林 | 国产精品综合久久 | 色婷婷视频在线观看 | 国产精品18久久久久久首页狼 | 亚洲视频精选 |