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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

hadoop源码分析_Spark2.x精通:Job触发流程源码深度剖析(一)

發(fā)布時(shí)間:2023/12/2 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hadoop源码分析_Spark2.x精通:Job触发流程源码深度剖析(一) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

,? ??

一、概述????

????之前幾篇文章對(duì)Spark集群的Master、Worker啟動(dòng)流程進(jìn)行了源碼剖析,后面直接從客戶端角度出發(fā),講解了spark-submit任務(wù)提交過(guò)程及driver的啟動(dòng);集群?jiǎn)?dòng)、任務(wù)提交、SparkContext初始化等前期準(zhǔn)備工作完成之后,后面就是我們的主函數(shù)的代碼Job如何觸發(fā)的,本篇文章還是結(jié)合源碼進(jìn)行剖析。

????軟件版本:

????????spark2.2.0

二、Job觸發(fā)流程源碼剖析

1. 我們先上一段最簡(jiǎn)單的代碼,讀取本地文件進(jìn)行WordCount,并打印統(tǒng)計(jì)結(jié)果,代碼如下:

package com.hadoop.ljs.spark220.study;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import org.apache.spark.api.java.function.FlatMapFunction;import org.apache.spark.api.java.function.Function2;import org.apache.spark.api.java.function.PairFunction;import org.apache.spark.api.java.function.VoidFunction;import org.apache.spark.sql.SparkSession;import scala.Tuple2;import java.util.Arrays;import java.util.Iterator;/** * @author: Created By lujisen * @company ChinaUnicom Software JiNan * @date: 2020-03-12 08:26 * @version: v1.0 * @description: com.hadoop.ljs.spark220.study */public class Example1 { public static void main(String[] args) throws Exception{ /*spark環(huán)境初始化*/ SparkConf sparkConf = new SparkConf().setMaster("local[*]").setAppName("Example1"); SparkSession sc = SparkSession.builder().config(sparkConf).getOrCreate(); JavaSparkContext jsc = new JavaSparkContext(sc.sparkContext()); /*讀取本地文件*/ JavaRDD<String> sourceRDD = jsc.textFile("D:\\kafkaSSL\\kafka_client_jaas.conf"); /*轉(zhuǎn)換多維為一維數(shù)組*/ JavaRDD<String> words = sourceRDD.flatMap(new FlatMapFunction<String, String>() { @Override public Iterator<String> call(String s) { return Arrays.asList(s.split(" ")).iterator(); } }); /*轉(zhuǎn)換成(hello,1)格式*/ JavaPairRDD<String, Integer> wordOne = words.mapToPair(new PairFunction<String, String, Integer>() { @Override public Tuple2<String, Integer> call(String s) { return new Tuple2<String, Integer>(s, 1); }????????}); /*根據(jù)key進(jìn)行聚合*/ JavaPairRDD<String, Integer> wordCount = wordOne.reduceByKey(new Function2() { @Override public Integer call(Integer v1, Integer v2) { return v1+v2; } }); /*打印結(jié)果*/ wordCount.foreach(new VoidFunctionString, Integer>>() { @Override public void call(Tuple2<String, Integer> result){ System.out.println("word: "+result._1+" count: "+result._2); } }); }}

????我們一行行的進(jìn)行分析,首先看讀取本地文件textFile()函數(shù):

??/*這里直接調(diào)用的SparkContext的textFile函數(shù)*/ def textFile(path: String): JavaRDD[String] = sc.textFile(path)

2. 直接看sc.textFile()函數(shù):

def textFile( path: String, minPartitions: Int = defaultMinPartitions): RDD[String] = withScope { assertNotStopped()????/*這里調(diào)用了hadoopFile函數(shù),傳入三個(gè),寫(xiě)過(guò)Mapreuce的時(shí)候都知道?第二個(gè)參數(shù)就是Map的輸入格式化類(lèi)型,參數(shù)3是行號(hào)?4是一行的內(nèi)容*/????/*hadoopFile()函數(shù),返回了一個(gè)HadoopRDD*/????hadoopFile(path,?classOf[TextInputFormat],?classOf[LongWritable],?classOf[Text],????minPartitions).map(pair?=>?pair._2.toString).setName(path) }

看hadoopFile()函數(shù)

