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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

细说ReactiveCocoa的冷信号与热信号(三):怎么处理冷信号与热信号

發布時間:2024/7/5 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 细说ReactiveCocoa的冷信号与热信号(三):怎么处理冷信号与热信号 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一篇文章中我們介紹了冷信號與熱信號的概念,前一篇文章我們也討論了為什么要區分冷信號與熱信號,下面我會先為大家揭曉熱信號的本質,再給出冷信號轉換成熱信號的方法。

揭示熱信號的本質

在ReactiveCocoa中,究竟什么才是熱信號呢?冷信號是比較常見的,map一下就會得到一個冷信號。但在RAC中,好像并沒有“hot signal”這個單獨的說法。原來在RAC的世界中,所有的熱信號都屬于一個類——RACSubject。接下來我們來看看究竟它為什么這么“神奇”。

在RAC2.5文檔的框架概述中,有著這樣一段描述:

A subject, represented by the RACSubject class, is a signal that can be manually controlled.

Subjects can be thought of as the “mutable” variant of a signal, much like NSMutableArray is for NSArray. They are extremely useful for bridging non-RAC code into the world of signals.

For example, instead of handling application logic in block callbacks, the blocks can simply send events to a shared subject instead. The subject can then be returned as a RACSignal, hiding the implementation detail of the callbacks.

Some subjects offer additional behaviors as well. In particular, RACReplaySubject can be used to buffer events for future subscribers, like when a network request finishes before anything is ready to handle the result.

