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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Flink SQL JSON Format 源码解析

發(fā)布時間:2024/3/12 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flink SQL JSON Format 源码解析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

用 Flink SQL 解析 JSON 格式的數(shù)據(jù)是非常簡單的,只需要在 DDL 語句中設(shè)置 Format 為 json 即可,像下面這樣:

CREATE?TABLE?kafka_source?(funcName?STRING,data?ROW<snapshots?ARRAY<ROW<content_type?STRING,url?STRING>>,audio?ARRAY<ROW<content_type?STRING,url?STRING>>>,resultMap?ROW<`result`?MAP<STRING,STRING>,isSuccess?BOOLEAN>,meta??MAP<STRING,STRING>,`type`?INT,`timestamp`?BIGINT,arr?ARRAY<ROW<address?STRING,city?STRING>>,map?MAP<STRING,INT>,doublemap?MAP<STRING,MAP<STRING,INT>>,proctime?as?PROCTIME() )?WITH?('connector'?=?'kafka',?--?使用?kafka?connector'topic'?=?'test',??--?kafka?topic'properties.bootstrap.servers'?=?'master:9092,storm1:9092,storm2:9092',??--?broker連接信息'properties.group.id'?=?'jason_flink_test',?--?消費kafka的group_id'scan.startup.mode'?=?'latest-offset',??--?讀取數(shù)據(jù)的位置'format'?=?'json',??--?數(shù)據(jù)源格式為?json'json.fail-on-missing-field'?=?'true',?--?字段丟失任務(wù)不失敗'json.ignore-parse-errors'?=?'false'??--?解析失敗跳過 )

那么你有沒有想過它的底層是怎么實現(xiàn)的呢? 今天這篇文章就帶你深入淺出,了解其實現(xiàn)細(xì)節(jié).

當(dāng)你輸入一條 SQL 的時候在 Flink 里面會經(jīng)過解析,驗證,優(yōu)化,轉(zhuǎn)換等幾個重要的步驟,因為前面的幾個過程比較繁瑣,這里暫時不展開說明,我們直接來到比較關(guān)鍵的源碼處,在把 sqlNode 轉(zhuǎn)換成 relNode 的過程中,會來到 CatalogSourceTable#createDynamicTableSource 該類的作用是把 Calcite 的 RelOptTable 翻譯成 Flink 的 TableSourceTable 對象.

createDynamicTableSource ?源碼

private?DynamicTableSource?createDynamicTableSource(FlinkContext?context,?ResolvedCatalogTable?catalogTable)?{final?ReadableConfig?config?=?context.getTableConfig().getConfiguration();return?FactoryUtil.createTableSource(schemaTable.getCatalog(),schemaTable.getTableIdentifier(),catalogTable,config,Thread.currentThread().getContextClassLoader(),schemaTable.isTemporary()); }

其實這個就是要創(chuàng)建 Kafka Source 的流表,然后會調(diào)用 FactoryUtil#createTableSource 這個方法

createTableSource 源碼