def hadoopFile[K, V]( path: String, inputFormatClass: Class[_ <: inputformat v> keyClass: Class[K], valueClass: Class[V], minPartitions: Int = defaultMinPartitions): RDD[(K, V)] = withScope {????assertNotStopped() // This is a hack to enforce loading hdfs-site.xml. // See SPARK-11227 for details.????FileSystem.getLocal(hadoopConfiguration)????//這里把hadoopConfiguration配置做了一個(gè)廣播變量 val confBroadcast = broadcast(new SerializableConfiguration(hadoopConfiguration))????/*?傳入一個(gè)jobConf對(duì)輸入數(shù)據(jù)進(jìn)行格式化*/ val setInputPathsFunc = (jobConf: JobConf) => FileInputFormat.setInputPaths(jobConf, path)????/*?返回一個(gè)HadoopRDD實(shí)例,這里Hadoop配置文件是以廣播變量的方式傳進(jìn)去的*/????/*廣播變量?每個(gè)Worker保存一份,被多個(gè)Executor共享*/????/*HadoopRDD繼承自RDD*/ new HadoopRDD( this, confBroadcast, Some(setInputPathsFunc), inputFormatClass, keyClass, valueClass, minPartitions).setName(path) }

????上面直接對(duì)HadopRDD做了一個(gè)map轉(zhuǎn)換,這里Hadoop繼承自RDD,調(diào)用的是RDD里面的map()函數(shù),我們直接看看map函數(shù)代碼:

??/*?最后其實(shí)是返回了一個(gè)MapPartitionsRDD,里面是(key,value),key是行號(hào),value是內(nèi)容*/ def map[U: ClassTag](f: T => U): RDD[U] = withScope { val cleanF = sc.clean(f) new MapPartitionsRDD[U, T](this, (context, pid, iter) => iter.map(cleanF)) }

?上面對(duì)返回的RDD是一個(gè)鍵值對(duì),然后.map(pair?=>?pair._2.toString對(duì)其進(jìn)行了轉(zhuǎn)換,其實(shí)就是去掉了那個(gè)key行號(hào),剩下的是一個(gè)vlaue數(shù)組,里面是每行的內(nèi)容,至此textFile這一行剖析完畢。

3.主函數(shù)的第30-42行都是對(duì)RDD進(jìn)行了一系列的轉(zhuǎn)換,其實(shí)都是調(diào)用RDD.scala中的內(nèi)容對(duì)MapPartitionsRDD進(jìn)行的轉(zhuǎn)換,有興趣你可以跟進(jìn)去看一下,比較簡(jiǎn)單:

def flatMap[U: ClassTag](f: T => TraversableOnce[U]): RDD[U] = withScope { val cleanF = sc.clean(f) new MapPartitionsRDD[U, T](this, (context, pid, iter) => iter.flatMap(cleanF)) }??/*?mapToPair函數(shù)里面其實(shí)是調(diào)用的rdd.map函數(shù),剛才上面已經(jīng)說(shuō)過(guò)了*/ def mapToPair[K2, V2](f: PairFunction[T, K2, V2]): JavaPairRDD[K2, V2] = { def cm: ClassTag[(K2, V2)] = implicitly[ClassTag[(K2, V2)]] new JavaPairRDD(rdd.map[(K2, V2)](f)(cm))(fakeClassTag[K2], fakeClassTag[V2]) }

4.最后調(diào)用reduceBykey進(jìn)行了聚合,這里就比較重要了,我們之前講過(guò)一個(gè)spark任務(wù)里面會(huì)有多個(gè)job,job的劃分依據(jù)是action,有幾個(gè)action就有幾個(gè)job,而每個(gè)job的劃分依據(jù)是shuffle,只要發(fā)生了shuffle就會(huì)有新的stage生成,reduceBykey是個(gè)action操作,RDD中沒(méi)有這個(gè)函數(shù),是通過(guò)里面的隱式轉(zhuǎn)換調(diào)用了PairRDDFunctions.scala中的reduceBykey()函數(shù),里面的轉(zhuǎn)換先不用管,因?yàn)樯婕暗絪huffle操作,會(huì)有新的stage的生成,這里先略過(guò):

def reduceByKey(partitioner: Partitioner, func: (V, V) => V): RDD[(K, V)] = self.withScope { combineByKeyWithClassTag[V]((v: V) => v, func, func, partitioner)??}

5.?最后主函數(shù)調(diào)用了wordCount.foreach()進(jìn)行了結(jié)果打印,這是一個(gè)action操作,有幾個(gè)action就會(huì)提交幾個(gè)job,直接去看代碼:

def foreach(f: T => Unit): Unit = withScope { val cleanF = sc.clean(f)????/*這里是執(zhí)行了runJob,跟其他操作不一樣,這里會(huì)提交一個(gè)job*/ sc.runJob(this, (iter: Iterator[T]) => iter.foreach(cleanF)) }

????跟進(jìn)代碼,里面調(diào)用了SparkContext.scala中的函數(shù):

def runJob[T, U: ClassTag]( rdd: RDD[T], func: Iterator[T] => U, partitions: Seq[Int]): Array[U] = {??????//這里clean函數(shù)其實(shí)直接輸出????val?cleanedFunc?=?clean(func)????runJob(rdd, (ctx: TaskContext, it: Iterator[T]) => cleanedFunc(it), partitions) }

????跟進(jìn)了好幾層,最后看runJob干了啥:

def runJob[T, U: ClassTag]( rdd: RDD[T], func: (TaskContext, Iterator[T]) => U, partitions: Seq[Int], resultHandler: (Int, U) => Unit): Unit = { if (stopped.get()) { throw new IllegalStateException("SparkContext has been shutdown") } val callSite = getCallSite val cleanedFunc = clean(func) logInfo("Starting job: " + callSite.shortForm) if (conf.getBoolean("spark.logLineage", false)) { logInfo("RDD's recursive dependencies:\n" + rdd.toDebugString) }????//SparkContext初始化的dagScheduler調(diào)用runJob函數(shù)比較任務(wù),這樣就跟之前SparkContext源碼剖析內(nèi)容聯(lián)系在一起了 dagScheduler.runJob(rdd, cleanedFunc, partitions, callSite, resultHandler, localProperties.get) progressBar.foreach(_.finishAll()) rdd.doCheckpoint() }

6.上面調(diào)用了DAGScheduler中的runJob函數(shù),這個(gè)DAGScheduler是我們?cè)赟parkContext初始化的時(shí)候執(zhí)行的初始化,DAGSCheduler主要工作:創(chuàng)建Job,推斷出每一個(gè)Job的stage劃分(DAG),跟蹤RDD,實(shí)體化stage的輸出,調(diào)度job,將stage以taskSet的形式提交給TaskScheduler的實(shí)現(xiàn)類(lèi),在集群上運(yùn)運(yùn)行,其中,TaskSet是一組可以立即運(yùn)行的獨(dú)立task,基于集群上已存在的數(shù)據(jù),直接看下代碼:

def runJob[T, U]( rdd: RDD[T], func: (TaskContext, Iterator[T]) => U, partitions: Seq[Int], callSite: CallSite, resultHandler: (Int, U) => Unit, properties: Properties): Unit = { val start = System.nanoTime????/* 這里就一行比較重要,這里調(diào)用submitJob進(jìn)行提交 */ val waiter = submitJob(rdd, func, partitions, callSite, resultHandler, properties) ThreadUtils.awaitReady(waiter.completionFuture, Duration.Inf)????//?下面這些就是任務(wù)結(jié)果的一些判斷了 waiter.completionFuture.value.get match { case scala.util.Success(_) => logInfo("Job %d finished: %s, took %f s".format (waiter.jobId, callSite.shortForm, (System.nanoTime - start) / 1e9)) case scala.util.Failure(exception) => logInfo("Job %d failed: %s, took %f s".format (waiter.jobId, callSite.shortForm, (System.nanoTime - start) / 1e9)) // SPARK-8644: Include user stack trace in exceptions coming from DAGScheduler. val callerStackTrace = Thread.currentThread().getStackTrace.tail exception.setStackTrace(exception.getStackTrace ++ callerStackTrace) throw exception } }

????下面就是調(diào)用了submitJob進(jìn)行任務(wù)的提交,代碼如下:

def submitJob[T, U]( rdd: RDD[T], func: (TaskContext, Iterator[T]) => U, partitions: Seq[Int], callSite: CallSite, resultHandler: (Int, U) => Unit, properties: Properties): JobWaiter[U] = {????//?這里確認(rèn)我們提交的Partition存在 val maxPartitions = rdd.partitions.length partitions.find(p => p >= maxPartitions || p < 0).foreach { p => throw new IllegalArgumentException( "Attempting to access a non-existent partition: " + p + ". " + "Total number of partitions: " + maxPartitions) } val jobId = nextJobId.getAndIncrement() if (partitions.size == 0) { // Return immediately if the job is running 0 tasks return new JobWaiter[U](this, jobId, 0, resultHandler) } assert(partitions.size > 0) val func2 = func.asInstanceOf[(TaskContext, Iterator[_]) => _] val waiter = new JobWaiter(this, jobId, partitions.size, resultHandler)????//這里會(huì)觸發(fā)DAGSchedulerEventProcessLoop的JobSubmitted,他里面onReceive()函數(shù)????//接收消息進(jìn)行處理,這里調(diào)用的是JobSubmitted,觸發(fā)dagScheduler.handleJobSubmitted????//函數(shù)進(jìn)行處理 eventProcessLoop.post(JobSubmitted( jobId, rdd, func2, partitions.toArray, callSite, waiter, SerializationUtils.clone(properties))) waiter }

下面就是調(diào)用handleJobSubmitted()函數(shù)進(jìn)行處理,它是DAGSchduler的job調(diào)度核心入口,代碼如下:

private[scheduler] def handleJobSubmitted(jobId: Int, finalRDD: RDD[_], func: (TaskContext, Iterator[_]) => _, partitions: Array[Int], callSite: CallSite, listener: JobListener, properties: Properties) { // var finalStage: ResultStage = null????try?{??????//使用觸發(fā)job的最后一個(gè)rdd,創(chuàng)建stage??????//當(dāng)hdfs上的文件被刪除的時(shí)候??stage可能創(chuàng)建失敗 finalStage = createResultStage(finalRDD, func, partitions, jobId, callSite) } catch { case e: Exception => logWarning("Creating new stage failed due to exception - job: " + jobId, e) listener.jobFailed(e) return }????//通過(guò)finalStage創(chuàng)創(chuàng)建一個(gè)job, val job = new ActiveJob(jobId, finalStage, callSite, listener, properties) clearCacheLocs() logInfo("Got job %s (%s) with %d output partitions".format( job.jobId, callSite.shortForm, partitions.length)) logInfo("Final stage: " + finalStage + " (" + finalStage.name + ")") logInfo("Parents of final stage: " + finalStage.parents) logInfo("Missing parents: " + getMissingParentStages(finalStage)) val jobSubmissionTime = clock.getTimeMillis()????//將job加入到activeJob緩存中 jobIdToActiveJob(jobId) = job activeJobs += job finalStage.setActiveJob(job) val stageIds = jobIdToStageIds(jobId).toArray val stageInfos = stageIds.flatMap(id => stageIdToStage.get(id).map(_.latestInfo)) listenerBus.post( SparkListenerJobStart(job.jobId, jobSubmissionTime, stageInfos, properties)) //提交finalStage,但是finalStage肯定不會(huì)首先執(zhí)行,它要先執(zhí)行它的依賴stage submitStage(finalStage) }

7.最后調(diào)用了submitStage進(jìn)行了finalStage的提交,finalStage肯定不會(huì)首先執(zhí)行,它要先執(zhí)行它的依賴stage,這里面就涉及到了stage的換分了,代碼如下:

/** Submits stage, but first recursively submits any missing parents. */ private def submitStage(stage: Stage) { val jobId = activeJobForStage(stage) if (jobId.isDefined) { logDebug("submitStage(" + stage + ")") if (!waitingStages(stage) && !runningStages(stage) && !failedStages(stage)) {????????//獲取stage對(duì)應(yīng)的父stage,返回List[Stage]按id排序 val missing = getMissingParentStages(stage).sortBy(_.id) logDebug("missing: " + missing)????????//?如果父stage為空,則調(diào)用submitMissingTasks?提交stage, if (missing.isEmpty) { logInfo("Submitting " + stage + " (" + stage.rdd + "), which has no missing parents") submitMissingTasks(stage, jobId.get) } else { for (parent ???????????//?如果父stage不為空,則調(diào)用submitStage?提交父stage submitStage(parent) }??????????//并將stage放入等待的隊(duì)列中,先去執(zhí)行父stage waitingStages += stage } } } else { abortStage(stage, "No active job for stage " + stage.id, None) } }

? ?我們看下getMissingParentStages()函數(shù),如何進(jìn)行stage劃分的,代碼如下:

?//大體劃分流程:遍歷rdd的所有的依賴,如果是ShufDep,則通過(guò)getShuffleMapStage獲取stage, // 并加入到missing隊(duì)列中。如果是窄依賴的話,將放入waitingForVisit的棧中。 private def getMissingParentStages(stage: Stage): List[Stage] = { val missing = new HashSet[Stage] val visited = new HashSet[RDD[_]] // We are manually maintaining a stack here to prevent StackOverflowError // caused by recursively visiting val waitingForVisit = new Stack[RDD[_]] def visit(rdd: RDD[_]) { if (!visited(rdd)) { visited += rdd val rddHasUncachedPartitions = getCacheLocs(rdd).contains(Nil) if (rddHasUncachedPartitions) { for (dep dep match {????????????//如果shufDep也就是我們說(shuō)的寬依賴 case shufDep: ShuffleDependency[_, _, _] =>??????????????//寬依賴,則創(chuàng)建一個(gè)shuffleStage,即finalStage之前的stage是shuffle?stage val mapStage = getOrCreateShuffleMapStage(shufDep, stage.firstJobId) if (!mapStage.isAvailable) {?????????????????//加入到missing隊(duì)列,返回 missing += mapStage } //如果narrowDep也就是我們說(shuō)的窄依賴 case narrowDep: NarrowDependency[_] =>??????????????//加入等待隊(duì)列中 waitingForVisit.push(narrowDep.rdd) } } } } } waitingForVisit.push(stage.rdd) while (waitingForVisit.nonEmpty) { // 如果是窄依賴,將rdd放入棧中 visit(waitingForVisit.pop()) } missing.toList }

??? submitStage()函數(shù)中如果父stage為空則,調(diào)用submitMissingTasks()函數(shù)進(jìn)行提交,這個(gè)函數(shù)主要做了一下幾件事:

? ? a.首先獲取stage中沒(méi)有計(jì)算的partition;

? ? b.通過(guò) taskIdToLocations(id) 方法進(jìn)行tasks運(yùn)行最佳位置的確定;

? ? c.調(diào)用taskScheduler的submitTasks進(jìn)行任務(wù)的提交。

????至此,Spark任務(wù)Job觸發(fā)流程源碼深度剖析的第一部分講解完畢,后面會(huì)寫(xiě)一遍文章專門(mén)講解submitMissingTasks()函數(shù)中task最佳位置的定位、task的提交具體流程,請(qǐng)繼續(xù)關(guān)注。

? ? 如果覺(jué)得我的文章能幫到您,請(qǐng)關(guān)注微信公眾號(hào)“大數(shù)據(jù)開(kāi)發(fā)運(yùn)維架構(gòu)”,并轉(zhuǎn)發(fā)朋友圈,謝謝支持!

總結(jié)

以上是生活随笔為你收集整理的hadoop源码分析_Spark2.x精通:Job触发流程源码深度剖析(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

在线免费观看一区二区三区 | 日韩精品久久久久久久电影竹菊 | 玖玖综合网 | 午夜精品久久久久久99热明星 | 久久黄色片 | 99精品国产视频 | 日韩免费三区 | 97视频入口免费观看 | 精品美女在线观看 | 色婷婷在线观看视频 | 国产精品久久久久久久久久久久午夜 | 亚洲成人av片 | 精品国产乱码 | 99在线精品观看 | 麻豆视频免费在线播放 | 国产专区第一页 | 五月天综合网站 | 亚洲人成人天堂h久久 | 中文字幕一区二区三区四区在线视频 | 亚洲黄色免费 | 人人爽人人爱 | 国产精品 999| zzijzzij日本成熟少妇 | 日日夜色| 亚洲视频综合 | 成人中文字幕+乱码+中文字幕 | 午夜狠狠操 | 一区二区三区免费在线观看视频 | 久久成人一区二区 | 西西大胆免费视频 | 国产福利91精品张津瑜 | 一区国产精品 | 精品99免费视频 | 激情丁香婷婷 | 日韩高清不卡一区二区三区 | 91在线区| 日韩精品字幕 | 日本中文字幕在线一区 | 中文字幕在线精品 | 精品一区二区三区四区在线 | 日日麻批40分钟视频免费观看 | 久久精品女人毛片国产 | 在线免费观看黄色大片 | 久久色中文字幕 | 亚洲国产手机在线 | 一区二区激情视频 | 黄色软件在线观看免费 | 精品视频在线免费观看 | 色全色在线资源网 | 婷婷丁香国产 | 婷婷在线观看视频 | 婷婷狠狠操 | 六月婷色 | 婷婷六月综合亚洲 | 蜜臀av性久久久久av蜜臀三区 | av黄色国产 | 国产欧美精品一区二区三区 | 在线观看亚洲国产精品 | 国产1区2 | 国产精品久久久视频 | 国产精品一区二区麻豆 | 久草视频免费观 | 日韩 在线| 日韩精品在线看 | 日本午夜在线亚洲.国产 | 中文字幕一区二区三区四区在线视频 | 黄色的视频网站 | 午夜精品久久久久久久久久 | 国产日韩视频在线观看 | 久久精品综合网 | av黄在线播放 | 日韩免费看的电影 | 中文字幕a∨在线乱码免费看 | 日韩免费播放 | 草久久精品 | 中日韩三级视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 天堂在线视频中文网 | 免费看黄色91| 国产婷婷视频在线 | 日韩免费 | 人人天天夜夜 | 日韩欧美国产视频 | 一区二区三区免费网站 | 久久久久久久久久久电影 | 最近中文字幕完整高清 | 久久久久福利视频 | 91大神电影 | 成人免费ⅴa | 在线黄色免费 | 人人射人人射 | 国产精品永久免费视频 | 伊人网站 | 国产精品激情 | 亚洲一级电影 | 亚洲,国产成人av | 国产高清免费在线观看 | 五月婷婷丁香六月 | 久久电影网站中文字幕 | 日本99热 | 国产精品久久久久久久久久东京 | 国产精品一区久久久久 | 伊人久久婷婷 | 国产三级久久久 | 在线国产激情视频 | 亚洲aⅴ一区二区三区 | 国产精品福利无圣光在线一区 | 伊人色综合久久天天网 | 99久久综合狠狠综合久久 | 一级特黄aaa大片在线观看 | 天天操天天干天天操天天干 | 久久午夜色播影院免费高清 | 高清不卡毛片 | 亚洲va在线va天堂 | 久久这里只有精品视频99 | 99热官网 | 久久久久久国产精品999 | www.神马久久 | 一级成人网 | 国产精品一区二区在线免费观看 | 国色天香在线 | 97超碰在线人人 | 国产一区不卡在线 | 久草www | 天天做天天爱天天爽综合网 | 激情婷婷 | 亚洲精品国产品国语在线 | 国产成人福利在线 | 美女久久视频 | 久久久精品国产一区二区电影四季 | 月丁香婷婷 | 日韩国产精品一区 | 国产手机在线精品 | 国产一区二三区好的 | 91日韩在线 | 天天操天天干天天爱 | www.国产在线 | 国产1区在线观看 | 国产视频18 | 久久兔费看a级 | 中文字幕精品一区久久久久 | 欧美成人精品在线 | 欧美一区二区三区在线视频观看 | 国产伦精品一区二区三区在线 | 日韩一区正在播放 | 久久久国产99久久国产一 | 成人影视免费看 | 久久久久久久久久久成人 | 欧美伦理一区 | 激情丁香在线 | 国产丝袜一区二区三区 | 毛片888| 亚洲特级片 | 欧美性生交大片免网 | 国产精品不卡在线播放 | 国产精品久久久久久爽爽爽 | 高清不卡免费视频 | 玖玖在线播放 | 亚洲高清网站 | 国产精品18久久久久vr手机版特色 | 天天做天天爽 | 日韩最新av在线 | 天天综合视频在线观看 | 欧美日韩精品久久久 | 国产精品麻豆一区二区三区 | 国产一及片 | 日日躁夜夜躁xxxxaaaa | 国产亚洲精品久久 | 国产一区高清在线观看 | 国产精品久久久久久久妇 | 婷婷综合影院 | 色网站中文字幕 | 日韩免费小视频 | 国产精品久久久久久久久久久免费 | 成人免费在线播放视频 | 一区二区免费不卡在线 | 日韩欧美在线免费观看 | 国产69精品久久99不卡的观看体验 | 亚洲黄色av网址 | 婷婷在线精品视频 | 美女黄久久 | 最近2019好看的中文字幕免费 | 97视频免费在线观看 | 蜜桃视频日韩 | 中文字幕中文字幕中文字幕 | 麻豆视频免费入口 | 狠狠躁日日躁狂躁夜夜躁av | 免费观看一级 | 精品麻豆 | 五月婷婷伊人网 | 不卡的av电影 | 欧美va天堂在线电影 | 亚洲精品99久久久久久 | 人人澡人人爽欧一区 | 国产一区二区在线免费视频 | 在线观看视频你懂 | 成人h在线 | 免费看三级网站 | 久草电影在线观看 | av免费福利| 国产精成人品免费观看 | 人人看97 | 免费在线观看av网址 | 成人精品电影 | 久久66热这里只有精品 | 亚洲精品字幕 | 天天干天天干天天色 | 欧美最爽乱淫视频播放 | 日韩综合一区二区三区 | 伊人激情综合 | 国产精品一区二区三区免费看 | 美女视频黄是免费的 | 91自拍视频在线观看 | 最近日本中文字幕a | 激情久久伊人 | 国产成人三级一区二区在线观看一 | 九九久久久久久久久激情 | 最近中文字幕高清字幕免费mv | 欧美一级免费 | 综合天天久久 | 国产裸体无遮挡 | 四虎成人精品 | 三级小视频在线观看 | 波多野结衣精品 | 97天堂网| 久久精品之| 中文字幕久久精品亚洲乱码 | 一级一片免费看 | 六月丁香激情网 | 久久久久女人精品毛片九一 | 免费看搞黄视频网站 | 国产成人精品综合久久久久99 | 一区二区三区播放 | 在线中文字幕网站 | 女人18精品一区二区三区 | 精品一二三区视频 | 91精品国产成人观看 | 成人av在线网| 激情视频一区二区三区 | www五月 | 久久久婷 | 午夜精品久久久99热福利 | 免费h漫在线观看 | 一本一本久久a久久精品综合 | 日韩免费在线观看网站 | 天天天综合网 | 国产精品毛片久久久久久久 | 欧美 日韩 久久 | 999久久国产精品免费观看网站 | 2018好看的中文在线观看 | 日本精品在线看 | 久久这里只有精品9 | 在线免费观看欧美日韩 | 久久精品99国产精品日本 | 国产一区自拍视频 | 久久福利综合 | 免费在线精品视频 | 91麻豆精品国产91久久久久久久久 | 久久久久久久亚洲精品 | 中文字幕网站 | 亚洲撸撸 | 亚洲国产精品一区二区久久,亚洲午夜 | 99久久婷婷 | 成人午夜久久 | 97天堂 | 日韩高清av在线 | 久草在线免费色站 | 久久久亚洲网站 | 日韩色一区二区三区 | 青草视频免费观看 | 激情婷婷久久 | 久久私人影院 | 国产成视频在线观看 | 91久草视频 | 97视频资源 | 国产亚洲精品久久久网站好莱 | 九九热在线精品视频 | 色综合久久久久网 | 中文字幕 成人 | 精品毛片一区二区免费看 | 成年人电影毛片 | 美女免费网视频 | 国产麻豆视频 | 91精品一区二区三区久久久久久 | 男女激情片在线观看 | 天天天天综合 | a√国产免费a | 天天天干夜夜夜操 | av天天在线观看 | 国产成人精品一区二区三区在线观看 | 成人黄色毛片视频 | 国产99在线 | 九九热免费精品视频 | 国产精品视频免费看 | 亚洲黄色片 | 中文字幕文字幕一区二区 | 欧美99热| 精品一区91 | 久草网免费| 丁香六月婷婷开心婷婷网 | 欧美日韩观看 | 国产成人久久av | 91高清免费在线观看 | 91视视频在线直接观看在线看网页在线看 | 人人射人人 | 五月天com | 在线观看 国产 | 亚洲小视频在线观看 | 国产一二三区在线观看 | 久久精品视频4 | 免费观看日韩av | 欧美日韩视频一区二区三区 | 久免费| 五月婷婷在线视频 | 国产精品视频99 | 国产精品毛片一区二区在线看 | 亚洲精品中文在线资源 | 狠狠躁日日躁狂躁夜夜躁av | 亚洲国产一区二区精品专区 | 国产99区 | 亚洲免费在线观看视频 | 五月天婷婷在线观看视频 | 丁香花中文字幕 | 亚洲精品乱码久久久久久久久久 | 欧美精品一区在线 | 人人爽人人爽人人爽人人爽 | 黄色成人影视 | 国产精品毛片一区视频播 | 极品久久久久 | 狠狠操91| 最近中文字幕高清字幕免费mv | 久久一区二区三区日韩 | 中文字幕亚洲欧美 | 亚洲日日日 | 99热这里只有精品久久 | 亚洲国产欧美一区二区三区丁香婷 | 国产精品18久久久久久久网站 | 日韩| 久草新在线 | www免费 | 久久久久女人精品毛片九一 | 亚洲天天摸日日摸天天欢 | 亚洲欧美婷婷六月色综合 | 国产精品久久久久久电影 | 日韩理论在线观看 | 婷婷www | 成人国产精品久久久 | 成人毛片a | 日本久久成人中文字幕电影 | 久久国产精品久久精品国产演员表 | 91精品国自产在线 | 日韩欧美一区二区三区视频 | 久久综合视频网 | 欧美va天堂在线电影 | 久久黄色影视 | 91福利在线导航 | www.亚洲精品在线 | 精品久久亚洲 | 国产一级一片免费播放放 | 99综合电影在线视频 | 国产高清成人av | 久久短视频 | 在线看av网址| 五月婷婷六月丁香在线观看 | 日韩最新av | 黄色亚洲免费 | 免费色视频网站 | 久久久久综合 | 国产精品视频免费看 | 国产精品亚洲视频 | 午夜美女网站 | 成人精品99 | 伊人手机在线 | 五月丁色 | 国内精品99 | 日韩在线观看视频在线 | 国产精品女同一区二区三区久久夜 | 99视频黄| 国产精品美女久久久久久久 | 亚洲欧美乱综合图片区小说区 | 久久精品视频在线看 | 婷婷丁香自拍 | 精品视频免费久久久看 | 日韩特黄一级欧美毛片特黄 | 国产精品一级视频 | 成年人视频在线免费播放 | 综合天天网| 亚洲爱爱视频 | 欧美综合在线观看 | 91九色精品女同系列 | 亚洲国产日韩欧美在线 | 亚洲情影院 | 久久蜜臀av | 青春草免费视频 | 国产免费成人 | 91av在线免费播放 | 久久综合色天天久久综合图片 | 成人日批视频 | 在线免费观看一区二区三区 | 国产美女网站视频 | 久久免费成人网 | 亚洲国产美女精品久久久久∴ | 亚洲va天堂va欧美ⅴa在线 | 国产精品欧美一区二区 | 久久成人国产精品 | 最近中文字幕完整高清 | 欧美日韩在线电影 | 久久夜色精品国产欧美乱极品 | 天天插日日操 | 日本黄色黄网站 | 日韩在线视频看看 | 成人一区在线观看 | 久久人操 | 日韩日韩日韩日韩 | 国产色中涩 | 成人动漫精品一区二区 | 中文字幕九九 | 国产精品18久久久久久久久久久久 | 麻豆国产网站 | 色偷偷网站视频 | 99c视频高清免费观看 | 国产成人精品一区二区三区 | 99免费看片 | 中文字幕日韩国产 | 在线视频观看你懂的 | 国产视频亚洲精品 | 亚洲精品久久视频 | 亚洲伦理一区 | 国产精品国产三级国产专区53 | 黄色在线小网站 | 精品在线观看一区二区三区 | 黄色一级大片在线免费看国产一 | 国产精品一区二区在线免费观看 | 亚洲一片黄 | 精品99在线观看 | 亚洲综合在线五月天 | 成人av中文字幕 | 亚洲欧美日韩一区二区三区在线观看 | 国产成人三级在线播放 | 亚洲电影第一页av | 超碰人人乐 | 免费网址你懂的 | 99视频这里只有 | 六月色播| 午夜精品久久久久久99热明星 | 五月天婷婷综合 | 久久久久女教师免费一区 | 久久成人国产精品一区二区 | 久久久久久美女 | 欧洲精品久久久久毛片完整版 | 99久久精品久久久久久清纯 | 69国产成人综合久久精品欧美 | 亚洲精品视频免费在线观看 | 亚洲伦理电影在线 | 亚洲区另类春色综合小说校园片 | 亚洲乱码在线 | 深爱五月激情网 | 国产精品久久99综合免费观看尤物 | 91免费试看 | 日韩网站免费观看 | 久久大片网站 | 96av视频| 天天搞天天干天天色 | 欧美日韩中文视频 | 在线视频 亚洲 | 亚洲精品乱码久久久久久高潮 | 精品无人国产偷自产在线 | 色综合久久久久网 | 在线观看亚洲专区 | 国产自制av | av在线看片 | 久久久亚洲网站 | 免费一区在线 | 免费在线色 | 人人草人 | 黄色网址国产 | 国内精自线一二区永久 | 亚洲激情视频在线 | 日韩美在线| 香蕉视频在线网站 | 久久视频6 | 精品影院一区二区久久久 | 国产亚洲精品成人 | 婷婷香蕉| 久久在线一区 | 国产精品区在线观看 | 久久精品国产久精国产 | 久草.com| 亚洲伊人色 | 91精品欧美一区二区三区 | 丁香六月婷 | 99久久精| 国产精品自产拍在线观看中文 | 欧美日韩一区二区三区在线免费观看 | 色婷婷综合在线 | 日韩精品一区二区免费 | 国产黄色一级片 | 欧美日韩性视频 | 成片免费观看视频 | 少妇搡bbbb搡bbb搡忠贞 | 色全色在线资源网 | 黄色三级免费片 | 香蕉视频免费在线播放 | 狠狠色香婷婷久久亚洲精品 | 国产视频在 | 高清视频一区二区三区 | 美女网站色在线观看 | 国产一区二区三区网站 | 国产在线播放一区二区 | 99日精品 | 色插综合 | 黄视频网站大全 | 激情欧美日韩一区二区 | 精品国产成人在线 | 在线视频观看成人 | 欧美日韩高清在线一区 | 成人午夜影视 | 日韩在线播放视频 | 欧美日韩亚洲精品在线 | 亚洲高清视频在线 | 日本中文字幕一二区观 | 国产日韩精品在线观看 | 91大神精品视频在线观看 | 亚洲高清视频在线观看 | 在线观看日本高清mv视频 | 亚洲精品乱码久久久久久9色 | 亚洲 成人 一区 | 国产美女免费视频 | 亚洲精品国偷自产在线91正片 | 成人免费视频网址 | 日本精品一区二区三区在线观看 | 精品国产99 | 日韩精品一区二区久久 | 中文字幕国内精品 | 日韩高清在线一区二区三区 | 亚洲精色 | 免费看污片 | 五月婷婷中文网 | 在线观看91av | 久久免费视频播放 | 中文字幕在线第一页 | 久久综合婷婷综合 | 丁香电影小说免费视频观看 | 在线观看日韩专区 | 91精品国产自产在线观看 | 色婷婷成人 | 91在线视频在线 | 国内精品久久久久久久久久清纯 | 久久久在线免费观看 | 日韩欧美一区二区三区黑寡妇 | 91成人区 | 超碰在线成人 | 香蕉视频在线观看免费 | 91免费视频网站在线观看 | 国产视频美女 | 一本一道久久a久久精品蜜桃 | 亚洲爽爽网 | 国产一区二区免费在线观看 | 91九色在线观看 | 丝袜制服天堂 | 永久免费av在线播放 | 一级片免费观看视频 | 国产99一区 | 久久综合电影 | 亚洲另类视频 | 夜夜嗨av色一区二区不卡 | 操操日日| 欧美日韩高清一区二区 国产亚洲免费看 | 国产区欧美 | 国产精品毛片一区二区 | 亚洲精品视频一二三 | 亚洲成人精品在线观看 | 99精品欧美一区二区三区黑人哦 | 91毛片在线| 免费av在线| 少妇精品久久久一区二区免费 | 美州a亚洲一视本频v色道 | 天天干天天操天天射 | 午夜精品久久久久久久99水蜜桃 | 在线视频专区 | 久草影视在线 | wwwav视频| 91色亚洲| 黄色www免费 | 色偷偷av男人天堂 | 欧美一级艳片视频免费观看 | 婷婷色资源| 日韩免费一区二区在线观看 | av网站免费在线 | 亚洲黄色高清 | 99热这里只有精品国产首页 | 玖玖玖在线观看 | 99九九免费视频 | www天天干com | 国产精品成人久久久久久久 | 久久观看最新视频 | 亚洲情婷婷 | 欧美专区日韩专区 | 97在线观看免费高清 | 久久国产系列 | 日韩黄色一级电影 | 久久精品人 | 国产精品久久久久影院日本 | 毛片网在线 | 国产一区成人 | 伊人丁香 | 久草在线视频资源 | 99久久精品午夜一区二区小说 | 色婷婷狠狠操 | 93久久精品日日躁夜夜躁欧美 | 国内揄拍国产精品 | 国产免码va在线观看免费 | 色综久久 | 亚洲高清在线观看视频 | 日韩91精品 | 日韩乱码中文字幕 | 天天干,夜夜操 | 亚洲精品日韩一区二区电影 | 国产最顶级的黄色片在线免费观看 | 日韩精品免费在线播放 | 最近在线中文字幕 | 91精品国产自产老师啪 | 精品国产色 | 在线观看v片 | 日韩在线观看三区 | 久爱精品在线 | 国产成人精品一区二区三区在线观看 | 欧美久久久久久久 | av中文在线观看 | 91成人网在线 | 天天干天天摸天天操 | 国产精品欧美久久久久天天影视 | 丁香婷婷深情五月亚洲 | 久久亚洲免费视频 | 九九精品视频在线观看 | 久久一久久 | 97电影在线看视频 | 91精品国产91久久久久福利 | 在线观看亚洲精品 | 天天色天天爱天天射综合 | 中文字幕一区二区三区在线观看 | 成人观看 | 精品久久精品久久 | 国产精品久久久久久久久久久久冷 | 国产一线二线三线在线观看 | 91在线中文字幕 | 久久久久久久久国产 | 日韩av一区二区三区 | 欧美日韩国产一区二 | 国产又粗又猛又黄又爽视频 | 99九九免费视频 | 国产综合香蕉五月婷在线 | www色网站 | 91色九色 | 中文字幕在线电影 | 国内99视频| 99色在线播放 | 精壮的侍卫呻吟h | 久久香蕉影视 | 欧美aa一级片 | 日韩精品在线免费播放 | 日日日操 | 日日夜夜精品网站 | 国产91全国探花系列在线播放 | 欧美伦理一区二区三区 | 中文字幕亚洲精品日韩 | 蜜臀一区二区三区精品免费视频 | a在线播放 | 久久www免费人成看片高清 | 色婷婷伊人 | 亚洲精品免费视频 | 久久久久伊人 | 久久久久黄色 | av片子在线观看 | 亚洲精品小区久久久久久 | 久久久久久久久久免费视频 | 欧美日韩精品电影 | 免费看的黄色 | 午夜三级毛片 | 国产一区二区精品 | 亚洲成av人片一区二区梦乃 | 91精品久久久久久久99蜜桃 | 国产成人精品av | 国产精品一区二区在线观看 | 亚洲 欧洲 国产 精品 | 国产91免费在线 | 五月婷婷狠狠 | 日韩综合色 | 国产成人黄色片 | 欧美va日韩va| 日韩有码在线观看视频 | 国产黄 | 欧美 亚洲 另类 激情 另类 | 国产69精品久久久久99 | 婷婷在线免费视频 | 中文字幕黄色网址 | 一区二区三区免费在线观看视频 | 亚洲精品电影在线 | 最新精品视频在线 | 在线观看亚洲免费视频 | 亚洲精品视频中文字幕 | 丁香网五月天 | 在线观看日韩国产 | 丁香花在线视频观看免费 | 国产 亚洲 欧美 在线 | 99精品视频观看 | 久久成 | 国产精品久久网 | 婷婷丁香色 | jizz18欧美18| 蜜臀久久99精品久久久酒店新书 | 亚洲一区日韩在线 | 99久久久国产精品美女 | 国产中文 | 午夜精品久久久久久中宇69 | av片在线观看 | 日韩区欧美久久久无人区 | 国产精品美女免费视频 | 中文字幕av免费观看 | 99看视频在线观看 | 高清视频一区二区三区 | 青草草在线视频 | 91精品综合在线观看 | 亚洲精品激情 | 97在线观看免费高清完整版在线观看 | 天天爱天天爽 | av中文字幕在线观看网站 | 午夜国产福利在线观看 | 日韩在线观看中文 | 午夜视频在线瓜伦 | 久久三级毛片 | 99热亚洲精品 | 免费三级影片 | 国产精品乱码久久久久久1区2区 | 欧美精品乱码久久久久久按摩 | 最近中文字幕免费大全 | 婷婷资源站 | 欧洲精品视频一区二区 | 亚洲欧洲精品一区二区精品久久久 | av资源在线观看 | 成人黄色在线 | 日韩一区二区三区免费视频 | 午夜色影院 | 美女黄久久 | 亚洲涩涩涩 | 中文字幕在线观看资源 | 免费在线成人av | 视频一区视频二区在线观看 | 成人久久毛片 | 国产xxxx做受性欧美88 | 热久久免费视频精品 | 久久婷婷开心 | 深爱激情五月综合 | 91精品福利在线 | 婷婷亚洲综合 | 91黄色在线观看 | 91手机电影 | 久久久91精品国产 | 国产精品乱码久久久久久1区2区 | 麻豆av电影 | 日韩免费视频网站 | 国产成人一区二区在线观看 | 九九热中文字幕 | 狠狠色免费 | 欧美黄色高清 | 一级黄色大片在线观看 | 91麻豆精品国产自产在线 | 天天干天天综合 | 久操中文字幕在线观看 | 一区 二区电影免费在线观看 | 国内精品久久久久久久影视简单 | 91探花国产综合在线精品 | 久久99视频免费观看 | 在线看片日韩 | 五月婷在线播放 | 欧美综合在线视频 | 国内视频在线观看 | 国产第页| 免费黄色在线播放 | 色精品视频 | 在线观看免费版高清版 | 一级片免费观看 | 亚洲国产中文字幕在线视频综合 | 欧美一级电影免费观看 | 国产小视频国产精品 | 精品久久久久久一区二区里番 | 六月天色婷婷 | 91c网站色版视频 | 天天玩天天干天天操 | 狠狠综合网 | 色综合久久久久综合体 | 91麻豆国产| 婷婷久久综合九色综合 | 国产主播99| 婷五月天激情 | 91亚洲精品久久久蜜桃网站 | 人人爽人人舔 | 久艹在线免费观看 | 色资源网在线观看 | 97人人添人澡人人爽超碰动图 | 亚洲成年人免费网站 | 在线视频免费观看 | 午夜精品久久久久久久99热影院 | 97在线视频免费观看 | 91av手机在线 | 亚洲视频 一区 | 91成人天堂久久成人 | 久久午夜影视 | 免费进去里的视频 | 亚洲视频456 | 一二区精品 | 超碰夜夜| 五月激情五月激情 | 人人爽人人做 | 久久久久色 | 国产一区二区三区高清播放 | 蜜臀av.com| 国产69熟 | 女人18精品一区二区三区 | 欧美激情综合五月色丁香小说 | 婷婷色中文网 | 性色xxxxhd | 懂色av一区二区三区蜜臀 | 国产精品第一页在线 | 久久久久福利视频 | 五月婷婷六月丁香 | 成人黄色片免费 | 美腿丝袜一区二区三区 | www.婷婷com | 久久av电影| 国产精品久久一区二区三区不卡 | 婷婷在线观看视频 | 在线成人观看 | 国产美女精品视频 | 玖玖在线播放 | 国产精品一区二区在线看 | 久久国产热 | 亚洲欧洲国产视频 | 91爱爱中文字幕 | 少妇bbbb揉bbbb日本 | 久久99视频免费观看 | 精品亚洲国产视频 | 黄色av免费看 | 中文字幕在线看视频国产 | 色综合久久久久综合 | 亚洲激情在线观看 | 精品影院一区二区久久久 | 午夜精品一区二区三区免费视频 | 99久久婷婷国产精品综合 | 亚洲人人网 | 欧美激情操 | 国产精品久久三 | 国产69精品久久99不卡的观看体验 | 91麻豆视频网站 | 国内精品视频一区二区三区八戒 | 久久久这里有精品 | 高清视频一区二区三区 | 欧美激情视频一区二区三区免费 | 免费亚洲一区二区 | 美女网站视频免费都是黄 | 五月天色中色 | 性色va| 国产精品人人做人人爽人人添 | 亚洲无线视频 | 日韩av一区二区在线播放 | 99久久精品国产观看 | 狠狠色免费 | 久久国产精品视频免费看 | 在线观看激情av | 一区二区三区三区在线 | 婷婷久草 | 在线a视频| 欧美怡红院视频 | 97国产精品免费 | 国产精品久久久区三区天天噜 | 成人看片 | av天天草| 一区二区三区四区精品视频 | 蜜桃视频日韩 | 久草视频在线新免费 | 亚在线播放中文视频 | 91av播放| av资源免费观看 | 91在线中文字幕 | 99爱爱| 国产99久久久国产精品免费看 | 伊人伊成久久人综合网站 | 日韩精品无码一区二区三区 | av一级一片| 黄色av网站在线观看免费 | 亚洲精品视频在线播放 | 国产一区二区久久精品 | 久久久免费电影 | www.亚洲精品视频 | 日韩午夜剧场 | www.成人精品| 高清av中文在线字幕观看1 | av在线免费在线 | 精品一二区 | 亚洲成aⅴ人在线观看 | 日韩精品中文字幕有码 | 国产成人一区二区三区在线观看 | 久久精品7| 黄色成人影视 | 日韩精品一区二区三区免费观看视频 | 国产视频首页 | 成人香蕉视频 | 国产精品福利久久久 | 国产免费二区 | 国产精品久久一卡二卡 | 精品在线免费视频 | 国产三级精品三级在线观看 | 九九99视频 | 久久天天拍| 911国产| 国产高清av免费在线观看 | 亚洲精品乱码久久久久久高潮 | 日韩免费在线观看视频 | 国产在线高清 | 国产成人精品一区二区三区在线 | 日韩免费一级a毛片在线播放一级 | 日韩在线免费看 | 啪啪激情网 | 500部大龄熟乱视频使用方法 | 久久在线观看视频 | 久久女教师 | 麻豆国产网站 | 日韩久久精品一区二区 | 亚洲视频在线观看 | 少妇性aaaaaaaaa视频 | 国产一区二区三区免费观看视频 | 久久久www成人免费精品张筱雨 | 中文视频在线 | 国产资源在线视频 | 免费网址你懂的 | 一区精品在线 | 亚洲丝袜中文 | 国产 视频 久久 | 四虎小视频 | 国产成人av网 | 久艹在线免费观看 | 97av免费视频| 97成人免费| av黄色国产| 成人在线观看资源 | 免费看国产a | 成人黄色小说网 | 国产99在线 | 日韩伦理片一区二区三区 | 日日摸日日添夜夜爽97 | 亚洲91精品| 欧美精品亚州精品 | 国语精品久久 | 综合国产在线 | 亚洲精品乱码久久久久久9色 | 免费一级毛毛片 | 欧美日韩亚洲在线 | 91精品在线观看入口 | 婷婷色网| av在线免费播放网站 | 久久久高清一区二区三区 | 国产99久久久久 | 在线免费看黄网站 | 亚洲欧洲精品视频 | 国产99久久久国产精品免费看 | 狠狠网亚洲精品 | 免费av高清 | 九九免费精品视频 | 国产精品不卡在线 | 久草在线99 | 狠狠网亚洲精品 | 欧美日韩国产成人 | 日韩午夜剧场 | 在线 影视 一区 | 欧美精品免费在线 | 久久国语露脸国产精品电影 | 久久免费黄色网址 | 久久狠狠一本精品综合网 | 五月天视频网站 | 久久久久久久久久免费 | 国产精品美女久久久久久久网站 | 激情综合五月婷婷 | 国产1区2区3区精品美女 | 欧美日韩高清一区二区三区 | 久久免费视频2 | 国产精品国产自产拍高清av | 国产成人精品亚洲日本在线观看 | 日日夜日日干 | 日韩欧美精品在线观看视频 | 最新精品视频在线 | 成人小电影在线看 | 精品国产欧美一区二区三区不卡 | 人人人爽 | 超碰免费观看 | 亚洲夜夜网 | 99久久国产免费,99久久国产免费大片 | 久艹在线播放 | 国产综合在线视频 |