從這段描述中,我們可以發現Subject具備如下三個特點:

  • Subject是“可變”的。
  • Subject是非RAC到RAC的一個橋梁。
  • Subject可以附加行為,例如RACReplaySubject具備為未來訂閱者緩沖事件的能力。
  • 從第三個特點來看,Subject具備為未來訂閱者緩沖事件的能力,那也就說明它是自身是有狀態的。根據上文的介紹,Subject是符合熱信號的特點的。為了驗證它,我們再來做個簡單實驗:

    RACSubject *subject = [RACSubject subject];RACSubject *replaySubject = [RACReplaySubject subject];[[RACScheduler mainThreadScheduler] afterDelay:0.1 schedule:^{// Subscriber 1[subject subscribeNext:^(id x) {NSLog(@"Subscriber 1 get a next value: %@ from subject", x);}];[replaySubject subscribeNext:^(id x) {NSLog(@"Subscriber 1 get a next value: %@ from replay subject", x);}];// Subscriber 2[subject subscribeNext:^(id x) {NSLog(@"Subscriber 2 get a next value: %@ from subject", x);}];[replaySubject subscribeNext:^(id x) {NSLog(@"Subscriber 2 get a next value: %@ from replay subject", x);}];}];[[RACScheduler mainThreadScheduler] afterDelay:1 schedule:^{[subject sendNext:@"send package 1"];[replaySubject sendNext:@"send package 1"];}];[[RACScheduler mainThreadScheduler] afterDelay:1.1 schedule:^{// Subscriber 3[subject subscribeNext:^(id x) {NSLog(@"Subscriber 3 get a next value: %@ from subject", x);}];[replaySubject subscribeNext:^(id x) {NSLog(@"Subscriber 3 get a next value: %@ from replay subject", x);}];// Subscriber 4[subject subscribeNext:^(id x) {NSLog(@"Subscriber 4 get a next value: %@ from subject", x);}];[replaySubject subscribeNext:^(id x) {NSLog(@"Subscriber 4 get a next value: %@ from replay subject", x);}];}];[[RACScheduler mainThreadScheduler] afterDelay:2 schedule:^{[subject sendNext:@"send package 2"];[replaySubject sendNext:@"send package 2"];}];

    按照時間線來解讀一下上述代碼:

  • 0s時創建subject與replaySubject這兩個subject。
  • 0.1s時Subscriber 1分別訂閱了subject與replaySubject。
  • 0.1s時Subscriber 2也分別訂閱了subject與replaySubject。
  • 1s時分別向subject與replaySubject發送了"send package 1"這個字符串作為
  • 1.1s時Subscriber 3分別訂閱了subject與replaySubject。
  • 1.1s時Subscriber 4也分別訂閱了subject與replaySubject。
  • 2s時再分別向subject與replaySubject發送了"send package 2"這個字符串作為
  • 接下來看一下輸出的結果:

    2015-09-28 13:35:22.855 RACDemos[13646:1269269] Start 2015-09-28 13:35:23.856 RACDemos[13646:1269269] Subscriber 1 get a next value: send package 1 from subject 2015-09-28 13:35:23.856 RACDemos[13646:1269269] Subscriber 2 get a next value: send package 1 from subject 2015-09-28 13:35:23.857 RACDemos[13646:1269269] Subscriber 1 get a next value: send package 1 from replay subject 2015-09-28 13:35:23.857 RACDemos[13646:1269269] Subscriber 2 get a next value: send package 1 from replay subject 2015-09-28 13:35:24.059 RACDemos[13646:1269269] Subscriber 3 get a next value: send package 1 from replay subject 2015-09-28 13:35:24.059 RACDemos[13646:1269269] Subscriber 4 get a next value: send package 1 from replay subject 2015-09-28 13:35:25.039 RACDemos[13646:1269269] Subscriber 1 get a next value: send package 2 from subject 2015-09-28 13:35:25.039 RACDemos[13646:1269269] Subscriber 2 get a next value: send package 2 from subject 2015-09-28 13:35:25.039 RACDemos[13646:1269269] Subscriber 3 get a next value: send package 2 from subject 2015-09-28 13:35:25.040 RACDemos[13646:1269269] Subscriber 4 get a next value: send package 2 from subject 2015-09-28 13:35:25.040 RACDemos[13646:1269269] Subscriber 1 get a next value: send package 2 from replay subject 2015-09-28 13:35:25.040 RACDemos[13646:1269269] Subscriber 2 get a next value: send package 2 from replay subject 2015-09-28 13:35:25.040 RACDemos[13646:1269269] Subscriber 3 get a next value: send package 2 from replay subject 2015-09-28 13:35:25.040 RACDemos[13646:1269269] Subscriber 4 get a next value: send package 2 from replay subject

    結合結果可以分析出如下內容:

  • 22.855s時,測試啟動,subject與replaySubject創建完畢。
  • 23.856s時,距離啟動大約1s后,Subscriber 1和Subscriber 2同時從subject接收到了"send package 1"這個值。
  • 23.857s時,也是距離啟動大約1s后,Subscriber 1和Subscriber 2同時從replaySubject接收到了"send package 1"這個值。
  • 24.059s時,距離啟動大約1.2s后,Subscriber 3和Subscriber 4同時從replaySubject接收到了"send package 1"這個值。注意Subscriber 3和Subscriber 4并沒有從subject接收"send package 1"這個值。
  • 25.039s時,距離啟動大約2.1s后,Subscriber 1、Subscriber 2、Subscriber 3、Subscriber 4同時從subject接收到了"send package 2"這個值。
  • 25.040s時,距離啟動大約2.1s后,Subscriber 1、Subscriber 2、Subscriber 3、Subscriber 4同時從replaySubject接收到了"send package 2"這個值。
  • 只關注subject,根據時間線,我們可以得到下圖:

    經過觀察不難發現,4個訂閱者實際上是共享subject的,一旦這個subject發送了值,當前的訂閱者就會同時接收到。由于Subscriber 3與Subscriber 4的訂閱時間稍晚,所以錯過了第一次值的發送。這與冷信號是截然不同的反應。冷信號的圖類似下圖:

    對比上面兩張圖,是不是可以發現,subject類似“直播”,錯過了就不再處理。而signal類似“點播”,每次訂閱都會從頭開始。所以我們有理由認定subject天然就是熱信號。

    下面再來看看replaySubject,根據時間線,我們能得到另一張圖:

    將圖3與圖1對比會發現,Subscriber 3與Subscriber 4在訂閱后馬上接收到了“歷史值”。對于Subscriber 3和Subscriber 4來說,它們只關心“歷史的值”而不關心“歷史的時間線”,因為實際上1與2是間隔1s發送的,但是它們接收到的顯然不是。舉個生動的例子,就好像科幻電影里面主人公穿越時間線后會先把所有的回憶快速閃過再來到現實一樣。(見《X戰警:逆轉未來》、《蝴蝶效應》)所以我們也有理由認定replaySubject天然也是熱信號。

    看到這里,我們終于揭開了熱信號的面紗,結論就是:

  • RACSubject及其子類是熱信號
  • RACSignal排除RACSubject類以外的是冷信號
  • 如何將一個冷信號轉化成熱信號——廣播

    冷信號與熱信號的本質區別在于是否保持狀態,冷信號的多次訂閱是不保持狀態的,而熱信號的多次訂閱可以保持狀態。所以一種將冷信號轉換為熱信號的方法就是,將冷信號訂閱,訂閱到的每一個時間通過RACSbuject發送出去,其他訂閱者只訂閱這個RACSubject。

    觀察下面的代碼:

    RACSignal *coldSignal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {NSLog(@"Cold signal be subscribed.");[[RACScheduler mainThreadScheduler] afterDelay:1.5 schedule:^{[subscriber sendNext:@"A"];}];[[RACScheduler mainThreadScheduler] afterDelay:3 schedule:^{[subscriber sendNext:@"B"];}];[[RACScheduler mainThreadScheduler] afterDelay:5 schedule:^{[subscriber sendCompleted];}];return nil;}];RACSubject *subject = [RACSubject subject];NSLog(@"Subject created.");[[RACScheduler mainThreadScheduler] afterDelay:2 schedule:^{[coldSignal subscribe:subject];}];[subject subscribeNext:^(id x) {NSLog(@"Subscriber 1 recieve value:%@.", x);}];[[RACScheduler mainThreadScheduler] afterDelay:4 schedule:^{[subject subscribeNext:^(id x) {NSLog(@"Subscriber 2 recieve value:%@.", x);}];

    執行順序是這樣的:

  • 創建一個冷信號:coldSignal。該信號聲明了“訂閱后1.5秒發送‘A’,3秒發送’B’,5秒發送完成事件”。
  • 創建一個RACSubject:subject。
  • 在2秒后使用這個subject訂閱coldSignal。
  • 立即訂閱這個subject。
  • 4秒后訂閱這個subject。
  • 如果所料不錯的話,通過訂閱這個subject并不會引起coldSignal重復執行block的內容。我們來看下結果:

    2015-09-28 19:36:45.703 RACDemos[14110:1556061] Subject created. 2015-09-28 19:36:47.705 RACDemos[14110:1556061] Cold signal be subscribed. 2015-09-28 19:36:49.331 RACDemos[14110:1556061] Subscriber 1 recieve value:A. 2015-09-28 19:36:50.999 RACDemos[14110:1556061] Subscriber 1 recieve value:B. 2015-09-28 19:36:50.999 RACDemos[14110:1556061] Subscriber 2 recieve value:B.

    參考時間線,會得到下圖:

    不難發現其中的幾個重點: 1. subject是從一開始就創建好的,等到2s后便開始訂閱coldSignal。 2. Subscriber 1是subject創建后就開始訂閱的,但是第一個接收時間與subject接收coldSignal第一個值的時間是一樣的。 3. Subscriber 2是subject創建4s后開始訂閱的,所以只能接收到第二個值。

    通過觀察可以確定,subject就是coldSignal轉化的熱信號。所以使用RACSubject來將冷信號轉化為熱信號是可行的。

    當然,使用這種RACSubject來訂閱冷信號得到熱信號的方式仍有一些小的瑕疵。例如subject的訂閱者提前終止了訂閱,而subject并不能終止對coldSignal的訂閱。(RACDisposable是一個比較大的話題,我計劃在其他的文章中詳細闡述它,也希望感興趣的同學自己來理解。)所以在RAC庫中對于冷信號轉化成熱信號有如下標準的封裝:

    - (RACMulticastConnection *)publish; - (RACMulticastConnection *)multicast:(RACSubject *)subject; - (RACSignal *)replay; - (RACSignal *)replayLast; - (RACSignal *)replayLazily;

    這5個方法中,最為重要的就是- (RACMulticastConnection *)multicast:(RACSubject *)subject;這個方法了,其他幾個方法也是間接調用它的。我們來看看它的實現:

    /// implementation RACSignal (Operations) - (RACMulticastConnection *)multicast:(RACSubject *)subject {[subject setNameWithFormat:@"[%@] -multicast: %@", self.name, subject.name];RACMulticastConnection *connection = [[RACMulticastConnection alloc] initWithSourceSignal:self subject:subject];return connection; }/// implementation RACMulticastConnection- (id)initWithSourceSignal:(RACSignal *)source subject:(RACSubject *)subject {NSCParameterAssert(source != nil);NSCParameterAssert(subject != nil);self = [super init];if (self == nil) return nil;_sourceSignal = source;_serialDisposable = [[RACSerialDisposable alloc] init];_signal = subject;return self; }#pragma mark Connecting- (RACDisposable *)connect {BOOL shouldConnect = OSAtomicCompareAndSwap32Barrier(0, 1, &_hasConnected);if (shouldConnect) {self.serialDisposable.disposable = [self.sourceSignal subscribe:_signal];}return self.serialDisposable; }- (RACSignal *)autoconnect {__block volatile int32_t subscriberCount = 0;return [[RACSignalcreateSignal:^(id<RACSubscriber> subscriber) {OSAtomicIncrement32Barrier(&subscriberCount);RACDisposable *subscriptionDisposable = [self.signal subscribe:subscriber];RACDisposable *connectionDisposable = [self connect];return [RACDisposable disposableWithBlock:^{[subscriptionDisposable dispose];if (OSAtomicDecrement32Barrier(&subscriberCount) == 0) {[connectionDisposable dispose];}}];}]setNameWithFormat:@"[%@] -autoconnect", self.signal.name]; }

    雖然代碼比較短但不是很好懂,大概來說明一下:

  • 當RACSignal類的實例調用- (RACMulticastConnection *)multicast:(RACSubject *)subject時,以self和subject作為構造參數創建一個RACMulticastConnection實例。
  • RACMulticastConnection構造的時候,保存source和subject作為成員變量,創建一個RACSerialDisposable對象,用于取消訂閱。
  • 當RACMulticastConnection類的實例調用- (RACDisposable *)connect這個方法的時候,判斷是否是第一次。如果是的話用_signal這個成員變量來訂閱sourceSignal之后返回self.serialDisposable;否則直接返回self.serialDisposable。這里面訂閱sourceSignal是重點。
  • RACMulticastConnection的signal只讀屬性,就是一個熱信號,訂閱這個熱信號就避免了各種副作用的問題。它會在- (RACDisposable *)connect第一次調用后,根據sourceSignal的訂閱結果來傳遞事件。
  • 想要確保第一次訂閱就能成功訂閱sourceSignal,可以使用- (RACSignal *)autoconnect這個方法,它保證了第一個訂閱者觸發sourceSignal的訂閱,也保證了當返回的信號所有訂閱者都關閉連接后sourceSignal被正確關閉連接。
  • 由于RAC是一個線程安全的框架,所以好奇的同學可以了解下“OSAtomic*”這一系列的原子操作。拋開這些應該不難理解上述代碼。

    了解源碼之后,這個方法的正確使用就清楚了,應該像這樣:

    RACSignal *coldSignal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {NSLog(@"Cold signal be subscribed.");[[RACScheduler mainThreadScheduler] afterDelay:1.5 schedule:^{[subscriber sendNext:@"A"];}];[[RACScheduler mainThreadScheduler] afterDelay:3 schedule:^{[subscriber sendNext:@"B"];}];[[RACScheduler mainThreadScheduler] afterDelay:5 schedule:^{[subscriber sendCompleted];}];return nil;}];RACSubject *subject = [RACSubject subject];NSLog(@"Subject created.");RACMulticastConnection *multicastConnection = [coldSignal multicast:subject];RACSignal *hotSignal = multicastConnection.signal;[[RACScheduler mainThreadScheduler] afterDelay:2 schedule:^{[multicastConnection connect];}];[hotSignal subscribeNext:^(id x) {NSLog(@"Subscribe 1 recieve value:%@.", x);}];[[RACScheduler mainThreadScheduler] afterDelay:4 schedule:^{[hotSignal subscribeNext:^(id x) {NSLog(@"Subscribe 2 recieve value:%@.", x);}];}];

    或者這樣:

    RACSignal *coldSignal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {NSLog(@"Cold signal be subscribed.");[[RACScheduler mainThreadScheduler] afterDelay:1.5 schedule:^{[subscriber sendNext:@"A"];}];[[RACScheduler mainThreadScheduler] afterDelay:3 schedule:^{[subscriber sendNext:@"B"];}];[[RACScheduler mainThreadScheduler] afterDelay:5 schedule:^{[subscriber sendCompleted];}];return nil;}];RACSubject *subject = [RACSubject subject];NSLog(@"Subject created.");RACMulticastConnection *multicastConnection = [coldSignal multicast:subject];RACSignal *hotSignal = multicastConnection.autoconnect;[[RACScheduler mainThreadScheduler] afterDelay:2 schedule:^{[hotSignal subscribeNext:^(id x) {NSLog(@"Subscribe 1 recieve value:%@.", x);}];}];[[RACScheduler mainThreadScheduler] afterDelay:4 schedule:^{[hotSignal subscribeNext:^(id x) {NSLog(@"Subscribe 2 recieve value:%@.", x);}];}];

    以上的兩種寫法和之前用Subject來傳遞的例子都可以得到相同的結果。

    下面再來看看其他幾個方法的實現:

    /// implementation RACSignal (Operations) - (RACMulticastConnection *)publish {RACSubject *subject = [[RACSubject subject] setNameWithFormat:@"[%@] -publish", self.name];RACMulticastConnection *connection = [self multicast:subject];return connection; }- (RACSignal *)replay {RACReplaySubject *subject = [[RACReplaySubject subject] setNameWithFormat:@"[%@] -replay", self.name];RACMulticastConnection *connection = [self multicast:subject];[connection connect];return connection.signal; }- (RACSignal *)replayLast {RACReplaySubject *subject = [[RACReplaySubject replaySubjectWithCapacity:1] setNameWithFormat:@"[%@] -replayLast", self.name];RACMulticastConnection *connection = [self multicast:subject];[connection connect];return connection.signal; }- (RACSignal *)replayLazily {RACMulticastConnection *connection = [self multicast:[RACReplaySubject subject]];return [[RACSignaldefer:^{[connection connect];return connection.signal;}]setNameWithFormat:@"[%@] -replayLazily", self.name]; }

    這幾個方法的實現都相當簡單,只是為了簡化而封裝,具體說明一下:

  • - (RACMulticastConnection *)publish就是幫忙創建了RACSubject。
  • - (RACSignal *)replay就是用RACReplaySubject來作為subject,并立即執行connect操作,返回connection.signal。其作用是上面提到的replay功能,即后來的訂閱者可以收到歷史值。
  • - (RACSignal *)replayLast就是用Capacity為1的RACReplaySubject來替換- (RACSignal *)replay的`subject。其作用是使后來訂閱者只收到最后的歷史值。
  • - (RACSignal *)replayLazily和- (RACSignal *)replay的區別就是replayLazily會在第一次訂閱的時候才訂閱sourceSignal。
  • 所以,其實本質仍然是

    使用一個Subject來訂閱原始信號,并讓其他訂閱者訂閱這個Subject,這個Subject就是熱信號。

    現在再回過來看下之前系列文章第二篇中那個業務場景的例子,其實修改的方法很簡單,就是在網絡獲取的fetchData這個信號后面,增加一個replayLazily變換,就不會出現網絡請求重發6次的問題了。

    修改后的代碼如下,大家可以試試:

    self.sessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:@"http://api.xxxx.com"]];self.sessionManager.requestSerializer = [AFJSONRequestSerializer serializer];self.sessionManager.responseSerializer = [AFJSONResponseSerializer serializer];@weakify(self)RACSignal *fetchData = [[RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {@strongify(self)NSURLSessionDataTask *task = [self.sessionManager GET:@"fetchData" parameters:@{@"someParameter": @"someValue"} success:^(NSURLSessionDataTask *task, id responseObject) {[subscriber sendNext:responseObject];[subscriber sendCompleted];} failure:^(NSURLSessionDataTask *task, NSError *error) {[subscriber sendError:error];}];return [RACDisposable disposableWithBlock:^{if (task.state != NSURLSessionTaskStateCompleted) {[task cancel];}}];}] replayLazily]; // modify here!!RACSignal *title = [fetchData flattenMap:^RACSignal *(NSDictionary *value) {if ([value[@"title"] isKindOfClass:[NSString class]]) {return [RACSignal return:value[@"title"]];} else {return [RACSignal error:[NSError errorWithDomain:@"some error" code:400 userInfo:@{@"originData": value}]];}}];RACSignal *desc = [fetchData flattenMap:^RACSignal *(NSDictionary *value) {if ([value[@"desc"] isKindOfClass:[NSString class]]) {return [RACSignal return:value[@"desc"]];} else {return [RACSignal error:[NSError errorWithDomain:@"some error" code:400 userInfo:@{@"originData": value}]];}}];RACSignal *renderedDesc = [desc flattenMap:^RACStream *(NSString *value) {NSError *error = nil;RenderManager *renderManager = [[RenderManager alloc] init];NSAttributedString *rendered = [renderManager renderText:value error:&error];if (error) {return [RACSignal error:error];} else {return [RACSignal return:rendered];}}];RAC(self.someLablel, text) = [[title catchTo:[RACSignal return:@"Error"]] startWith:@"Loading..."];RAC(self.originTextView, text) = [[desc catchTo:[RACSignal return:@"Error"]] startWith:@"Loading..."];RAC(self.renderedTextView, attributedText) = [[renderedDesc catchTo:[RACSignal return:[[NSAttributedString alloc] initWithString:@"Error"]]] startWith:[[NSAttributedString alloc] initWithString:@"Loading..."]];[[RACSignal merge:@[title, desc, renderedDesc]] subscribeError:^(NSError *error) {UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:error.domain delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];[alertView show];}];

    當然,細心的同學會發現這樣修改,仍然有許多計算上的浪費,例如將fetchData轉換為title的block會執行多次,將fetchData轉換為desc的block也會執行多次。但是由于這些block都是無副作用的,計算量并不大,可以忽略不計。如果計算量大的,也需要對中間的信號進行熱信號的轉換。不過請不要忽略冷熱信號的轉換本身也是有計算代價的。

    好的,寫到這里,我們終于揭開RAC中冷信號與熱信號的全部面紗,也知道如何使用了。希望這個系列文章可以讓大家更好地了解RAC,避免使用RAC遇到的誤區。謝謝大家。

    美團iOS組有很多志同道合的小伙伴,對于各種技術都有著深入的了解,我們熱忱地歡迎一切牛掰的小伙伴加入,共同學習,共同進步。(簡歷請發送到郵箱 liangsi02@meituan.com)

    總結

    以上是生活随笔為你收集整理的细说ReactiveCocoa的冷信号与热信号(三):怎么处理冷信号与热信号的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    久久久久激情电影 | 免费能看的黄色片 | 亚洲成人网av | 激情av在线资源 | 亚洲精品成人av在线 | 国产xx视频 | 国产一区二区在线视频观看 | 91av原创 | 国产一区二区影院 | 精品产品国产在线不卡 | 中文字幕免费看 | 日韩欧美精品在线 | 免费a级黄色毛片 | 天天激情 | 欧美a性| 波多野结衣久久精品 | 97综合在线 | 黄色免费网站下载 | 午夜成人免费电影 | 免费在线激情视频 | 久久午夜电影网 | 日韩网站一区二区 | 黄色a三级| 久久三级视频 | 在线免费av网站 | 亚州五月| 欧美精品久久久久久久免费 | 香蕉视频在线网站 | 久久免费播放视频 | 四虎成人精品永久免费av | 在线之家官网 | 九九免费在线视频 | 国产午夜麻豆影院在线观看 | 九七人人干 | 欧美日韩精品在线一区二区 | 97爱爱爱| 亚洲 综合 专区 | 亚洲免费a | 国产一区电影在线观看 | 九九九九热精品免费视频点播观看 | www.久久色| 日韩高清在线一区二区 | www.狠狠插.com| 精品国产123 | 久久成人黄色 | 五月天精品视频 | 国产精品久久久一区二区三区网站 | 国产精品一区二 | 日本aaa在线观看 | 久久免费视频这里只有精品 | 亚洲天天综合 | 久久高清视频免费 | 美女视频黄色免费 | 久久久久久亚洲精品 | 久久久久一区 | 久久久毛片 | 久久综合色天天久久综合图片 | 国内精品在线一区 | 亚洲国产美女精品久久久久∴ | 91视频中文字幕 | 天天插天天爱 | 免费h漫在线观看 | 亚洲永久精品在线观看 | 日韩在线播放欧美字幕 | 五月天激情综合网 | 91精品国自产在线 | 久香蕉| 男女精品久久 | 国产精品一区二区av | 亚洲精品乱码久久久久久蜜桃91 | 欧美一级电影在线观看 | 日日操日日干 | 免费观看黄色12片一级视频 | 精产嫩模国品一二三区 | 久久激情综合网 | 日韩中文字幕视频在线 | 欧美性生活免费 | 天堂av色婷婷一区二区三区 | 日韩av影视在线观看 | 精品在线观看一区二区 | 99精品国产99久久久久久福利 | 久久超 | 中文字幕一区二区在线播放 | 精品视频在线观看 | 在线观看免费版高清版 | 国产精品美女久久久久久 | 久草免费在线视频 | 国产xvideos免费视频播放 | 视频在线播放国产 | 超级av在线| 国产精品18毛片一区二区 | 黄视频网站大全 | 超碰在线成人 | 色综合久久久久久久久五月 | 在线免费成人 | 天天玩天天干 | 美女视频黄是免费的 | 亚洲人成人天堂h久久 | 狠狠色丁香久久婷婷综合_中 | 成人a级大片 | 九九免费观看全部免费视频 | 最新国产在线视频 | 日韩在线视频精品 | 成人午夜电影网站 | 美女免费av | 色99导航 | 久久99久久99精品免费看小说 | 亚洲午夜久久久久久久久电影网 | 久久福利综合 | 亚洲国产视频直播 | 超碰人人舔 | 在线国产一区二区三区 | 精品免费久久久久久 | 黄色免费看片网站 | 日韩久久片 | 香蕉国产91 | 日本三级大片 | 狠狠干夜夜爱 | 亚洲欧洲国产精品 | 一级片免费观看视频 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 国产精品淫片 | 黄网站app在线观看免费视频 | 亚洲 中文 在线 精品 | 久久婷婷五月综合色丁香 | 国产精品一区二区三区在线 | 成人a在线观看 | 在线免费试看 | 精品久久精品久久 | 欧美日韩亚洲在线 | 一级一片免费看 | 欧美精品你懂的 | 三级动态视频在线观看 | 在线观看的黄色 | 久久精品久久99精品久久 | 国产精品男女视频 | 日韩精品不卡在线观看 | 国产免费三级在线观看 | 国产第一福利网 | 成人看片 | 美女黄网久久 | 国产免费不卡av | 成人午夜电影久久影院 | 欧美高清视频不卡网 | 色噜噜在线观看视频 | 久久精品视频18 | 中文字幕av免费在线观看 | av免费电影在线观看 | www.夜夜干.com| 精品自拍sae8—视频 | 日本最新一区二区三区 | 91传媒在线看 | 在线观看成人 | 亚洲 成人 一区 | 国产高清区 | 欧美在线久久 | 亚洲理论视频 | 中文字幕a∨在线乱码免费看 | 日本精品久久久久久 | 91福利国产在线观看 | av在线免费播放 | 欧美二区三区91 | 国产精品毛片一区二区 | 亚洲日本一区二区在线 | 在线观看不卡视频 | 亚洲国产视频网站 | 一区二区 久久 | 国产精品久久免费看 | 亚洲精品国精品久久99热 | 福利二区视频 | 碰超在线观看 | 97精品国产97久久久久久 | 午夜av不卡 | 亚洲一区免费在线 | 中文字幕在线观看的网站 | 欧美色噜噜噜 | 超碰在线人人爱 | 91九色蝌蚪视频在线 | 中文字幕资源网 | 国产主播大尺度精品福利免费 | 夜夜爽天天爽 | 超碰在线国产 | 99视频在线精品免费观看2 | 天天操天天操天天操天天 | 综合在线观看 | 日韩色一区二区三区 | 成人av地址 | 欧美精品第一 | 国产精品视频免费在线观看 | 五月天六月婷婷 | 亚洲国产电影在线观看 | 久久久久久99精品 | 亚洲乱码精品久久久 | 91黄色免费网站 | 国产精品区二区三区日本 | 国产视频在线观看一区二区 | 五月亚洲 | 黄色一级大片在线免费看国产一 | 国产极品尤物在线 | 麻豆免费精品视频 | 又黄又爽的免费高潮视频 | 国产黄在线看 | 国产成人三级三级三级97 | 久久国产福利 | 91片在线观看 | 亚洲精品视频免费 | 国产精品五月天 | 亚洲尺码电影av久久 | 欧美精品亚州精品 | 天天操夜夜叫 | 国产成人黄色网址 | 91精品人成在线观看 | 免费毛片一区二区三区久久久 | 高清国产午夜精品久久久久久 | 日韩国产高清在线 | 久久不卡免费视频 | 伊人国产在线观看 | 国产精品高清在线 | 国产精品美女久久久久久免费 | 亚洲精品高清一区二区三区四区 | 国产精品va在线 | 一级黄色片在线免费观看 | 在线视频日韩欧美 | 日韩高清黄色 | 99r在线观看 | 久久精品欧美视频 | 91亚洲在线| 好看的国产精品视频 | 国产日产精品一区二区三区四区 | 视频在线观看入口黄最新永久免费国产 | 99精品观看 | 日日夜夜免费精品视频 | 国产96在线观看 | 国产精品日韩久久久久 | 高清国产午夜精品久久久久久 | 一区三区视频 | a一片一级 | 免费看色网站 | 在线观看国产中文字幕 | 叶爱av在线 | 亚洲aⅴ在线观看 | 欧美日韩国产精品一区二区三区 | 中文字幕免费看 | 99视频这里有精品 | 久久这里有精品 | 99视频在线观看一区三区 | 四虎成人免费影院 | 99国产情侣在线播放 | 色综合久久久久久久 | 免费视频久久 | 久草在线视频新 | 91成年视频 | 午夜在线资源 | 天天躁日日躁狠狠躁 | 日韩精品一区二区三区在线播放 | 国产一区二区高清不卡 | 国产日韩视频在线播放 | 96精品高清视频在线观看软件特色 | 久久久久久久久艹 | 九九视频热| 天天天操操操 | 黄色免费观看视频 | 日韩电影一区二区三区在线观看 | av电影一区 | 国产精品久久久久久久久久久久午 | 国产福利一区二区在线 | 手机看片国产 | 操老逼免费视频 | 欧美一级日韩三级 | 国产精品大全 | 免费亚洲黄色 | 三级在线国产 | 国产成人av免费在线观看 | 国产视频亚洲视频 | 国内精品久久久久 | 色狠狠婷婷 | 久久亚洲二区 | 97av视频| 国产精品视频永久免费播放 | 日本最新高清不卡中文字幕 | 91在线免费看片 | 国产高清专区 | 日日干天天爽 | 国产黄色免费看 | 99视频99| 丁香婷婷基地 | 日韩精品在线视频免费观看 | 欧洲激情综合 | 亚洲少妇自拍 | 亚洲高清免费在线 | 久久精品欧美视频 | 黄色1级大片| 99久久999久久久精玫瑰 | 精品专区一区二区 | 麻豆精品91 | 91在线91| 91在线操 | 97视频在线免费观看 | 国产精品国产三级国产aⅴ入口 | 久久精品国产精品亚洲精品 | 一区二区视频在线看 | 91香蕉视频在线 | 最新免费中文字幕 | 国产精品久久久久久久7电影 | 天堂av官网 | 国产精品一区专区欧美日韩 | 六月婷婷久香在线视频 | 精品一区二区6 | 狠狠的日 | 亚洲永久国产精品 | 免费在线电影网址大全 | 91麻豆精品国产91久久久久久 | 日本黄色a级大片 | 九九视频在线观看视频6 | 国产黄色视 | 欧美日韩高清在线观看 | 免费福利片2019潦草影视午夜 | 狠狠干婷婷| 尤物一区二区三区 | 久草视频视频在线播放 | 91在线www| 五月天伊人| 丁香激情婷婷 | 日韩精品不卡 | 亚洲精品在线观看网站 | 黄网在线免费观看 | 亚洲 欧美 综合 在线 精品 | 亚洲第一av在线播放 | 色妞色视频一区二区三区四区 | 久久久久在线视频 | 91精品国产网站 | 成人h在线 | 99久久精品国产亚洲 | 免费观看一区二区三区视频 | 99精品成人 | 中文字幕久久亚洲 | 久久久久国产精品一区二区 | 国产69精品久久app免费版 | 久久国产欧美日韩精品 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 最新日韩视频 | 国产高清视频免费在线观看 | 黄色毛片在线看 | 免费在线黄色av | 国产亚洲精品久久久久久无几年桃 | 国产午夜剧场 | 久久久精品亚洲 | 天天干天天干天天 | 国产精品麻豆果冻传媒在线播放 | 国产精品99久久久久久小说 | 色婷婷精品大在线视频 | 久久人人爽视频 | 久久蜜臀一区二区三区av | 国产专区在线看 | 天天射天天舔天天干 | 久久久久高清毛片一级 | 国产成人av在线影院 | 中文免费 | 操碰av| 国产日本在线 | 丁香激情婷婷 | 91探花国产综合在线精品 | 在线免费观看涩涩 | 国内综合精品午夜久久资源 | 黄a在线看 | 国产午夜精品久久久久久久久久 | 国产亚洲欧美日韩高清 | 欧美色黄 | 国产91欧美 | 亚洲四虎 | 不卡视频在线看 | 亚洲人人射 | 91香蕉视频污在线 | 九九热免费观看 | 天天婷婷 | 精品在线不卡 | 亚洲欧美国产日韩在线观看 | 天天操天天干天天干 | 婷婷色中文字幕 | 五月婷婷在线视频 | 国产精品va在线 | 亚洲 欧洲 国产 日本 综合 | 亚洲精品中文在线 | 国产精品乱码一区二三区 | 欧美老少交 | 日韩欧美一区二区三区在线观看 | 久久天| 国产精品毛片久久久久久久久久99999999 | 在线视频中文字幕一区 | 国产99在线播放 | 丁香九月激情综合 | 99精品影视 | 福利片视频区 | 碰碰影院 | 国产精品6999成人免费视频 | 99久久精品国产一区二区三区 | www.天天成人国产电影 | 国产精品成人一区二区三区吃奶 | 成人a毛片 | ww亚洲ww亚在线观看 | 三级午夜片 | 香蕉视频国产在线 | 西西大胆啪啪 | 九精品 | 久久精品国产精品亚洲 | 91免费网址| 九九久久婷婷 | 欧美激情精品久久久久久变态 | 97精品国自产拍在线观看 | 在线看v片成人 | 色停停五月天 | 日本黄色免费看 | 日韩高清 一区 | 久久大香线蕉app | 久久国产精品视频观看 | 99精品视频在线播放观看 | 久久男女视频 | 最近中文字幕免费视频 | 四虎免费在线观看视频 | 人人干在线观看 | 日韩高清不卡一区二区三区 | 91麻豆精品国产自产 | 18做爰免费视频网站 | 亚洲精品在线免费观看视频 | www四虎影院 | 国产九九九九九 | 五月婷色| 狠狠久久伊人 | 亚洲国产精品成人va在线观看 | 麻豆传媒视频在线 | 亚洲天堂精品 | 在线免费观看涩涩 | 久久国内免费视频 | 一区二区不卡在线观看 | 久久免费视频播放 | 国产精品 国内视频 | 天天se天天cao天天干 | 一区二区三区韩国免费中文网站 | 亚洲免费av在线播放 | 懂色av懂色av粉嫩av分享吧 | 国内精品久久久久国产 | 黄色片视频免费 | 国产精品免费久久久久 | 亚洲欧美国产精品 | 81国产精品久久久久久久久久 | 黄色高清视频在线观看 | 久草在线综合 | 日韩免费在线观看 | 97人人网| 欧美日韩在线免费观看视频 | 中文字幕久久精品 | 激情综合交| 天天做天天干 | 在线观看91精品国产网站 | 亚洲高清视频在线观看免费 | 美女视频黄,久久 | 久久天天操 | 色偷偷网站视频 | 亚洲经典中文字幕 | 国产精品s色 | 成年人在线观看网站 | 日韩av午夜| 久久激情日本aⅴ | 91精品国产一区 | 久久免费视频播放 | 欧美激情综合五月色丁香小说 | 天天爱天天干天天爽 | 色视频在线观看 | 免费三级a | 久久久久国产精品视频 | 热re99久久精品国产66热 | 国产亚洲va综合人人澡精品 | 亚洲精品xx | 亚洲另类xxxx | 欧美激情视频在线观看免费 | 国产综合在线视频 | 成人黄色av免费在线观看 | 中文资源在线观看 | 日韩欧美在线播放 | 国产日韩精品一区二区在线观看播放 | 国产成人一区二区在线观看 | 99国内精品 | 51久久夜色精品国产麻豆 | 天天操天天操天天操 | 在线亚洲午夜片av大片 | 人人澡人摸人人添学生av | 在线亚洲成人 | 日韩亚洲精品电影 | 欧美性色黄大片在线观看 | 久久综合9988久久爱 | 毛片网站在线看 | 国内精品久久久久国产 | 91国内在线| 久草热久草视频 | 999成人国产 | 狂野欧美激情性xxxx | 中文字幕一区二区三区四区 | 欧美视频www| 免费在线观看成人 | 97在线免费视频观看 | 超碰人人草人人 | 爱爱一区 | 久久精品国产一区 | 欧美最猛性xxxxx(亚洲精品) | 久久久www免费电影网 | 欧美精品在线观看免费 | 波多野结衣在线视频一区 | 四虎影视精品永久在线观看 | 丁香婷婷激情国产高清秒播 | a在线观看视频 | 久久久视频在线 | 99人久久精品视频最新地址 | 国产成人精品一区二三区 | 国产精品久久久久久久久毛片 | 久久国产精品久久久久 | 视频一区在线免费观看 | 日韩精品一区二区三区免费视频观看 | 色偷偷97| 免费高清男女打扑克视频 | 狠狠操电影网 | 天天做天天爱天天爽综合网 | 最近日本中文字幕 | 亚洲综合精品在线 | 97免费公开视频 | 成人性生交大片免费观看网站 | 国产中文字幕一区二区三区 | 中文字幕乱码一区二区 | 97品白浆高清久久久久久 | 99精品在线视频观看 | 一本一本久久a久久精品综合 | www日日 | 成年人在线观看免费视频 | 91精品亚洲影视在线观看 | 天天视频亚洲 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 免费高清在线视频一区· | 欧美夫妻性生活电影 | 成人免费视频观看 | 国产中文字幕网 | 在线观看精品国产 | 国产精品专区在线 | 永久免费的啪啪网站免费观看浪潮 | 婷婷在线网站 | 黄色成年 | 亚洲精品美女免费 | 欧美一级久久久久 | 97久久精品午夜一区二区 | 在线观看日韩视频 | 成x99人av在线www | 在线视频麻豆 | 亚洲精品乱码久久久久久高潮 | 久热色超碰 | 99中文字幕视频 | 激情自拍av | 激情婷婷综合 | 可以免费看av | 国产黄色理论片 | 成人一级在线观看 | 成人av在线播放网站 | 日日躁天天躁 | 久久论理 | 国产福利91精品张津瑜 | 精品久久久久久久久中文字幕 | 成年人国产在线观看 | 99在线视频网站 | 天天操天天操天天操天天操天天操天天操 | 亚洲精品激情 | www成人av | 偷拍精品一区二区三区 | 人人擦| 色在线中文字幕 | 五月婷婷黄色 | 激情视频久久 | 国产午夜精品一区二区三区嫩草 | 91成人免费看片 | 日韩精品视频久久 | 精品国产成人在线 | 成年人免费看的视频 | 日日夜夜艹 | 视频成人 | 天堂网中文在线 | 狠狠干狠狠艹 | 国产美女精品 | 免费一级特黄毛大片 | 九九综合久久 | 在线免费国产 | 黄色特一级 | 99r在线| 天天操夜夜操国产精品 | 四虎成人网| 国产一区久久久 | 久久久精品 一区二区三区 国产99视频在线观看 | 免费亚洲黄色 | 久久久www成人免费精品 | 国产资源中文字幕 | 免费网站在线观看人 | 亚洲一二三区精品 | 欧美日韩a视频 | 成人a免费视频 | 国产三级精品三级在线观看 | 日韩在线第一区 | 国产91欧美 | 中文字幕有码在线 | 日韩在线免费看 | 九九日九九操 | 91精品国产麻豆国产自产影视 | 亚洲精品在线免费看 | 99热国产在线 | 亚洲黄色在线免费观看 | 在线最新av| 欧美韩日在线 | 国产香蕉97碰碰碰视频在线观看 | 91高清视频在线 | 成人精品电影 | 中文字幕一区二区三区精华液 | 久青草视频在线观看 | 亚洲视频第一页 | 国产在线p| 欧美福利网址 | 日韩高清av在线 | 国产在线观看国语版免费 | 欧美在线观看视频免费 | 九九视频在线播放 | 久久免费视频7 | 日本精品一区二区三区在线播放视频 | www.狠狠插.com | 婷婷黄色片 | 一级片在线 | 亚洲成人av在线电影 | 久久精品99北条麻妃 | 精品福利在线视频 | 亚洲日本在线一区 | 亚洲伊人婷婷 | 天天艹天天 | 国产精品一区二区久久国产 | 视频一区二区视频 | 天天色天天操综合网 | 成人久久18免费网站麻豆 | 国内精品在线看 | 亚州激情视频 | 成人欧美亚洲 | 91视频中文字幕 | 国产九九九精品视频 | 免费在线观看av电影 | 91成年视频 | 超碰.com| 久久色亚洲 | 尤物九九久久国产精品的分类 | 久久影视中文字幕 | 亚洲精品在线观看的 | 在线天堂日本 | 波多野结衣精品在线 | 午夜久久福利 | 99九九视频| av视屏在线播放 | 久久久久久综合 | 波多野结衣小视频 | 久久久久麻豆v国产 | 亚洲综合成人专区片 | 深爱激情综合 | 欧美最猛性xxx | 99久久免费看 | 五月婷婷综合在线观看 | 国产精品久久久久久婷婷天堂 | 日韩精品一区二区在线观看 | av线上看| 美女视频是黄的免费观看 | 欧美一级电影片 | 6080yy精品一区二区三区 | 国产一区免费在线观看 | 久久精品国产久精国产 | av中文字幕日韩 | 日批视频| 午夜精品视频一区二区三区在线看 | 免费在线观看的av网站 | 国产精品自产拍在线观看 | 国产一区在线精品 | 欧美怡红院 | 亚洲欧美日本一区二区三区 | 亚洲在线免费视频 | 亚洲日本韩国一区二区 | 国产在线高清视频 | 在线91色| 午夜视频久久久 | 欧美 日韩 性 | 国产在线精品福利 | 91成人精品国产刺激国语对白 | 国产精品美女毛片真酒店 | 国产精品三级视频 | a v在线观看| 麻豆精品国产传媒 | 亚洲午夜久久久久久久久 | 女女av在线| 国产精品免费久久久久久久久久中文 | 四虎成人精品在永久免费 | 特级黄色一级 | 免费看的黄网站软件 | 国产中文字幕免费 | 国产艹b视频 | 91大神精品视频在线观看 | 免费看日韩 | 精品成人a区在线观看 | 久久综合久色欧美综合狠狠 | 久久tv视频| 亚洲九九精品 | 日韩在线观看视频免费 | 正在播放国产91 | 欧美aⅴ在线观看 | 天堂资源在线观看视频 | 97免费在线观看 | www.com黄色| 亚洲精品小视频在线观看 | 亚洲永久字幕 | 999久久久久久久久6666 | 久久久精品久久日韩一区综合 | 久久国产精品99精国产 | 日韩av成人 | 免费一级特黄毛大片 | 国产精品毛片久久久久久久久久99999999 | 天天天在线综合网 | 日韩有码网站 | 亚洲精品久久久久中文字幕二区 | 一级久久精品 | 五月婷婷视频在线 | www.天天干| 在线观看国产区 | 丁香电影小说免费视频观看 | 色a综合 | 丁五月婷婷 | 免费电影播放 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 中文字幕亚洲高清 | 欧美黄污视频 | 西西4444www大胆无视频 | 黄色一级免费 | 欧洲视频一区 | 久久手机精品视频 | 久久99久久99精品免观看软件 | 久久av一区二区三区亚洲 | 91麻豆精品国产午夜天堂 | www.天天色.com | 亚洲欧美国产日韩在线观看 | 国产精品毛片久久久久久 | 18久久久| 国模视频一区二区 | 久久黄色美女 | 国产亚洲成人精品 | www.夜夜操.com | 久草9视频 | 自拍超碰在线 | 久久伊人国产精品 | 成年人在线电影 | 亚洲第一中文网 | 丁香婷婷在线观看 | 在线看的av网站 | 久久亚洲免费 | a天堂中文在线 | 国产片免费在线观看视频 | 国产精品美女免费视频 | 成人观看 | 欧美99精品| 国产一区自拍视频 | 国产亚洲小视频 | 日韩乱色精品一区二区 | 久久草精品 | 国产精品理论片在线观看 | 久久精品2 | 国产黄色片在线 | 欧美激情精品一区 | 97成人超碰 | 久久久一本精品99久久精品 | 亚洲精品99| 精品人人人人 | 国产午夜在线观看 | 天天久久综合 | 婷婷丁香在线视频 | 天天做日日爱夜夜爽 | 久久综合狠狠 | 久久久久亚洲精品 | 天天摸夜夜操 | 99 色| av软件在线观看 | 国产精品成人av在线 | 亚洲视频网站在线观看 | 91人人在线 | www.91av在线 | 免费看片网址 | 国产在线2020 | 精品久久久久一区二区国产 | 日韩欧美一区二区在线 | 久久1电影院| 97超碰人人澡人人 | 久久精品五月 | 一区电影 | 亚州免费视频 | 久草热久草视频 | 在线看国产一区 | 天天做天天爱天天综合网 | 成年人免费观看国产 | 日韩欧美在线综合网 | av在线短片| 免费一级特黄毛大片 | 99精品视频精品精品视频 | 69精品 | 国产91在线 | 美洲 | www最近高清中文国语在线观看 | 久久草精品 | 日b视频在线观看网址 | 国产成人精品福利 | 亚洲精品综合欧美二区变态 | 久久精品超碰 | 久久久九九 | 日韩av免费大片 | 一区二区久久久久 | 麻豆精品视频在线观看免费 | 亚洲男模gay裸体gay | 在线视频精品播放 | 99视频在线观看一区三区 | 久久久免费精品视频 | 日韩精品视频免费在线观看 | 色婷婷免费视频 | 国产视频精品免费播放 | 一区精品在线 | 国产精品嫩草影院9 | 亚洲国产一区二区精品专区 | 99精品国产一区二区三区不卡 | 天天爱天天操 | 日日夜夜免费精品 | 99tvdz@gmail.com| 日日夜夜精品免费视频 | av成人动漫 | 国产一区二区三区午夜 | 婷婷丁香视频 | 精品 激情| 中国一级片免费看 | av电影免费在线看 | 精品欧美小视频在线观看 | av大片免费在线观看 | 在线观看亚洲专区 | 96超碰在线 | 国产在线国偷精品产拍免费yy | 一区二区三区精品在线视频 | 国产福利精品视频 | 五月天久久狠狠 | 欧美极品一区二区三区 | 国产日韩视频在线观看 | 96看片| 欧美在线观看视频免费 | 激情影音先锋 | 久草在线一免费新视频 | 成人影视免费 | 麻豆高清免费国产一区 | 国产精品久久久亚洲 | 婷婷视频在线 | 91亚洲欧美激情 | 午夜精品久久久久99热app | 精品视频999 | 免费a视频在线 | 国产精品视频久久久 | 五月的婷婷| 国产一区福利在线 | 在线免费观看亚洲视频 | 福利一区视频 | 99在线视频网站 | 国产成人精品电影久久久 | 青青啪 | 国产精品99久久久久久武松影视 | 91女人18片女毛片60分钟 | 久久国产精品一区二区三区 | 在线国产片 | 永久av免费在线观看 | 香蕉影院在线观看 | 999国内精品永久免费视频 | 狠狠色丁香婷婷综合视频 | 精品视频久久久 | 午夜精品剧场 | 五月婷婷中文网 | 精品99在线| 免费精品在线观看 | 亚洲国产精品女人久久久 | 日日爽视频 | 狠狠干在线播放 | 国产精品video爽爽爽爽 | 亚洲永久字幕 | 天天操天天谢 | 一区二区三区高清不卡 | 久在线观看视频 | 一级片观看 | 中文字幕av免费观看 | 最近中文字幕视频完整版 | 日韩综合视频在线观看 | 丁香九月激情综合 | 午夜久久精品 | 福利网址在线观看 | 麻豆成人精品 | 亚洲 欧美 变态 国产 另类 | 一级理论片在线观看 | 手机看片 | 一级性视频| 色偷偷人人澡久久超碰69 | 午夜成人免费影院 | 国产成人一二片 | 亚洲精品一区中文字幕乱码 | 欧美另类美少妇69xxxx | 日韩在线电影一区二区 | 国产精品一区二区在线观看 | 超碰在线观看99 | 精品欧美在线视频 | 黄色软件视频网站 | 黄色大片入口 | 色夜视频| 高清不卡一区二区在线 | 久久撸在线视频 | 欧美激情精品一区 | 久久久伦理| 日韩超碰在线 | 操久久网| av免费在线免费观看 | www.五月婷| 成人av高清在线 | 成人91av | 国产一区欧美二区 | 天天草天天爽 | 亚洲国产精品va在线看 | 91最新视频在线观看 | 99久久婷婷国产综合亚洲 | 亚洲精品在 | 久久视频免费在线 | 日韩va在线观看 | 国产91精品看黄网站在线观看动漫 | 黄色小说在线免费观看 | 一区二区三区免费在线 | 成人在线黄色电影 | 香蕉日日 | 精品久久久久久国产偷窥 | 最新av网站在线观看 | 欧美一级片免费观看 | 亚洲精品美女 | 西西444www大胆无视频 | 国产精品资源在线 | 亚洲国产成人精品久久 | 久久亚洲福利视频 | 天天操天天操天天操天天操天天操天天操 | 一区二区国产精品 | 狠狠色伊人亚洲综合网站野外 | 久久综合狠狠综合久久综合88 | 亚洲精品国偷拍自产在线观看蜜桃 | 99精品免费久久久久久久久 | 成人一区在线观看 | 亚洲精品在线观看不卡 | 麻豆视传媒官网免费观看 | 国产真实精品久久二三区 | 中文字幕一区二区三区视频 | 国产精品国产三级国产aⅴ无密码 | 91成人精品一区在线播放69 | 日韩在线二区 | 国产在线小视频 | 最新日韩视频在线观看 | 天天色图 | 午夜男人影院 | 日韩精品免费专区 | 91av手机在线观看 | 日韩亚洲在线 | 国产视频手机在线 | 免费在线一区二区三区 | 亚洲精品美女免费 | 伊人久久精品久久亚洲一区 | 国产在线观看黄 | 日韩激情综合 | 97在线观看免费高清 | 国产精品免费观看久久 | www.久久99 | 亚洲午夜久久久影院 | 国产精品欧美久久久久三级 | 91av欧美 | 在线观看va | 超碰在线人人艹 | 香蕉色综合 | 成人一区影院 | 97国产一区 | 中文字幕亚洲字幕 | 欧美一级视频免费 | 亚洲乱码一区 | 狠狠色狠狠色综合日日小说 | 不卡视频一区二区三区 | 日日躁夜夜躁xxxxaaaa | 久久无码精品一区二区三区 | 91成人免费看片 | 日韩手机在线观看 | 国产91亚洲| 国产精品精品久久久久久 | 国产一区二区三区高清播放 | 国产精品视频免费 | 亚洲精品ww | 97人人澡人人添人人爽超碰 | 国产高清不卡av | 国产麻豆电影在线观看 | 久久黄色免费视频 |