<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 24.寶石 寶石是紅寶石的包裝管理材料。 例如,你可能想用紅寶石做某事,例如說比較兩個哈希,而不是自己編寫代碼,而是可以搜索位于 [http://rubygems.org](http://rubygems.org) 的 ruby gems 存儲庫。 ### 24.1。 搜索寶石 因此,讓我們比較兩個哈希。 有一個稱為 hash_compare 的 gem,用于比較散列。 現在,你可以轉到 [http://rubygems.org](http://rubygems.org) 并搜索“哈希比較”,而無需使用雙引號 ![gems 1e8f9](https://img.kancloud.cn/76/2e/762e05c882169dba09c28cc7f4d6938a_1351x671.jpg) 你將獲得一個如下所示的頁面,單擊“哈希比較”鏈接,你將被定向到此頁面。 [https://rubygems.org/gems/hash_compare](https://rubygems.org/gems/hash_compare) ![gems 7c3d0](https://img.kancloud.cn/11/4c/114cd697f19ce8768eaac2c712a95925_1351x671.jpg) 這就是你搜索寶石的方式。 相反,如果你搜索確切的寶石名稱 hash_compare,則 [http://rubygems.org](http://rubygems.org) 現在變得很聰明,可以直接進入寶石頁面。 ### 24.2。 安裝寶石 現在,你已經找到了 gem,如何安裝它? 如果你位于 gems 頁面,則在這種情況下, [https://rubygems.org/gems/hash_compare](https://rubygems.org/gems/hash_compare) ,你將獲得將其安裝到計算機上的說明。 你可以通過鍵入以下命令來安裝 hash_compare gem ```rb $ gem install hash_compare ``` 這將吐出以下內容,表明它已安裝 ```rb Fetching: hash_compare-0.0.0.gem (100%) Successfully installed hash_compare-0.0.0 1 gem installed Installing ri documentation for hash_compare-0.0.0... Installing RDoc documentation for hash_compare-0.0.0... ``` 也就是說,在終端中鍵入`gem install gem_name`應該可以毫無問題地安裝大多數寶石。 ### 24.3。 查看文件 因此,你已經成功安裝了 gem,現在你必須知道如何使用它,在其他地方,除了學習其文檔之外,還是學習紅寶石代碼的好地方。 如果不確定 rdoc 或 ruby 文檔,請閱讀 [Rdoc](#_rdoc) 一章。 要查看已安裝的 gem 的文檔,你需要啟動一個叫做 gem server 的東西,可以通過在終端中鍵入以下命令來實現 ```rb $ gem server Server started at http://0.0.0.0:8808 ``` 上面的命令將顯示一個輸出,表明服務器已啟動。 要了解有關哈希的信息,請在瀏覽器中將 gem 轉到此地址 [http://0.0.0.0:8808](http://0.0.0.0:8808) 并搜索 hash_compare,否則,如果需要更短的方法,請單擊此鏈接 [http:/ /0.0.0.0:8808/#hash_compare](http://0.0.0.0:8808/#hash_compare) ,當你單擊 hash_compare 時,你將被引導到此處 [http://0.0.0.0:8808/doc_root/hash_compare-0.0.0/rdoc/index.html [](http://0.0.0.0:8808/doc_root/hash_compare-0.0.0/rdoc/index.html) ,這是 hash_compare gem 的文檔頁面。 在該頁面上,你將具有關于 hash_compare gem 的足夠(可能)詳細信息。 ### 24.4。 使用寶石 OK,要使用寶石 &lt;sup class="footnote"&gt;[ [58](#_footnotedef_58 "View footnote.") ]&lt;/sup&gt; ,我們在終端中使用以下命令登錄到 irb ```rb $ irb --simple-prompt ``` 接下來,我們將需要使用以下命令的哈希比較命令 ```rb >> require 'hash_compare' => true ``` 由于安裝了寶石,因此顯示`true`。 現在讓我們構建兩個哈希 a,如下所示 ```rb >> a = { a: 1, b: 2} => {:a=>1, :b=>2} >> b = { a: 1, b: 3, c: 2} => {:a=>1, :b=>3, :c=>2} ``` 現在我們將它們添加到 hash_compare 對象 ```rb >> h = HashCompare.new a, b ``` 并使用新添加的功能查找新添加的內容,如下所示 ```rb >> h.newly_added => {:c=>2} ``` 好吧,就是這樣。 你已經了解了如何使用寶石。 ### 24.5。 寶石文件 你一定聽說過 Ruby gems,即將創建它并將其發布在 [http://rubygems.org](http://rubygems.org) 上。 現在讓我們看看 Gemfile 的用途。 檢出這些文件: 第一個叫做 requester.rb ```rb # requester.rb require 'rubygems' require 'bundler/setup' Bundler.require(:default) resource = RestClient::Resource.new 'http://nothing.com' p resource.get ``` 第二個是 Gemfile,具有以下內容 ```rb source 'https://rubygems.org' gem 'rest-client' ``` 將它們放在同一文件夾中。 如果查看 requester.rb,它將使用以下幾行將請求發送到 [http://nothing.com](http://nothing.com) :resource = RestClient :: Resource.new'http://nothing.com' ```rb p resource.get ``` 并打印出來。 為此,我們需要使用以下命令安裝一個名為 rest-client 的 gem ```rb $ gem install rest-client ``` 我們需要使用以下行將其要求為 requester.rb ```rb require 'rest-client' ``` 換句話說,代碼必須如下所示 ```rb require 'rest-client' resource = RestClient::Resource.new 'http://nothing.com' p resource.get ``` 那么為什么我們有這三行 ```rb require 'rubygems' require 'bundler/setup' Bundler.require(:default) ``` 而不是一個? 好吧,讓我解釋一下。 首先,這是一個簡單的項目,只需要一顆寶石,實際上,在現實生活中我們可能需要數十個寶石。 在運行項目之前,如果系統中沒有這些 gems,則需要手動檢查每個 gem 是否存在并安裝。 對于少量寶石來說,這可能很簡單,但事實是,如果我們有很多寶石,我們會討厭它。 歡迎使用 Ruby,這是 Gemfile 的救星。 讓我們分析一下。 打開 Gemfile,第一行是 ```rb source 'https://rubygems.org' ``` 這告訴捆綁程序(獲取和安裝寶石的東西)必須從何處獲取寶石。 幾乎所有紅寶石寶石都以 [http://rubygems.org](http://rubygems.org) 結尾。 但是有些壞人喜歡擁有專有代碼并且不公開發布。 那些吸盤讓它們自己保存,對他們來說將有所不同。 接下來,我們逐一列出該格式所需的寶石 gem“ &lt; gem-name &gt;”。 在這種情況下,我們只有一個寶石,因此我們將其列為 ```rb gem 'rest-client' ``` 接下來,在需要這些寶石的 ruby 程序中,我們將這段代碼放在頂部 ```rb require 'rubygems' require 'bundler/setup' Bundler.require(:default) ``` 我不知道它到底能做什么,但是這會加載 Gemfile 中指定的所有 gem,從而使我們運行程序所需的所有 gem 都可以使用。 如果將來我能學到更多,可能會更新此部分,或者可能不會更新。 將所有 gem 提取并安裝到系統中所需要做的就是在終端中鍵入以下內容: ```rb $ bundle install ``` 或總之 ```rb $ bundle ``` 而已。 最新版本的所有 gems 都將安裝在你的系統中,并且可用于需要它的程序 &lt;sup class="footnote"&gt;[ [59](#_footnotedef_59 "View footnote.") ]&lt;/sup&gt; 。 享受生活! #### 24.5.1。 Gemfile.lock 如果查看 [Gemfile](code/fetch_data/Gemfile) ,則只給出`gem 'rest-client'`,但請看下面所示的 [Gemfile.lock](code/fetch_data/Gemfile.lock) 。 它包含很多東西。 這是什么 Gemfile.lock。 好吧,它的簡單`rest-client`并不是獨立的 Ruby 包(又名寶石),它依賴于其他寶石。 Gemfile.lock 列出了我們使用`bundle`命令時安裝的所有 gem。 讓我們分析如下所示的 Gemfile.lock ```rb ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ```rb | ``` GEM remote: https://rubygems.org/ specs: domain_name (0.5.20180417) unf (&gt;= 0.0.5, &lt; 1.0.0) http-cookie (1.0.3) domain_name (~&gt; 0.5) mime-types (3.2.2) mime-types-data (~&gt; 3.2015) mime-types-data (3.2018.0812) netrc (0.11.0) rest-client (2.0.2) http-cookie (&gt;= 1.0.2, &lt; 2.0) mime-types (&gt;= 1.16, &lt; 4.0) netrc (~&gt; 0.8) unf (0.1.4) unf_ext unf_ext (0.0.7.5) PLATFORMS ruby DEPENDENCIES rest-client BUNDLED WITH 1.16.2 ```rb | ``` 因此,它以關鍵字`GEM`開頭,在該關鍵字下列出了所有已安裝的 gem。 檢出第 2 行,它說`remote: [https://rubygems.org/](https://rubygems.org/)`,如果你還記得在 Gemfile 中輸入了`source 'https://rubygems.org'`,則會將其記錄為鎖定文件中的遠程存儲庫。 檢出這些行(20 & 21) ```rb PLATFORMS ruby ``` 在此定義平臺。 本書重點介紹的是 YARV &lt;sup class="footnote"&gt;[ [60](#_footnotedef_60 "View footnote.") ]&lt;/sup&gt; ,它是默認的紅寶石解釋器,但不是唯一的。 還有其他解釋器,例如運行 Java 的 JRuby。 這些信息記錄在此`PLATFORM`下。 這些行中也記錄了捆綁軟件的版本(26 & 27) ```rb BUNDLED WITH 1.16.2 ``` 你可以通過在終端中鍵入以下命令來檢查捆綁程序的版本 ```rb $ bundle -v Bundler version 1.16.2 ``` 讓我們回到`GEM`部分。 在 Gemfile 中,我們只需要 rest-client 即可。 在第 12 行的鎖定文件中,我們看到`rest-client (2.0.2)`,即安裝了版本 2.0.2 的 rest 客戶端,但是在以下幾行中,我們也看到了這一點 ```rb rest-client (2.0.2) http-cookie (>= 1.0.2, < 2.0) mime-types (>= 1.16, < 4.0) netrc (~> 0.8) ``` 這意味著`rest-client`依賴于其他寶石,即`http-cookie`,`mime-types`和`netrc`。 讓我們以`http-cookie (&gt;= 1.0.2, &lt; 2.0)`表示,這意味著`2.0.2`版本的`rest-client`依賴于`http-cookie`,其版本必須大于或等于`1.0.2`但小于`2.0`。 如果你想知道如何對 gems 進行版本控制,并且可能想對軟件進行正確的版本控制,則可以在 [https://semver.org/](https://semver.org/) 上查看語義版本控制。 現在讓我們來看看`http-cookie`,看一下第 6 行和第 7 行,你會看到 ```rb http-cookie (1.0.3) domain_name (~> 0.5) ``` 這意味著已安裝版本`1.0.3`的`http-cookie`,并且它取決于等于或大于 0.5 的`domain_name` gem。 如果你對`&gt;`,`&gt;=`和`~&gt;`感到困惑,這就是它們的意思 * =等于“ = 1.0” * !=不等于“!= 1.0” * &gt;大于“ &gt; 1.0” * &lt;小于“ &lt; 1.0” * &gt; =大于或等于“ &gt; = 1.0” * ?小于或等于“?1.0” * ?&gt;悲觀地大于或等于“?&gt; 1.0” 因此,接下來你可以跟蹤`domain_name (~&gt; 0.5)`所依賴的內容,依此類推。 鎖定文件將構建一個依賴關系樹,并記錄已安裝的 gem 的確切版本,因此即使從現在開始捆綁了該軟件,它也可以從鎖定文件中安裝 gem 的確切版本,從而保證了它可以正常工作。 。 ### 24.6。 創造寶石 讓我們看看如何創建一個非常簡單的寶石。 讓我們創建一個名為 hello_gem 的寶石,它只祝你好,并歡迎來到 Ruby Gems 的美好世界。 并且僅此而已。 如果你已下載本書,則在名為 code / making_gem 的文件夾中,將看到一個名為 hello_gem 的文件夾。 它具有以下文件夾結構。 ```rb hello_gem/ hello_gem.gemspec lib/ hello_gem.rb ``` 要練習,請啟動終端并導航至 hello + gem /目錄。如果查看文件 [lib / hello_gem.rb](code/making_gem/hello_gem/lib/hello_gem.rb) ,則該文件具有以下代碼 ```rb puts "Hello and welcome to the wonderful world of Ruby Gems." ``` 如果你看一下代碼,它僅包含一行 a,即可打印出`Hello and welcome to the wonderful world of Ruby Gems.`,僅此而已。 現在,進入使該程序成為寶石的文件。 查看文件 [hello_gem.gemspec](code/making_gem/hello_gem/hello_gem.gemspec) ```rb Gem::Specification.new do |s| s.name = 'hello_gem' s.homepage = "https://i-love-ruby.gitlab.io" s.version = '0.0.0' s.date = '2018-12-02' s.summary = "A gem that wishes you hello" s.description = "A gem that wishes you hello. Written for I Love Ruby book." s.authors = ["Karthikeyan A K"] s.email = 'mindaslab@protonmail.com' s.files = ["lib/hello_gem.rb"] end ``` 現在讓我們檢查一下。 在其中,我們以紅寶石的方式描述了該寶石。 我們定義的一些東西是由`s.name`給出的名稱; 其首頁,即主要是`s.homepage`給出的可找到其源代碼或可找到該 gem 的幫助和用法的位置; `s.version`給定的寶石的版本號; `s.date`給出的該版本的發布日期; `s.summary`給出的寶石的簡要概述; 你可以使用`s.description`進行詳細說明; 作者的名字可以用數組表示,如圖`s.authors = ["Karthikeyan A K"]`所示; `s.email`給出的有關寶石交流的電子郵件地址; 最重要的是,該 gem 需要運行的所有程序文件都以`s.files = ["lib/hello_gem.rb"]`這樣的數組形式給出。 在這里的例子中,我們只需要一個文件及其在 lib 目錄中。 之所以給出`s.attrribute_name`,是因為我們使用`Gem::Specification.new`創建了 gem 規范對象,并將其捕獲到變量`s`中,如圖所示 ```rb Gem::Specification.new do |s| # the specs goes here end ``` 現在我們需要做的就是構建 gemspec 文件來獲取我們的 gem,我們可以使用以下命令來完成 ```rb $ gem build hello_gem.gemspec ``` 你可能會看到一些警告消息,如下所示,請忽略它們,它們并不那么嚴重。 ```rb WARNING: licenses is empty, but is recommended. Use a license identifier from http://spdx.org/licenses or 'Nonstandard' for a nonstandard license. WARNING: See http://guides.rubygems.org/specification-reference/ for help Successfully built RubyGem Name: hello_gem Version: 0.0.0 File: hello_gem-0.0.0.gem ``` 如果你注意到,在同一文件夾中,你會看到一個名為 _hello_gem-0.0.0.gem_ 的文件,該文件名的 _hello_gem_ 部分來自 gemfile 中指定的`s.name` ,而 _0.0.0_ 來自 gemfile 中指定的`s.version`。 現在,使用下面的命令安裝 gem ```rb $ gem install hello_gem-0.0.0.gem ``` 安裝時,你將得到如下所示的輸出 ```rb Successfully installed hello_gem-0.0.0 Parsing documentation for hello_gem-0.0.0 Installing ri documentation for hello_gem-0.0.0 Done installing documentation for hello_gem after 0 seconds 1 gem installed ``` 讓我們啟動 irb 來測試寶石 ```rb $ irb --simple-prompt ``` 現在在 irb 中,我們需要寶石,如下所示 ```rb >> require "hello_gem" Hello and welcome to the wonderful world of Ruby Gems. => true ``` 現在你可以看到輸出 _,你好,歡迎來到 Ruby Gems 的美好世界。_ 。 恭喜,我們已經建立了自己的寶石。 現在,我們可以將其分發到整個世界。 ### 24.7。 發布你的寶石 因此,我們創建了我們的寶石。 現在讓我們看看如何發布。 第一步,你必須轉到 [https://rubygems.org/sign_up](https://rubygems.org/sign_up) 并創建一個帳戶。 記住你的用戶名和密碼。 為了使你的寶石獨一無二,我們將寶石命名為 _&lt;用戶名&gt; _hello_ 。 我的用戶名是 mindaslab,因此我的寶石名稱是 mindaslab_hello。 該寶石與先前的 _hello_gem_ 寶石非常相似。 它具有以下文件夾結構。 導航到 _mindaslab_hello /_ 文件夾 ```rb mindaslab_hello/ mindaslab_hello.gemspec lib/ mindaslab_hello.rb ``` 你可能想要遍歷 [mindaslab_hello.gemspec](code/making_gem/mindaslab_hello/mindaslab_hello.gemspec) 和 [mindaslab_hello.rb](code/making_gem/mindaslab_hello/mindaslab_hello.gemspec) 。 最好修改 gemspec 文件,以便顯示你的姓名和電子郵件,而不是顯示我的名字和電子郵件。 現在在以下命令中構建 gem 類型 ```rb $ gem build mindaslab_hello.gemspec ``` 你應該看到在同一文件夾中生成的名為 _mindaslab_hello-0.0.0.gem_ 的文件。 `build`命令將在終端中顯示以下輸出。 ```rb WARNING: licenses is empty, but is recommended. Use a license identifier from http://spdx.org/licenses or 'Nonstandard' for a nonstandard license. WARNING: no homepage specified WARNING: See http://guides.rubygems.org/specification-reference/ for help Successfully built RubyGem Name: mindaslab_hello Version: 0.0.0 File: mindaslab_hello-0.0.0.gem ``` 現在讓我們將寶石推到紅寶石寶石網站。 你所要做的就是在顯示的終端中輸入命令`gem push &lt;generated gem name&gt;`。 ```rb $ gem push mindaslab_hello-0.0.0.gem ``` 將提示你輸入 Rubygems 用戶名和密碼,提供它們,然后你將看到如下所示的輸出。 ```rb Pushing gem to https://rubygems.org... Successfully registered gem: mindaslab_hello (0.0.0) ``` 你可以轉到 [https://rubygems.org](https://rubygems.org) 并輸入你的寶石名稱以進行搜索 ![gems 817e2](https://img.kancloud.cn/b8/79/b87934332d4ac75b8182912e77c8899f_1287x630.jpg) 你將被帶到你的 gem 頁面,如下所示 ![gems 07593](https://img.kancloud.cn/66/f9/66f9dfcbdf39f46a1075213b4c24542c_1287x2098.jpg) 現在,由于該寶石可在 Internet 上全局訪問,因此你可以使用`gem install &lt;gemfile name&gt;`安裝寶石,如下所示 ```rb $ gem install mindaslab_hello ``` 它應該拋出如下所示的輸出 ```rb Successfully installed mindaslab_hello-0.0.0 Parsing documentation for mindaslab_hello-0.0.0 Installing ri documentation for mindaslab_hello-0.0.0 Done installing documentation for mindaslab_hello after 0 seconds 1 gem installed ``` 要測試你的寶石,請啟動你的 irb。 ```rb $ irb --simple-prompt ``` 然后需要你的寶石 ```rb >> require "mindaslab_hello" ``` 如果你看到如下所示的輸出,請給我發送電子郵件:)我們做到了。 擊掌!! ```rb Hello from Karthikeyan A K. I am from Chennai, India. => true >> ``` ### 24.8。 更復雜的寶石 實際上,你將需要超過 1 個紅寶石文件才能打包到你的寶石中。 打包的一種方法是列出 gemspec 文件中的所有文件,還是有更好的方法? 為了找出答案,請寫一個叫做 shapes 的寶石。 我們將在名為 [circle.rb](code/making_gem/shapes/lib/models/circle.rb) , [rectangle.rb](code/making_gem/shapes/lib/models/rectangle.rb) 和 [square.rb](code/making_gem/shapes/lib/models/square.rb) 的文件中編寫名為`Circle`,`Rectangle`和`Square`的三個類。 ,我們將這些文件放在一個名為`models/`的文件夾中,并將它們放在一個名為 [shapes.rb](code/making_gem/shapes/lib/shapes.rb) 的文件中,你可以看到如下所示的文件夾結構。 ```rb shapes/ shapes.gemspec lib/ shapes.rb models/ circle.rb rectangle.rb square.rb ``` 現在`lib/`文件夾中的所有 ruby 文件和`lib/models/`文件夾中的文件都必須包含在 gemspec 文件中。 查看下面的 gemspec 文件 ```rb Gem::Specification.new do |s| s.name = 'shapes' s.version = '0.0.0' s.date = '2018-12-02' s.summary = "A gem to calculate area and perimeter of shapes." s.authors = ["Karthikeyan A K"] s.email = 'mindaslab@protonmail.com' s.files = Dir["*/*.rb", "*/*/*.rb"] end ``` 看一下`s.files = Dir["**/**.rb", "**/**/*.rb"]`行,在這里我們不會寫出非常冗長的文件列表。 相反,我們使用 Ruby 中的`Dir &lt;sup class="footnote"&gt;[ [61](#_footnotedef_61 "View footnote.") ]&lt;/sup&gt; 庫來完成此任務。 要查看`Dir`的工作方式,請在`shapes/`目錄中啟動 irb 并輸入以下內容 ```rb >> Dir["*/*.rb", "*/*/*.rb"] ``` 你會看到它整齊地給出了主要和次要子文件夾中的 ruby 文件列表。 ```rb => ["lib/shapes.rb", "lib/models/square.rb", "lib/models/rectangle.rb", "lib/models/circle.rb"] ``` 因此,我們可以使用這些技巧在 gem 中包含很多文件。 現在,使用以下命令構建`gemspec`文件 ```rb $ gem build shapes.gemspec ``` 如下所示,我們得到了一個不錯的構建 ```rb WARNING: licenses is empty, but is recommended. Use a license identifier from http://spdx.org/licenses or 'Nonstandard' for a nonstandard license. WARNING: no homepage specified WARNING: See http://guides.rubygems.org/specification-reference/ for help Successfully built RubyGem Name: shapes Version: 0.0.0 File: shapes-0.0.0.gem ``` 讓我們安裝如下所示的 gemfile ash ```rb $ gem install shapes-0.0.0.gem ``` 如你所見,它已成功安裝 ```rb Successfully installed shapes-0.0.0 Parsing documentation for shapes-0.0.0 Installing ri documentation for shapes-0.0.0 Done installing documentation for shapes after 0 seconds 1 gem installed ``` 通過編寫一個名為 [testing_shapes.rb](code/making_gem/testing_shapes.rb) 的程序來測試 gem。 ```rb require "shapes" square = Square.new square.side = 7 puts "Area of square = #{square.area}" circle = Circle.new circle.radius = 7 puts "Area of circle = #{circle.area}" ``` 現在運行它 ```rb $ ruby testing_shapes.rb ``` 我們得到如下所示的輸出。 ```rb Area of square = 49 Area of circle = 153.93804002589985 ``` 因此,我們已經看到了如何使用其中的更多文件來構建更復雜的 gem。 ### 24.9。 需要其他寶石 ### 24.10。 卸載寶石 最后,只需輸入`gem uninstall &lt;gemname&gt;`即可卸載 gem,因此輸入 ```rb $ gem uninstall shapes ``` 你將得到如下所示的輸出 ```rb Successfully uninstalled shapes-0.0.0 ``` 這表明 gem 已成功卸載。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看