public?static?DynamicTableSource?createTableSource(@Nullable?Catalog?catalog,ObjectIdentifier?objectIdentifier,ResolvedCatalogTable?catalogTable,ReadableConfig?configuration,ClassLoader?classLoader,boolean?isTemporary)?{final?DefaultDynamicTableContext?context?=new?DefaultDynamicTableContext(objectIdentifier,?catalogTable,?configuration,?classLoader,?isTemporary);try?{//?獲取對應(yīng)的?factory?這里其實就是?KafkaDynamicTableFactoryfinal?DynamicTableSourceFactory?factory?=getDynamicTableFactory(DynamicTableSourceFactory.class,?catalog,?context);//?創(chuàng)建動態(tài)表return?factory.createDynamicTableSource(context);}?catch?(Throwable?t)?{throw?new?ValidationException(String.format("Unable?to?create?a?source?for?reading?table?'%s'.\n\n"+?"Table?options?are:\n\n"+?"%s",objectIdentifier.asSummaryString(),catalogTable.getOptions().entrySet().stream().map(e?->?stringifyOption(e.getKey(),?e.getValue())).sorted().collect(Collectors.joining("\n"))),t);} }

在這個方法里面,有兩個重要的過程,首先是獲取對應(yīng)的 factory 對象,然后創(chuàng)建 DynamicTableSource 實例.在 getDynamicTableFactory 中實際調(diào)用的是 discoverFactory 方法,顧名思義就是發(fā)現(xiàn)工廠.

discoverFactory 源碼

public?static?<T?extends?Factory>?T?discoverFactory(ClassLoader?classLoader,?Class<T>?factoryClass,?String?factoryIdentifier)?{final?List<Factory>?factories?=?discoverFactories(classLoader);final?List<Factory>?foundFactories?=factories.stream().filter(f?->?factoryClass.isAssignableFrom(f.getClass())).collect(Collectors.toList());if?(foundFactories.isEmpty())?{throw?new?ValidationException(String.format("Could?not?find?any?factories?that?implement?'%s'?in?the?classpath.",factoryClass.getName()));}final?List<Factory>?matchingFactories?=foundFactories.stream().filter(f?->?f.factoryIdentifier().equals(factoryIdentifier)).collect(Collectors.toList());if?(matchingFactories.isEmpty())?{throw?new?ValidationException(String.format("Could?not?find?any?factory?for?identifier?'%s'?that?implements?'%s'?in?the?classpath.\n\n"+?"Available?factory?identifiers?are:\n\n"+?"%s",factoryIdentifier,factoryClass.getName(),foundFactories.stream().map(Factory::factoryIdentifier).distinct().sorted().collect(Collectors.joining("\n"))));}if?(matchingFactories.size()?>?1)?{throw?new?ValidationException(String.format("Multiple?factories?for?identifier?'%s'?that?implement?'%s'?found?in?the?classpath.\n\n"+?"Ambiguous?factory?classes?are:\n\n"+?"%s",factoryIdentifier,factoryClass.getName(),matchingFactories.stream().map(f?->?f.getClass().getName()).sorted().collect(Collectors.joining("\n"))));}return?(T)?matchingFactories.get(0); }

這個代碼相對簡單,就不加注釋了,邏輯也非常的清晰,就是獲取對應(yīng)的 factory ,先是通過 SPI 機制加載所有的 factory 然后根據(jù) factoryIdentifier 過濾出滿足條件的,這里其實就是 kafka connector 了.最后還有一些異常的判斷.

discoverFactories 源碼

private?static?List<Factory>?discoverFactories(ClassLoader?classLoader)?{try?{final?List<Factory>?result?=?new?LinkedList<>();ServiceLoader.load(Factory.class,?classLoader).iterator().forEachRemaining(result::add);return?result;}?catch?(ServiceConfigurationError?e)?{LOG.error("Could?not?load?service?provider?for?factories.",?e);throw?new?TableException("Could?not?load?service?provider?for?factories.",?e);} }

這個代碼大家應(yīng)該比較熟悉了,前面也有文章介紹過了.加載所有的 Factory 返回一個 Factory 的集合.

下面才是今天的重點.

createDynamicTableSource 源碼

public?DynamicTableSource?createDynamicTableSource(Context?context)?{TableFactoryHelper?helper?=?FactoryUtil.createTableFactoryHelper(this,?context);ReadableConfig?tableOptions?=?helper.getOptions();Optional<DecodingFormat<DeserializationSchema<RowData>>>?keyDecodingFormat?=?getKeyDecodingFormat(helper);//?format?的邏輯DecodingFormat<DeserializationSchema<RowData>>?valueDecodingFormat?=?getValueDecodingFormat(helper);helper.validateExcept(new?String[]{"properties."});KafkaOptions.validateTableSourceOptions(tableOptions);validatePKConstraints(context.getObjectIdentifier(),?context.getCatalogTable(),?valueDecodingFormat);StartupOptions?startupOptions?=?KafkaOptions.getStartupOptions(tableOptions);Properties?properties?=?KafkaOptions.getKafkaProperties(context.getCatalogTable().getOptions());properties.setProperty("flink.partition-discovery.interval-millis",?String.valueOf(tableOptions.getOptional(KafkaOptions.SCAN_TOPIC_PARTITION_DISCOVERY).map(Duration::toMillis).orElse(-9223372036854775808L)));DataType?physicalDataType?=?context.getCatalogTable().getSchema().toPhysicalRowDataType();int[]?keyProjection?=?KafkaOptions.createKeyFormatProjection(tableOptions,?physicalDataType);int[]?valueProjection?=?KafkaOptions.createValueFormatProjection(tableOptions,?physicalDataType);String?keyPrefix?=?(String)tableOptions.getOptional(KafkaOptions.KEY_FIELDS_PREFIX).orElse((Object)null);return?this.createKafkaTableSource(physicalDataType,?(DecodingFormat)keyDecodingFormat.orElse((Object)null),?valueDecodingFormat,?keyProjection,?valueProjection,?keyPrefix,?KafkaOptions.getSourceTopics(tableOptions),?KafkaOptions.getSourceTopicPattern(tableOptions),?properties,?startupOptions.startupMode,?startupOptions.specificOffsets,?startupOptions.startupTimestampMillis); }

getValueDecodingFormat 方法最終會調(diào)用 discoverOptionalFormatFactory 方法

discoverOptionalDecodingFormat 和 discoverOptionalFormatFactory 源碼

public?<I,?F?extends?DecodingFormatFactory<I>>Optional<DecodingFormat<I>>?discoverOptionalDecodingFormat(Class<F>?formatFactoryClass,?ConfigOption<String>?formatOption)?{return?discoverOptionalFormatFactory(formatFactoryClass,?formatOption).map(formatFactory?->?{String?formatPrefix?=?formatPrefix(formatFactory,?formatOption);try?{return?formatFactory.createDecodingFormat(context,?projectOptions(formatPrefix));}?catch?(Throwable?t)?{throw?new?ValidationException(String.format("Error?creating?scan?format?'%s'?in?option?space?'%s'.",formatFactory.factoryIdentifier(),formatPrefix),t);}});}private?<F?extends?Factory>?Optional<F>?discoverOptionalFormatFactory(Class<F>?formatFactoryClass,?ConfigOption<String>?formatOption)?{final?String?identifier?=?allOptions.get(formatOption);if?(identifier?==?null)?{return?Optional.empty();}final?F?factory?=discoverFactory(context.getClassLoader(),?formatFactoryClass,?identifier);String?formatPrefix?=?formatPrefix(factory,?formatOption);//?log?all?used?options?of?other?factoriesconsumedOptionKeys.addAll(factory.requiredOptions().stream().map(ConfigOption::key).map(k?->?formatPrefix?+?k).collect(Collectors.toSet()));consumedOptionKeys.addAll(factory.optionalOptions().stream().map(ConfigOption::key).map(k?->?formatPrefix?+?k).collect(Collectors.toSet()));return?Optional.of(factory); }//?直接過濾出滿足條件的?format? public?static?<T?extends?Factory>?T?discoverFactory(ClassLoader?classLoader,?Class<T>?factoryClass,?String?factoryIdentifier)?{final?List<Factory>?factories?=?discoverFactories(classLoader);final?List<Factory>?foundFactories?=factories.stream().filter(f?->?factoryClass.isAssignableFrom(f.getClass())).collect(Collectors.toList());if?(foundFactories.isEmpty())?{throw?new?ValidationException(String.format("Could?not?find?any?factories?that?implement?'%s'?in?the?classpath.",factoryClass.getName()));}final?List<Factory>?matchingFactories?=foundFactories.stream().filter(f?->?f.factoryIdentifier().equals(factoryIdentifier)).collect(Collectors.toList());if?(matchingFactories.isEmpty())?{throw?new?ValidationException(String.format("Could?not?find?any?factory?for?identifier?'%s'?that?implements?'%s'?in?the?classpath.\n\n"+?"Available?factory?identifiers?are:\n\n"+?"%s",factoryIdentifier,factoryClass.getName(),foundFactories.stream().map(Factory::factoryIdentifier).distinct().sorted().collect(Collectors.joining("\n"))));}if?(matchingFactories.size()?>?1)?{throw?new?ValidationException(String.format("Multiple?factories?for?identifier?'%s'?that?implement?'%s'?found?in?the?classpath.\n\n"+?"Ambiguous?factory?classes?are:\n\n"+?"%s",factoryIdentifier,factoryClass.getName(),matchingFactories.stream().map(f?->?f.getClass().getName()).sorted().collect(Collectors.joining("\n"))));}return?(T)?matchingFactories.get(0);}

這里的邏輯和上面加載 connector 的邏輯是一樣的,同樣通過 SPI 先加載所有的 format 然后根據(jù) factoryIdentifier 過濾出滿足條件的 format 這里其實就是 json 了. 返回 formatFactory 后開始創(chuàng)建 format 這個時候就會走到 JsonFormatFactory#createDecodingFormat 這個方法里面.真正的創(chuàng)建一個 DecodingFormat 對象.

createDecodingFormat 源碼

@Overridepublic?DecodingFormat<DeserializationSchema<RowData>>?createDecodingFormat(DynamicTableFactory.Context?context,?ReadableConfig?formatOptions)?{//?驗證相關(guān)的參數(shù)FactoryUtil.validateFactoryOptions(this,?formatOptions);//?驗證?json.fail-on-missing-field?和?json.ignore-parse-errorsvalidateDecodingFormatOptions(formatOptions);//?獲取?json.fail-on-missing-field?和?json.ignore-parse-errorsfinal?boolean?failOnMissingField?=?formatOptions.get(FAIL_ON_MISSING_FIELD);final?boolean?ignoreParseErrors?=?formatOptions.get(IGNORE_PARSE_ERRORS);//?獲取?timestamp-format.standardTimestampFormat?timestampOption?=?JsonOptions.getTimestampFormat(formatOptions);return?new?DecodingFormat<DeserializationSchema<RowData>>()?{@Overridepublic?DeserializationSchema<RowData>?createRuntimeDecoder(DynamicTableSource.Context?context,?DataType?producedDataType)?{final?RowType?rowType?=?(RowType)?producedDataType.getLogicalType();final?TypeInformation<RowData>?rowDataTypeInfo?=context.createTypeInformation(producedDataType);return?new?JsonRowDataDeserializationSchema(rowType,rowDataTypeInfo,failOnMissingField,ignoreParseErrors,timestampOption);}@Overridepublic?ChangelogMode?getChangelogMode()?{return?ChangelogMode.insertOnly();}};}

這里的邏輯也非常簡單,首先會對 format 相關(guān)的參數(shù)進(jìn)行驗證, 然后驗證 json.fail-on-missing-field 和 json.ignore-parse-errors 這兩個參數(shù).之后就開始創(chuàng)建 JsonRowDataDeserializationSchema 對象

JsonRowDataDeserializationSchema 源碼

public?JsonRowDataDeserializationSchema(RowType?rowType,TypeInformation<RowData>?resultTypeInfo,boolean?failOnMissingField,boolean?ignoreParseErrors,TimestampFormat?timestampFormat)?{if?(ignoreParseErrors?&&?failOnMissingField)?{throw?new?IllegalArgumentException("JSON?format?doesn't?support?failOnMissingField?and?ignoreParseErrors?are?both?enabled.");}this.resultTypeInfo?=?checkNotNull(resultTypeInfo);this.failOnMissingField?=?failOnMissingField;this.ignoreParseErrors?=?ignoreParseErrors;this.runtimeConverter?=new?JsonToRowDataConverters(failOnMissingField,?ignoreParseErrors,?timestampFormat).createConverter(checkNotNull(rowType));this.timestampFormat?=?timestampFormat;boolean?hasDecimalType?=LogicalTypeChecks.hasNested(rowType,?t?->?t?instanceof?DecimalType);if?(hasDecimalType)?{objectMapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS);}objectMapper.configure(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature(),?true); }

在構(gòu)造方法里面最重要的是創(chuàng)建 JsonToRowDataConverter 對象,這里面方法的調(diào)用比較多,這里只重要的方法進(jìn)行說明

createRowConverter 源碼

public?JsonToRowDataConverter?createRowConverter(RowType?rowType)?{final?JsonToRowDataConverter[]?fieldConverters?=rowType.getFields().stream().map(RowType.RowField::getType).map(this::createConverter).toArray(JsonToRowDataConverter[]::new);final?String[]?fieldNames?=?rowType.getFieldNames().toArray(new?String[0]);return?jsonNode?->?{ObjectNode?node?=?(ObjectNode)?jsonNode;int?arity?=?fieldNames.length;GenericRowData?row?=?new?GenericRowData(arity);for?(int?i?=?0;?i?<?arity;?i++)?{String?fieldName?=?fieldNames[i];JsonNode?field?=?node.get(fieldName);Object?convertedField?=?convertField(fieldConverters[i],?fieldName,?field);row.setField(i,?convertedField);}return?row;}; }

因為是 JSON 格式的數(shù)據(jù),所以是一個 ROW 類型,所以要先創(chuàng)建 JsonToRowDataConverter 對象,然后在這里會對每一個字段創(chuàng)建一個 fieldConverter 根據(jù)你在 DDL 里面定義的字段類型走不同的轉(zhuǎn)換方法,比如 String 類型的數(shù)據(jù)會調(diào)用 convertToString 方法

convertToString 源碼

private?StringData?convertToString(JsonNode?jsonNode)?{if?(jsonNode.isContainerNode())?{return?StringData.fromString(jsonNode.toString());}?else?{return?StringData.fromString(jsonNode.asText());} }

這里需要注意的是 string 類型的數(shù)據(jù)需要返回 StringData 類型不然會報類型轉(zhuǎn)換異常的錯.感興趣的朋友可以看下其他類型是如何處理的.

到這里 JsonRowDataDeserializationSchema 對象就構(gòu)造完成了.那后面其實就是優(yōu)化,轉(zhuǎn)換到翻譯成 streamGraph 再后面的過程就和 datastream api 開發(fā)的任務(wù)一樣了.

然后真正開始消費數(shù)據(jù)的時候,會走到 JsonRowDataDeserializationSchema#deserialize 方法對數(shù)據(jù)進(jìn)行反序列化.

deserialize 源碼

@Override public?RowData?deserialize(@Nullable?byte[]?message)?throws?IOException?{if?(message?==?null)?{return?null;}try?{return?convertToRowData(deserializeToJsonNode(message));}?catch?(Throwable?t)?{if?(ignoreParseErrors)?{return?null;}throw?new?IOException(format("Failed?to?deserialize?JSON?'%s'.",?new?String(message)),?t);} }

先會把數(shù)據(jù)反序列成 JsonNode 對象.

deserializeToJsonNode 源碼

public?JsonNode?deserializeToJsonNode(byte[]?message)?throws?IOException?{return?objectMapper.readTree(message); }

可以看到 Flink 的內(nèi)部是用 jackson 解析數(shù)據(jù)的.接著把 jsonNode 格式的數(shù)據(jù)轉(zhuǎn)換成 RowData 格式的數(shù)據(jù)

convertToRowData 源碼

public?RowData?convertToRowData(JsonNode?message)?{return?(RowData)?runtimeConverter.convert(message); }

然后這里的調(diào)用其實和上面構(gòu)造 JsonRowDataDeserializationSchema 的時候是一樣的

return?jsonNode?->?{ObjectNode?node?=?(ObjectNode)?jsonNode;int?arity?=?fieldNames.length;GenericRowData?row?=?new?GenericRowData(arity);for?(int?i?=?0;?i?<?arity;?i++)?{String?fieldName?=?fieldNames[i];JsonNode?field?=?node.get(fieldName);Object?convertedField?=?convertField(fieldConverters[i],?fieldName,?field);row.setField(i,?convertedField);}return?row; };

最終返回的是 GenericRowData 類型的數(shù)據(jù),其實就是 RowData 類型的,因為是 RowData 的實現(xiàn)類.然后就會把反序列后的數(shù)據(jù)發(fā)送到下游了.

總結(jié)

這篇文章主要分析了 Flink SQL JSON Format 的相關(guān)源碼,從構(gòu)建 JsonRowDataDeserializationSchema 到反序列化數(shù)據(jù) deserialize.因為篇幅原因,只展示每個環(huán)節(jié)最重要的代碼,其實很多細(xì)節(jié)都直接跳過了.感興趣的朋友也可以自己去調(diào)試一下代碼.有時間的話會更新更多的實現(xiàn)細(xì)節(jié).

推薦閱讀

Flink 任務(wù)實時監(jiān)控最佳實踐

Flink on yarn 實時日志收集最佳實踐

Flink 1.14.0 全新的 Kafka Connector

Flink 1.14.0 消費 kafka 數(shù)據(jù)自定義反序列化類

如果你覺得文章對你有幫助,麻煩點一下贊和在看吧,你的支持是我創(chuàng)作的最大動力.

總結(jié)

以上是生活随笔為你收集整理的Flink SQL JSON Format 源码解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

精品国产亚洲日本 | 中文字幕区 | 黄色一二级片 | 国产亚洲精品中文字幕 | 中文字幕日韩有码 | 一级欧美日韩 | www国产在线 | 中文字幕亚洲欧美 | 精品在线免费观看 | 又黄又网站| 国产精品久久久久久久久免费 | 久久国内精品99久久6app | 亚洲国产理论片 | 国产精品毛片久久蜜 | 国产精品手机在线观看 | 精品国产一区二区三区蜜臀 | 精品视频在线免费观看 | 黄色大片免费播放 | 日韩精品字幕 | 9797在线看片亚洲精品 | 97天堂网| 亚洲专区在线视频 | 91电影福利 | 一区二区视频在线免费观看 | 99久久99视频只有精品 | 日本大片免费观看在线 | 亚洲 欧美 另类人妖 | av在线电影网站 | 国产91精品一区二区麻豆网站 | 在线观看mv的中文字幕网站 | 色a综合| 激情狠狠干 | 天堂久久电影网 | 亚洲精品456在线播放第一页 | 97av精品 | 国产高清av免费在线观看 | 色姑娘综合网 | avove黑丝 | 五月激情六月丁香 | 亚洲激情中文 | 中文伊人 | 国产视频网站在线观看 | 久久综合视频网 | 狠狠插天天干 | 美女久久99 | 97在线视频免费 | 精品久久久久久久久亚洲 | 国产日韩亚洲 | 国产精品成人一区二区三区吃奶 | 81精品国产乱码久久久久久 | av久久久久久 | 天天色天天操综合 | 久久精品三级 | 天堂中文在线播放 | 美女免费av| 亚洲精品黄网站 | 国产精品视频免费在线观看 | 欧美三级免费 | 国产成人1区| 蜜臀av麻豆 | 久久不卡日韩美女 | 探花视频在线版播放免费观看 | 婷婷色网视频在线播放 | 欧美精品亚州精品 | 亚洲电影av在线 | 激情综合网婷婷 | 免费高清在线视频一区· | 日本黄色a级大片 | 人人爽网站 | 操综合 | 欧美久久久久久久 | 国产a免费| 久久精品亚洲精品国产欧美 | 91av蜜桃| 狠狠狠操 | 最近中文字幕免费观看 | 天天摸夜夜操 | 99超碰在线播放 | 一级免费黄色 | 超碰免费av| 午夜视频不卡 | www亚洲精品 | 国产精品美女久久久久aⅴ 干干夜夜 | 国产精品一区在线观看你懂的 | 五月婷婷激情综合网 | 成人h视频在线 | 精品久久国产一区 | 激情五月婷婷 | 国产精品美女免费视频 | 成人黄色国产 | 丁香花在线观看免费完整版视频 | 中文字幕字幕中文 | 波多野结衣久久资源 | 九九免费精品视频在线观看 | 久久久久国产免费免费 | 狠狠网亚洲精品 | 日韩性久久| 伊人av综合 | 中中文字幕av在线 | 成人h电影 | 麻豆精品传媒视频 | 国产精品美乳一区二区免费 | 国产高清在线a视频大全 | 国产一区私人高清影院 | 亚洲精品午夜一区人人爽 | 黄色在线成人 | 久久国产精品99久久久久久进口 | 色www精品视频在线观看 | 蜜臀久久99精品久久久酒店新书 | 一区在线观看 | 精品人妖videos欧美人妖 | 亚洲精品国偷拍自产在线观看 | 日韩精品久久久免费观看夜色 | 91久久丝袜国产露脸动漫 | 九九久久国产精品 | 亚洲精品永久免费视频 | 激情影院在线 | 中文字幕免费观看视频 | 免费久久精品视频 | 成人h在线 | 97香蕉超级碰碰久久免费软件 | 国产在线精品区 | 毛片网站在线观看 | 亚洲一区 av | 黄色av电影免费观看 | 九九视频这里只有精品 | 精品久久久久久亚洲 | 久久美女高清视频 | 婷婷六月丁香激情 | 97av.com| 91香蕉视频在线下载 | 色婷婷久久一区二区 | 久久狠狠婷婷 | 国产在线无 | 久久九九影视 | 国产不卡一二三区 | 欧美一区二区日韩一区二区 | 91久久久久久久一区二区 | 免费三及片 | 久草在线在线视频 | 久久久久国产成人免费精品免费 | 国产精品一区二区三区免费视频 | 丁香六月在线观看 | 午夜精品电影一区二区在线 | 天天干天天插伊人网 | 亚洲人成在线电影 | 欧美日韩国产精品一区二区三区 | 久久久电影网站 | 国产精品国产三级在线专区 | 亚洲一二三区精品 | 九九免费在线观看视频 | 日本久久综合网 | 亚洲久草视频 | 亚洲女人天堂成人av在线 | 日韩在线观看 | 亚洲 欧美 91| 成年一级片 | 黄色亚洲片 | 免费三级网 | 精品国产自在精品国产精野外直播 | 婷婷午夜激情 | 婷婷日韩 | 色天堂在线视频 | 9ⅰ精品久久久久久久久中文字幕 | 国产亚洲精品久久久久久网站 | 亚洲春色成人 | 国内精品福利视频 | 久操视频在线播放 | 成人黄色在线电影 | 日本高清免费中文字幕 | 亚洲一级二级三级 | 美女精品 | 免费av电影网站 | 久久久国产精品人人片99精片欧美一 | 欧美一级在线 | 午夜精品一区二区三区免费 | www.777奇米| 日韩av午夜在线观看 | 午夜国产一区二区三区四区 | 成人a级免费视频 | 99r在线视频 | 天海冀一区二区三区 | www.在线观看视频 | 亚洲国产精选 | 国产探花在线看 | 天天干天天操天天入 | 亚洲免费a | 特级xxxxx欧美 | 欧美日韩一区二区久久 | 午夜黄色大片 | 亚洲日本在线视频观看 | 在线电影91 | 久久超碰在线 | 在线观看黄色的网站 | 97视频总站| 好看的国产精品视频 | 日韩二区三区在线 | av高清在线 | 五月天婷婷在线观看视频 | 免费看的黄色的网站 | 五月婷婷一区二区三区 | 亚洲精品美女久久久久网站 | 一区二区三区在线观看免费视频 | 国产91亚洲| 超碰在线1 | 久久色视频 | 182午夜在线观看 | 亚洲高清资源 | 久久毛片高清国产 | 九九热在线观看 | 最新在线你懂的 | 国产综合小视频 | 久草在线高清视频 | 一区二区三区四区精品视频 | 91成年人网站 | 黄色录像av| 久久精品这里热有精品 | 免费一级片观看 | 欧洲激情在线 | 久久人人爽人人爽 | 久久成人综合 | 精品视频97| 国产精品一区二区三区视频免费 | 麻豆系列在线观看 | 麻豆视频在线观看免费 | 国产手机在线观看 | 91日韩在线播放 | 99视频在线观看一区三区 | 久久一区二区三区超碰国产精品 | 丁香婷婷久久久综合精品国产 | 最新日韩在线 | 日韩免费二区 | 婷婷色中文 | 在线免费视频你懂的 | 天天草天天干 | 亚洲涩综合 | 国产精品欧美一区二区 | 欧美最猛性xxxxx免费 | 日韩二区精品 | 亚洲一级国产 | 美女网站色免费 | 黄色小说在线免费观看 | 香蕉视频国产在线 | www.av中文字幕.com | 美女视频黄频大全免费 | 日韩亚洲欧美中文字幕 | 欧美精品国产综合久久 | 国产精品美女久久久久久久久久久 | www.五月天激情 | 久久精品99国产精品亚洲最刺激 | 日本性xxxxx| 成人黄色一级视频 | 亚洲国产精品传媒在线观看 | 久久99最新地址 | 日韩精品无码一区二区三区 | 一区二区三区动漫 | 成人影片在线免费观看 | 久久观看最新视频 | 久久国色夜色精品国产 | 成人91视频 | 天天天操操操 | 国内精品一区二区 | 欧美亚洲免费在线一区 | av综合在线观看 | 在线欧美小视频 | 久久久99精品免费观看 | 国产精品一区二区久久精品爱涩 | 九色91福利 | 国产精品成 | 欧美精品第一 | 国产毛片在线 | 激情大尺度视频 | 激情图片区 | a极黄色片| 国产一区欧美一区 | 亚洲国产字幕 | 免费在线观看不卡av | 丁香六月婷婷激情 | 91字幕| 国产一区在线不卡 | 午夜国产一区二区 | 麻豆视频一区二区 | 亚洲精品久久久久中文字幕m男 | 久久精品五月 | 国产黄色大片免费看 | 午夜精品久久久久 | 免费看一级一片 | 日韩一区二区三区观看 | 国产在线资源 | 免费网址你懂的 | 亚洲黄网站| 2017狠狠干 | 国产成人61精品免费看片 | 亚洲精品高清一区二区三区四区 | 69av网| 91成人在线网站 | av千婊在线免费观看 | 久久不射电影网 | 日韩理论片中文字幕 | av中文字幕日韩 | a电影免费看 | 在线视频你懂得 | 日韩一区二区三区不卡 | av黄色av| 99人久久精品视频最新地址 | 99在线热播精品免费 | 日韩精品一区不卡 | 国产精品男女 | 91免费的视频在线播放 | 日韩理论片中文字幕 | 欧美另类亚洲 | 免费看片成人 | 久久国产精品久久精品国产演员表 | 在线观看成年人 | 亚洲视频免费 | 精品国产一区二区三区在线观看 | 2019天天干夜夜操 | 久人人 | 99久久999久久久精玫瑰 | 超碰在线人人艹 | 久久在线免费视频 | 久久国产高清 | 亚洲精品一区二区18漫画 | 久久精品国产免费观看 | 国产热re99久久6国产精品 | www.综合网.com | 国产视频手机在线 | 成人国产精品免费观看 | www.com黄色| 欧美片网站yy | 一区二区三区免费在线观看视频 | 亚洲国产午夜 | 美女视频免费精品 | 99精品视频在线免费观看 | 狠狠的日 | 99 色 | 播五月婷婷| 婷婷久草| 成年人免费电影在线观看 | 久久久久女教师免费一区 | www天天干| 国产激情电影综合在线看 | 国产999视频 | 九九三级毛片 | 亚洲精品国产精品国自产 | 免费精品在线观看 | 人人澡人人舔 | 黄色小说免费观看 | 国产亚洲在线观看 | 国产一区福利 | 在线观看视频一区二区三区 | 亚洲精品18日本一区app | 色欧美成人精品a∨在线观看 | 天天操夜夜拍 | 岛国精品一区二区 | 欧美另类调教 | 国产精品影音先锋 | 五月开心六月伊人色婷婷 | 久久久黄色免费网站 | 免费试看一区 | 久久99精品热在线观看 | av电影在线不卡 | 国产中文字幕免费 | 成人cosplay福利网站 | 激情丁香综合五月 | 国产精品一区二 | 在线亚洲免费视频 | 亚洲国产成人在线观看 | av+在线播放在线播放 | 欧美日韩国产精品一区 | 91精品免费 | 欧亚日韩精品一区二区在线 | 日韩一区二区在线免费观看 | 婷婷色网 | 久久久久久国产精品久久 | 97国产大学生情侣酒店的特点 | 中文一区在线 | 91精品国产99久久久久 | 成人资源在线观看 | 偷拍精品一区二区三区 | 成人av电影在线观看 | 四虎永久精品在线 | 日韩精品视频在线免费观看 | 91黄色在线看 | 人成免费网站 | 国产免费一区二区三区最新6 | 天天色天天操综合 | 黄色小说网站在线 | 亚洲第一av在线 | 国产一级特黄毛片在线毛片 | 九九九在线 | 久久久国产精品网站 | 91精彩视频在线观看 | 日韩欧三级 | 91九色视频观看 | 综合精品久久久 | 久久久久伦理电影 | 午夜神马福利 | 一区二区视频网站 | 久草国产精品 | 综合国产在线 | 日本久久久久久久久久 | 亚洲精品久久久蜜桃直播 | 成片人卡1卡2卡3手机免费看 | 精品久久网 | 久久精品久久99精品久久 | www.亚洲精品 | 国产视频一级 | 久久午夜鲁丝片 | 在线视频 精品 | 亚洲欧美怡红院 | 日韩欧美成人网 | 日韩欧美综合在线视频 | 色婷婷国产在线 | 日韩高清三区 | 国产成人久久av免费高清密臂 | 天天插一插 | 日日天天av | 国产精品99久久久久久人免费 | 成年人在线免费视频观看 | 99久久精品网 | 中文字幕亚洲欧美日韩2019 | 免费在线中文字幕 | 国产精品一区在线播放 | 在线免费国产视频 | 国产成人精品综合久久久久99 | 国产视频中文字幕在线观看 | 国产精品毛片久久蜜 | 夜夜高潮夜夜爽国产伦精品 | 久久av影视| 久久精品久久综合 | 国产电影一区二区三区四区 | 免费网站在线观看成人 | 国内精品一区二区 | 97香蕉超级碰碰久久免费软件 | 国产手机在线观看视频 | 韩日精品视频 | 久草久草久草久草 | 亚洲狠狠丁香婷婷综合久久久 | 9999在线视频| 免费观看的av | 欧洲精品码一区二区三区免费看 | 国产另类av | 性日韩欧美在线视频 | 亚洲乱码国产乱码精品天美传媒 | 香蕉影视在线观看 | 亚洲五月六月 | 在线观看免费高清视频大全追剧 | 九七视频在线观看 | 国产高清日韩欧美 | 欧美日韩国产在线观看 | 日韩中文字幕免费在线观看 | 日日干美女 | 亚洲人成网站精品片在线观看 | 四川妇女搡bbbb搡bbbb搡 | av大全在线免费观看 | 精品亚洲成人 | 欧洲精品视频一区 | 欧美日本国产在线观看 | 成人免费观看av | 伊人天天综合 | 91视频在线免费 | 五月婷婷六月丁香激情 | 一区二区视频在线观看免费 | 特级a老妇做爰全过程 | 9色在线视频 | 亚洲国产成人av网 | 国产麻豆精品一区二区 | 九九视频在线播放 | 日韩中字在线 | 日日夜夜综合 | 五月综合色婷婷 | 久久精品一区二 | 99电影 | 亚洲禁18久人片 | 一区二区三区免费在线 | 超级碰视频 | 国产精品久久久久久久av电影 | 在线观看国产亚洲 | 国产特级毛片 | 97在线精品 | 中文字幕一区二区三区乱码在线 | 欧美日韩二区三区 | 免费色视频在线 | 日韩av影视在线观看 | 国产精品网在线观看 | 视频高清 | 丁香婷婷综合色啪 | 女人18精品一区二区三区 | 精品国产视频在线 | 精品亚洲午夜久久久久91 | 国产美女精品视频免费观看 | 欧美a在线免费观看 | 日本性动态图 | 狠狠干夜夜操 | 久草影视在线观看 | 国产成人一区二区在线观看 | 欧美日韩国内在线 | 久久久国产99久久国产一 | 亚洲第一久久久 | 91久久精| 黄色片网站大全 | 成人av在线观 | 狠狠网亚洲精品 | 欧美久草在线 | 韩国av一区二区三区 | 日韩三级免费观看 | 久久黄视频 | av大全免费在线观看 | 午夜av日韩 | 在线观看精品一区 | 欧美激情h | 在线天堂日本 | 成人免费在线网 | 亚洲色图22p | 国产精品嫩草影院123 | 中文有码在线视频 | 国产中文字幕一区 | 亚洲小视频在线 | 成人一级在线 | 深爱激情开心 | 天天综合网 天天综合色 | 中文字幕色网站 | 久久经典国产 | 亚在线播放中文视频 | 奇米网8888 | www.五月婷婷.com | 久精品在线观看 | 六月久久婷婷 | 亚洲春色综合另类校园电影 | 麻豆视频免费在线播放 | 国产97色| 久久久久久网址 | 免费一级片在线观看 | 欧美日韩在线观看一区二区三区 | 国产精品12 | 在线影院av | 国内精品一区二区 | 在线观看资源 | 97超碰资源| 黄色一级网 | 在线免费观看视频一区二区三区 | 久久经典国产视频 | 中文字幕 影院 | 亚洲精品在线免费播放 | 中文字幕av在线不卡 | 国产成人免费精品 | 国产一区二区在线视频观看 | 国产精品18久久久久久首页狼 | 中文字幕色婷婷在线视频 | 中文字幕在线看人 | av解说在线观看 | 精品久久久久_ | 久久免费视频这里只有精品 | 免费av福利 | 精品国模一区二区 | 国产成人精品综合久久久 | 久久爱资源网 | 亚洲成人软件 | 国产精品久久毛片 | 久草在线资源免费 | 人人舔人人爱 | 亚洲作爱视频 | 久久成年人网站 | 日韩午夜电影院 | 天天操网站 | 又黄又爽又色无遮挡免费 | 在线看的av网站 | 97在线影院 | 伊人亚洲综合 | 91精品一区二区在线观看 | 久久精品亚洲一区二区三区观看模式 | 精品国产123| 久久久国产精品人人片99精片欧美一 | 亚洲综合婷婷 | 91av在线看 | 久久精品91视频 | 狠狠干狠狠操 | 国产成人99久久亚洲综合精品 | 婷婷福利影院 | 日本字幕网 | 天天躁天天狠天天透 | 国产系列在线观看 | 成人网页在线免费观看 | 中文字幕在线观看视频一区 | 激情综合六月 | 欧美日韩在线网站 | 久久久久久久av | 日韩精品免费在线观看视频 | av免费在线播放 | 日韩欧美国产视频 | 婷婷狠狠操 | 亚洲美女精品区人人人人 | 欧美日韩成人 | 成人在线视频你懂的 | 久久福利小视频 | 97在线免费观看视频 | 草在线 | 欧美一区免费在线观看 | 久久精品一区二区三区四区 | 国产黄色在线观看 | 亚洲最新视频在线 | 在线免费色视频 | 欧美日韩久久一区 | 91在线观看欧美日韩 | 国产精品伦一区二区三区视频 | 992tv在线观看网站 | 91日韩精品 | 超碰官网 | 色a综合 | 午夜性盈盈| 国产精品久久网站 | 婷婷九月丁香 | 狠狠色丁香久久婷婷综合丁香 | av电影在线观看完整版一区二区 | 在线免费视频a | 国产一级二级视频 | 国产裸体无遮挡 | 久久人人爽人人爽 | 激情五月婷婷综合 | 国产在线第三页 | 亚洲精品久久久蜜臀下载官网 | 一二区av | 干亚洲少妇 | 一区二区三区四区久久 | 伊人网站| 黄色网www| 国产精品国产三级国产不产一地 | 免费久久网 | 久久99精品视频 | 日韩高清激情 | 亚洲精品在线网站 | 亚洲精品视频在线观看网站 | 国产91九色蝌蚪 | 午夜精品剧场 | 精品日韩在线一区 | 亚洲网站在线 | 久久精品99国产精品亚洲最刺激 | 97超碰影视 | 日韩系列在线 | 中文字幕国产精品一区二区 | 国产91精品看黄网站在线观看动漫 | 亚洲精品乱码久久久久久蜜桃91 | 91高清在线看| 麻豆一区二区 | 国产资源精品在线观看 | 四川bbb搡bbb爽爽视频 | 免费a v视频 | 亚洲国产日韩欧美在线 | 亚洲精品视频在线观看网站 | 婷婷在线不卡 | 久色免费视频 | 亚洲国产免费网站 | 久久成人国产精品 | 亚洲免费在线视频 | 九九九九色| 91精品国产乱码久久桃 | 久草网站| 日韩精品久久久免费观看夜色 | 国产精品福利在线播放 | 久草爱视频 | 久久精品牌麻豆国产大山 | 日韩在线观看一区二区三区 | 久久国产99 | 天天综合婷婷 | 国产精品成人一区二区三区吃奶 | 久草电影免费在线观看 | 狠狠干狠狠久久 | 中文字幕人成人 | 久久精品国产亚洲aⅴ | 三级动态视频在线观看 | 国产精品白虎 | 日韩在线播放欧美字幕 | 可以免费观看的av片 | 亚洲精品三级 | 国产美女精品在线 | 91精品视频在线看 | 91在线视频免费观看 | 日韩高清一二三区 | 久久久免费精品国产一区二区 | 在线观看韩国av | 免费视频一二三 | 国产亚洲精品v | 中文字幕欧美日韩va免费视频 | 日韩黄在线观看 | 精品国产欧美一区二区三区不卡 | 欧美 日韩精品 | 狠狠狠狠狠操 | 欧美一区二区三区特黄 | 在线观看一区二区精品 | 欧美日韩一区二区三区免费视频 | 亚a在线 | 国产亚洲精品久久久久久 | 日韩免费成人av | 精品国产伦一区二区三区观看说明 | 久久人人爽av | 97成人在线视频 | 一级片视频在线 | 午夜精品久久久久 | www日韩视频 | 精品一区91| 欧美一级视频免费看 | 4438全国亚洲精品在线观看视频 | 黄色在线小网站 | 欧美乱大交 | 精品国产乱码久久久久久三级人 | 91中文字幕在线观看 | 欧美久久久久久久久中文字幕 | 国产精品一区电影 | 超碰成人免费电影 | 一级做a爱片性色毛片www | 国产成人久久精品亚洲 | 精品视频在线免费观看 | 1024在线看片 | 91香蕉视频| 国产精品理论片在线观看 | 国产丝袜网站 | 手机在线欧美 | 91激情 | 久久综合视频网 | 亚洲va在线va天堂va偷拍 | 中文字幕在线观看网站 | 夜夜爽www | 婷婷狠狠操 | 在线欧美小视频 | 91精品欧美 | 91av色| 久艹视频在线观看 | 亚洲理论影院 | 99热在线免费观看 | av在线网站免费观看 | 久久综合色播五月 | 日韩精品视频免费在线观看 | 黄色avwww | 久久国产精品一区二区 | 天天天操天天天干 | 国内99视频| 成人午夜电影在线 | 国产精品永久免费在线 | 国产视频在线播放 | 日韩大片在线观看 | 国产主播大尺度精品福利免费 | 一区二区激情视频 | 在线免费中文字幕 | 婷婷色站 | 免费午夜av | 在线观看中文字幕视频 | 日日干影院 | 国产精品久久久久久久久久久不卡 | 九九热精| 欧美夫妻性生活电影 | 人人射人人爱 | 国产又粗又猛又爽又黄的视频免费 | 国产无遮挡又黄又爽在线观看 | 亚洲人成影院在线 | 伊人五月天综合 | 欧美综合干 | 亚洲精品欧洲精品 | 免费人成在线观看 | 黄色特级片 | 亚洲国产合集 | 天天躁天天狠天天透 | 亚洲aaa毛片 | 一级电影免费在线观看 | 黄色一级大片免费看 | 色就色,综合激情 | 激情欧美丁香 | 色999在线 | 美女国产网站 | 日本久久久久久 | 成人亚洲免费 | 国产情侣一区 | 狠狠色丁香婷婷综合久小说久 | 99在线热播| 亚洲精品成人 | 少妇搡bbbb搡bbb搡忠贞 | 欧美精品亚洲精品 | 日本在线免费看 | 99久久久久久国产精品 | 日韩欧美视频免费看 | 99视频导航 | 国产精品18p | 最新久久免费视频 | 五月综合色婷婷 | 九九热只有这里有精品 | 国产麻豆果冻传媒在线观看 | 五月色综合 | 99视频导航 | 亚洲国产精品激情在线观看 | 色播五月激情综合网 | 开心综合网 | 亚洲成av人片一区二区梦乃 | 999免费视频 | 国产又粗又长的视频 | 色视频网站在线观看一=区 a视频免费在线观看 | 亚洲成人影音 | 免费观看性生交大片3 | 欧美在线视频免费 | 日日夜夜天天久久 | 久久综合久久88 | 久久99免费 | 亚洲无吗av| 亚洲欧美日韩国产精品一区午夜 | 亚洲黄色在线免费观看 | 欧美成年黄网站色视频 | av短片在线观看 | 免费a现在观看 | 视频91| 高清av免费看 | 国产一级二级在线播放 | 久久99视频 | 久人人| 日韩性网站| 久久精品com| 在线黄av| 欧美日韩国产一区二区三区 | 中文字幕亚洲五码 | 亚洲人人爱 | 日韩精品一区二区三区免费观看 | 日本高清久久久 | 96精品高清视频在线观看软件特色 | 欧美一级小视频 | 国产视频一区二区在线播放 | 欧美日韩不卡一区二区 | 久久美女高清视频 | 久久久亚洲精品 | 久久久久久久久久久影视 | 久草香蕉在线视频 | 成人a毛片| 一区二区亚洲精品 | 中文在线a在线 | 中文字幕在线播放av | 亚洲毛片一区二区三区 | 天天操天操 | 97精品国产97久久久久久春色 | 在线观看亚洲免费视频 | 天天天综合网 | 色姑娘综合| 国产精品自拍在线 | 在线观看国产中文字幕 | 婷婷伊人五月 | 天天噜天天色 | 久久久久免费网站 | 中文字幕2021| 999久久 | 91自拍91| 国产精品九九久久久久久久 | 91av在| 欧美国产一区二区 | 又黄又刺激的网站 | 国产特级毛片aaaaaaa高清 | 麻豆免费在线视频 | 亚洲女裸体 | 在线观看一区二区视频 | 99久久99久久精品国产片 | 成人在线电影观看 | 国产 字幕 制服 中文 在线 | 亚洲一区二区三区在线看 | 岛国精品一区二区 | 国内精品久久久久影院优 | 成人av久久 | 亚洲欧美日韩精品久久久 | 国产精品色婷婷视频 | 天天色综合三 | 国产在线精品福利 | www.狠狠插.com | 久久私人影院 | 欧美一级片在线 | 一区二区视频播放 | 亚洲精品免费在线观看视频 | 国内少妇自拍视频一区 | 天天干天天做天天爱 | 国内精品久久久久国产 | 亚洲精品视频中文字幕 | 亚洲va在线va天堂 | www.干| 国产特级毛片aaaaaa毛片 | 久久免费的精品国产v∧ | 日批视频在线播放 | 天天做日日做天天爽视频免费 | 国产成人精品一区二区三区福利 | 999视频网 | 国产精品手机视频 | 久久99国产综合精品免费 | 久久九九影视网 | 最近免费观看的电影完整版 | 久久人人爽av| 亚洲永久精品在线 | 久久久久久电影 | 色噜噜日韩精品一区二区三区视频 | 中文字幕一区二 | 人人干人人搞 | 久久99国产精品久久99 | 激情一区二区三区欧美 | 国产在线播放一区二区 | 国产一级在线观看 | 色综合久久88色综合天天免费 | 日本韩国精品在线 | 国产成人av电影在线 | 欧美亚洲一区二区在线 | 色综合久久88色综合天天6 | 亚洲国产成人精品电影在线观看 | 国产精品影音先锋 | 免费看片网址 | 久久亚洲综合国产精品99麻豆的功能介绍 | 日韩欧美高清一区二区三区 | 免费h精品视频在线播放 | 色婷婷激情五月 | 国产一区二区三区 在线 | 欧美a级片免费看 | 天天干夜夜操视频 | 91精品国产欧美一区二区成人 | 国产在线1区 | 色在线亚洲 | 久久视频国产 | 一区二区观看 | 黄色国产在线 | 天堂av免费在线 | 中文字幕a∨在线乱码免费看 | 国产精品久久久久久久久久直播 | 欧美一级久久久久 | 在线观看黄av | 一级理论片在线观看 | 五月婷婷中文网 | 久草在线手机视频 | 亚洲精品小区久久久久久 | 免费在线播放视频 | 欧美一区二区三区在线视频观看 | 狠狠操操| 日韩高清av在线 | av丝袜美腿 | 久久99免费| 久久人人看 | 又色又爽又黄 | 国产成人精品av久久 | 开心激情五月婷婷 | 精品国产一区二区三区久久久蜜月 | 久久综合中文色婷婷 | 亚洲精品综合一区二区 | 最近中文字幕在线中文高清版 | 国产亚洲精品久久久久久移动网络 | 九九免费精品视频 | 欧美日韩综合在线 | 91在线麻豆 | 午夜精选视频 | 亚洲精品www久久久 www国产精品com | 性色av免费观看 | 欧美国产三区 | www.人人草| 91爱爱免费观看 | 国产成人性色生活片 | 亚洲在线观看av | 99久久精品视频免费 | 色婷婷av一区 | 午夜精品久久久久99热app | 日韩v欧美v日本v亚洲v国产v | 亚洲激情中文 | 中文字幕在线播放一区二区 | 国产精品18久久久久久vr | 伊人婷婷久久 | 精品国产黄色片 | 欧美人人爱 | 99久久久久免费精品国产 | 日日精品| 日韩在线 一区二区 | 国产黄色精品在线观看 | 97超碰人人澡 | 日韩偷拍精品 | 国产精品成人一区二区 | 久久婷婷激情 | 久久综合激情 | 欧美成人一区二区 | 福利视频 | 日韩欧美v | 国产黄色免费 | 久久99精品波多结衣一区 | 国产剧情在线一区 | 日韩欧美视频在线播放 | 狠狠网亚洲精品 | 国产美女被啪进深处喷白浆视频 | 日本久久中文 | 欧美成年性 | 精品国产91亚洲一区二区三区www | 日韩欧美网站 | 中文字幕人成一区 | 六月天综合网 | 伊人网综合在线观看 | 99亚洲精品视频 | 亚洲一区二区三区91 | 91丨九色丨蝌蚪丰满 | 热久久免费视频精品 | 日本h视频在线观看 | 久草在线视频看看 | 九月婷婷综合网 | 国内精品毛片 | 天天做天天干 | 中文字幕一区二区在线观看 | 成人久久免费 |